From 9cb88ae7a01883087280ff2096fa4c812b44b177 Mon Sep 17 00:00:00 2001 From: lukacan Date: Sun, 14 Jul 2024 12:36:27 +0200 Subject: [PATCH 1/5] =?UTF-8?q?=E2=9C=A8=20Initial=20implementation=20of?= =?UTF-8?q?=20CPI=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/client/src/commander.rs | 11 + crates/client/src/lib.rs | 1 + .../src/templates/trident-tests/test_fuzz.rs | 14 +- crates/client/src/test_generator.rs | 59 +- .../fuzz/src/program_test_client_blocking.rs | 65 +- examples/fuzz-tests/simple-cpi-7/.gitignore | 8 + .../fuzz-tests/simple-cpi-7/.prettierignore | 7 + examples/fuzz-tests/simple-cpi-7/Anchor.toml | 21 + examples/fuzz-tests/simple-cpi-7/Cargo.lock | 6802 +++++++++++++++++ examples/fuzz-tests/simple-cpi-7/Cargo.toml | 12 + examples/fuzz-tests/simple-cpi-7/Trident.toml | 41 + .../simple-cpi-7/migrations/deploy.ts | 12 + examples/fuzz-tests/simple-cpi-7/package.json | 20 + .../simple-cpi-7/programs/callee/Cargo.toml | 20 + .../simple-cpi-7/programs/callee/Xargo.toml | 2 + .../simple-cpi-7/programs/callee/src/lib.rs | 22 + .../simple-cpi-7/programs/caller/Cargo.toml | 22 + .../simple-cpi-7/programs/caller/Xargo.toml | 2 + .../simple-cpi-7/programs/caller/src/lib.rs | 29 + .../simple-cpi-7/tests/simple-cpi-7.ts | 16 + .../simple-cpi-7/trident-genesis/caller.so | Bin 0 -> 194920 bytes .../trident-tests/fuzz_tests/Cargo.toml | 23 + .../fuzz_tests/fuzz_0/fuzz_instructions.rs | 112 + .../fuzz_tests/fuzz_0/test_fuzz.rs | 45 + .../fuzz-tests/simple-cpi-7/tsconfig.json | 10 + examples/fuzz-tests/simple-cpi-7/yarn.lock | 1181 +++ 26 files changed, 8528 insertions(+), 29 deletions(-) create mode 100644 examples/fuzz-tests/simple-cpi-7/.gitignore create mode 100644 examples/fuzz-tests/simple-cpi-7/.prettierignore create mode 100644 examples/fuzz-tests/simple-cpi-7/Anchor.toml create mode 100644 examples/fuzz-tests/simple-cpi-7/Cargo.lock create mode 100644 examples/fuzz-tests/simple-cpi-7/Cargo.toml create mode 100644 examples/fuzz-tests/simple-cpi-7/Trident.toml create mode 100644 examples/fuzz-tests/simple-cpi-7/migrations/deploy.ts create mode 100644 examples/fuzz-tests/simple-cpi-7/package.json create mode 100644 examples/fuzz-tests/simple-cpi-7/programs/callee/Cargo.toml create mode 100644 examples/fuzz-tests/simple-cpi-7/programs/callee/Xargo.toml create mode 100644 examples/fuzz-tests/simple-cpi-7/programs/callee/src/lib.rs create mode 100644 examples/fuzz-tests/simple-cpi-7/programs/caller/Cargo.toml create mode 100644 examples/fuzz-tests/simple-cpi-7/programs/caller/Xargo.toml create mode 100644 examples/fuzz-tests/simple-cpi-7/programs/caller/src/lib.rs create mode 100644 examples/fuzz-tests/simple-cpi-7/tests/simple-cpi-7.ts create mode 100755 examples/fuzz-tests/simple-cpi-7/trident-genesis/caller.so create mode 100644 examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/Cargo.toml create mode 100644 examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs create mode 100644 examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs create mode 100644 examples/fuzz-tests/simple-cpi-7/tsconfig.json create mode 100644 examples/fuzz-tests/simple-cpi-7/yarn.lock diff --git a/crates/client/src/commander.rs b/crates/client/src/commander.rs index 27208c78..6fdbd5c7 100644 --- a/crates/client/src/commander.rs +++ b/crates/client/src/commander.rs @@ -153,6 +153,8 @@ impl Commander { // arguments so we need to parse the variable content. let hfuzz_run_args = std::env::var("HFUZZ_RUN_ARGS").unwrap_or_default(); + let genesis_folder = PathBuf::from(self.root.to_string()).join("trident-genesis"); + let rustflags = std::env::var("RUSTFLAGS").unwrap_or_default(); let rustflags = config.get_rustflags_args(rustflags); @@ -190,6 +192,7 @@ impl Commander { // enforce keep output to be true fuzz_args.push_str("--keep_output"); let mut child = Command::new("cargo") + .env("GENESIS_FOLDER", genesis_folder) .env("HFUZZ_RUN_ARGS", fuzz_args) .env("CARGO_TARGET_DIR", cargo_target_dir) .env("HFUZZ_WORKSPACE", hfuzz_workspace) @@ -203,6 +206,7 @@ impl Commander { } false => { let mut child = Command::new("cargo") + .env("GENESIS_FOLDER", genesis_folder) .env("HFUZZ_RUN_ARGS", fuzz_args) .env("CARGO_TARGET_DIR", cargo_target_dir) .env("HFUZZ_WORKSPACE", hfuzz_workspace) @@ -233,6 +237,8 @@ impl Commander { let hfuzz_run_args = std::env::var("HFUZZ_RUN_ARGS").unwrap_or_default(); + let genesis_folder = PathBuf::from(self.root.to_string()).join("trident-genesis"); + let cargo_target_dir = std::env::var("CARGO_TARGET_DIR") .unwrap_or_else(|_| config.get_env_arg("CARGO_TARGET_DIR")); let hfuzz_workspace = std::env::var("HFUZZ_WORKSPACE") @@ -249,6 +255,7 @@ impl Commander { // enforce keep output to be true fuzz_args.push_str("--keep_output"); let mut child = Command::new("cargo") + .env("GENESIS_FOLDER", genesis_folder) .env("HFUZZ_RUN_ARGS", fuzz_args) .env("CARGO_TARGET_DIR", cargo_target_dir) .env("HFUZZ_WORKSPACE", hfuzz_workspace) @@ -262,6 +269,7 @@ impl Commander { } false => { let mut child = Command::new("cargo") + .env("GENESIS_FOLDER", genesis_folder) .env("HFUZZ_RUN_ARGS", fuzz_args) .env("CARGO_TARGET_DIR", cargo_target_dir) .env("HFUZZ_WORKSPACE", hfuzz_workspace) @@ -387,6 +395,8 @@ impl Commander { let crash_file = std::path::Path::new(&self.root as &str).join(crash_file_path); + let genesis_folder = PathBuf::from(self.root.to_string()).join("trident-genesis"); + if !crash_file.try_exists()? { println!("{ERROR} The crash file [{:?}] not found", crash_file); throw!(Error::CrashFileNotFound); @@ -401,6 +411,7 @@ impl Commander { // using exec rather than spawn and replacing current process to avoid unflushed terminal output after ctrl+c signal std::process::Command::new("cargo") + .env("GENESIS_FOLDER", genesis_folder) .env("CARGO_TARGET_DIR", cargo_target_dir) .env("RUSTFLAGS", rustflags) .arg("hfuzz") diff --git a/crates/client/src/lib.rs b/crates/client/src/lib.rs index 247c328e..335c3491 100644 --- a/crates/client/src/lib.rs +++ b/crates/client/src/lib.rs @@ -42,6 +42,7 @@ pub mod fuzzing { pub use trident_fuzz::*; pub use solana_program_test::processor; + pub use trident_fuzz::program_test_client_blocking::FuzzingProgram; pub use trident_fuzz::program_test_client_blocking::ProgramEntry; pub use super::temp_clone::*; diff --git a/crates/client/src/templates/trident-tests/test_fuzz.rs b/crates/client/src/templates/trident-tests/test_fuzz.rs index 83e3bcae..c22d93fb 100644 --- a/crates/client/src/templates/trident-tests/test_fuzz.rs +++ b/crates/client/src/templates/trident-tests/test_fuzz.rs @@ -5,8 +5,6 @@ mod fuzz_instructions; // uncomment the line below // mod accounts_snapshots; -const PROGRAM_NAME: &str = "###PROGRAM_NAME###"; - struct MyFuzzData; impl FuzzDataBuilder for MyFuzzData {} @@ -14,10 +12,18 @@ impl FuzzDataBuilder for MyFuzzData {} fn main() { loop { fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program1 = FuzzingProgram::new(todo!(),todo!(),todo!()); + let mut client = - ProgramTestClientBlocking::new(PROGRAM_NAME, PROGRAM_ID, processor!(convert_entry!(entry))) + ProgramTestClientBlocking::new(&[todo!()]) .unwrap(); - let _ = fuzz_data.run_with_runtime(PROGRAM_ID, &mut client); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(todo!(), &mut client); }); } } diff --git a/crates/client/src/test_generator.rs b/crates/client/src/test_generator.rs index adea9d14..f502c65a 100644 --- a/crates/client/src/test_generator.rs +++ b/crates/client/src/test_generator.rs @@ -496,33 +496,52 @@ impl TestGenerator { #[throws] pub async fn initialize_fuzz(&self, new_fuzz_test_dir: &Path) { - let program_name = if !&self.programs_data.is_empty() { - &self - .programs_data - .first() - .unwrap() - .program_idl - .name - .snake_case - } else { + if self.programs_data.is_empty() { throw!(Error::NoProgramsFound) - }; + } + let fuzz_test_path = new_fuzz_test_dir.join(FUZZ_TEST); let fuzz_test_content = load_template!("/src/templates/trident-tests/test_fuzz.rs"); - let use_entry = format!("use {}::entry;\n", program_name); - let use_instructions = format!("use {}::ID as PROGRAM_ID;\n", program_name); - let use_fuzz_instructions = format!( - "use fuzz_instructions::{}_fuzz_instructions::FuzzInstruction;\n", - program_name + let mut entry_points: String = String::new(); + let mut program_ids: String = String::new(); + let mut program_names: String = String::new(); + let mut fuzz_instructions: String = String::new(); + + for x in self.programs_data.iter() { + let program_name = &x.program_idl.name.snake_case; + + let use_entry = format!("use {}::entry as entry_{};\n", program_name, program_name); + entry_points.push_str(&use_entry); + + let program_name_var = format!( + "const PROGRAM_NAME_{}: &str = \"{}\";\n", + program_name.to_uppercase(), + program_name, + ); + program_names.push_str(&program_name_var); + + let program_id = format!( + "use {}::ID as PROGRAM_ID_{};\n", + program_name, + program_name.to_uppercase() + ); + program_ids.push_str(&program_id); + + let use_fuzz_instructions = format!( + "use fuzz_instructions::{}_fuzz_instructions::FuzzInstruction as FuzzInstruction_{};\n", + program_name,program_name + ); + fuzz_instructions.push_str(&use_fuzz_instructions); + } + + let template = format!( + "{}{}{}{}{}", + entry_points, program_ids, program_names, fuzz_instructions, fuzz_test_content ); - let template = - format!("{use_entry}{use_instructions}{use_fuzz_instructions}{fuzz_test_content}"); - let fuzz_test_content = template.replace("###PROGRAM_NAME###", program_name); - self.create_file(&fuzz_test_path, &fuzz_test_content) - .await?; + self.create_file(&fuzz_test_path, &template).await?; } #[throws] diff --git a/crates/fuzz/src/program_test_client_blocking.rs b/crates/fuzz/src/program_test_client_blocking.rs index 5cc4d455..146537f8 100644 --- a/crates/fuzz/src/program_test_client_blocking.rs +++ b/crates/fuzz/src/program_test_client_blocking.rs @@ -1,3 +1,7 @@ +use std::fs::File; +use std::io::Read; +use std::path::PathBuf; + use solana_program_runtime::invoke_context::BuiltinFunctionWithContext; use solana_program_test::ProgramTest; use solana_program_test::ProgramTestContext; @@ -27,13 +31,49 @@ pub struct ProgramTestClientBlocking { rt: tokio::runtime::Runtime, } -impl ProgramTestClientBlocking { +pub struct FuzzingProgram { + pub program_name: String, + pub program_id: Pubkey, + pub entry: Option, +} +impl FuzzingProgram { pub fn new( program_name: &str, - program_id: Pubkey, - entry: Option, - ) -> Result { - let program_test = ProgramTest::new(program_name, program_id, entry); + program_id: &Pubkey, + entry_fn: Option, + ) -> FuzzingProgram { + Self { + program_name: program_name.to_string(), + program_id: *program_id, + entry: entry_fn, + } + } +} + +impl ProgramTestClientBlocking { + pub fn new(program_: &[FuzzingProgram]) -> Result { + let mut program_test = ProgramTest::default(); + for x in program_ { + match x.entry { + Some(entry) => { + program_test.add_builtin_program(&x.program_name, x.program_id, entry); + } + None => { + let data = read_program(&x.program_name); + + program_test.add_account( + x.program_id, + Account { + lamports: Rent::default().minimum_balance(data.len()).max(1), + data, + owner: solana_sdk::bpf_loader::id(), + executable: true, + rent_epoch: 0, + }, + ); + } + } + } let rt: tokio::runtime::Runtime = Builder::new_current_thread().enable_all().build()?; let ctx = rt.block_on(program_test.start_with_context()); @@ -201,3 +241,18 @@ impl FuzzClient for ProgramTestClientBlocking { Ok(self.rt.block_on(self.ctx.banks_client.get_rent())?) } } + +fn read_program(program_name: &str) -> Vec { + let genesis_folder = std::env::var("GENESIS_FOLDER") + .unwrap_or_else(|err| panic!("Failed to read env variable GENESIS_FOLDER: {}", err)); + + let program_path = PathBuf::from(genesis_folder).join(format!("{program_name}.so")); + + let mut file = File::open(&program_path) + .unwrap_or_else(|err| panic!("Failed to open \"{}\": {}", program_path.display(), err)); + + let mut file_data = Vec::new(); + file.read_to_end(&mut file_data) + .unwrap_or_else(|err| panic!("Failed to read \"{}\": {}", program_path.display(), err)); + file_data +} diff --git a/examples/fuzz-tests/simple-cpi-7/.gitignore b/examples/fuzz-tests/simple-cpi-7/.gitignore new file mode 100644 index 00000000..28be1fa0 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/.gitignore @@ -0,0 +1,8 @@ +.anchor +.DS_Store +target +**/*.rs.bk +node_modules +test-ledger +.yarn +trident-tests/fuzz_tests/fuzzing/hfuzz_target diff --git a/examples/fuzz-tests/simple-cpi-7/.prettierignore b/examples/fuzz-tests/simple-cpi-7/.prettierignore new file mode 100644 index 00000000..41425834 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/.prettierignore @@ -0,0 +1,7 @@ +.anchor +.DS_Store +target +node_modules +dist +build +test-ledger diff --git a/examples/fuzz-tests/simple-cpi-7/Anchor.toml b/examples/fuzz-tests/simple-cpi-7/Anchor.toml new file mode 100644 index 00000000..4256f231 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/Anchor.toml @@ -0,0 +1,21 @@ +[toolchain] +anchor_version = "0.30.1" +solana_version = "1.18.18" + +[features] +resolution = true +skip-lint = false + +[programs.localnet] +callee = "HJR1TK8bgrUWzysdpS1pBGBYKF7zi1tU9cS4qj8BW8ZL" +caller = "FWtSodrkUnovFPnNRCxneP6VWh6JH6jtQZ4PHoP8Ejuz" + +[registry] +url = "https://api.apr.dev" + +[provider] +cluster = "Localnet" +wallet = "~/.config/solana/id.json" + +[scripts] +test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" diff --git a/examples/fuzz-tests/simple-cpi-7/Cargo.lock b/examples/fuzz-tests/simple-cpi-7/Cargo.lock new file mode 100644 index 00000000..c60fc311 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/Cargo.lock @@ -0,0 +1,6802 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aead" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +dependencies = [ + "generic-array", +] + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", + "opaque-debug", +] + +[[package]] +name = "aes-gcm-siv" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom 0.2.15", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "anchor-attribute-access-control" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47fe28365b33e8334dd70ae2f34a43892363012fe239cf37d2ee91693575b1f8" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c288d496168268d198d9b53ee9f4f9d260a55ba4df9877ea1d4486ad6109e0f" +dependencies = [ + "anchor-syn", + "bs58 0.5.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b77b6948d0eeaaa129ce79eea5bbbb9937375a9241d909ca8fb9e006bb6e90" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d20bb569c5a557c86101b944721d865e1fd0a4c67c381d31a44a84f07f84828" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cebd8d0671a3a9dc3160c48598d652c34c77de6be4d44345b8b514323284d57" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efb2a5eb0860e661ab31aff7bb5e0288357b176380e985bade4ccb395981b42d" +dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58 0.5.1", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "anchor-client" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b4397af9b7d6919df3342210d897c0ffda1a31d052abc8eee3e6035ee71567" +dependencies = [ + "anchor-lang", + "anyhow", + "futures", + "regex", + "serde", + "solana-account-decoder", + "solana-client", + "solana-sdk", + "thiserror", + "tokio", + "url", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04368b5abef4266250ca8d1d12f4dff860242681e4ec22b885dcfe354fd35aa1" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" +dependencies = [ + "anchor-syn", + "borsh-derive-internal 0.10.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef415ff156dc82e9ecb943189b0cb241b3a6bfc26a180234dc21bd3ef3ce0cb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6620c9486d9d36a4389cab5e37dc34a42ed0bfaa62e6a75a2999ce98f8f2e373" +dependencies = [ + "anchor-attribute-access-control", + "anchor-attribute-account", + "anchor-attribute-constant", + "anchor-attribute-error", + "anchor-attribute-event", + "anchor-attribute-program", + "anchor-derive-accounts", + "anchor-derive-serde", + "anchor-derive-space", + "anchor-lang-idl", + "arrayref", + "base64 0.21.7", + "bincode", + "borsh 0.10.3", + "bytemuck", + "getrandom 0.2.15", + "solana-program", + "thiserror", +] + +[[package]] +name = "anchor-lang-idl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31cf97b4e6f7d6144a05e435660fcf757dbc3446d38d0e2b851d11ed13625bba" +dependencies = [ + "anchor-lang-idl-spec", + "anyhow", + "heck 0.3.3", + "regex", + "serde", + "serde_json", + "sha2 0.10.8", +] + +[[package]] +name = "anchor-lang-idl-spec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" +dependencies = [ + "anyhow", + "serde", +] + +[[package]] +name = "anchor-syn" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f99daacb53b55cfd37ce14d6c9905929721137fd4c67bbab44a19802aecb622f" +dependencies = [ + "anyhow", + "bs58 0.5.1", + "cargo_toml", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.8", + "syn 1.0.109", + "thiserror", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "aquamarine" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" +dependencies = [ + "include_dir", + "itertools", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest 0.10.7", + "itertools", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "asn1-rs" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[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", + "futures-core", +] + +[[package]] +name = "async-compression" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-mutex" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-trait" +version = "0.1.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "bitmaps" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" +dependencies = [ + "typenum", +] + +[[package]] +name = "blake3" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive 0.9.3", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive 0.10.3", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +dependencies = [ + "borsh-derive 1.5.1", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.71", + "syn_derive", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "brotli" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "bytemuck" +version = "1.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "callee" +version = "0.1.0" +dependencies = [ + "anchor-lang", +] + +[[package]] +name = "caller" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "callee", + "trident-client", +] + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +dependencies = [ + "serde", +] + +[[package]] +name = "caps" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" +dependencies = [ + "libc", + "thiserror", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cargo_toml" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" +dependencies = [ + "serde", + "toml 0.8.14", +] + +[[package]] +name = "cc" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9711f33475c22aab363b05564a17d7b789bf3dfec5ebabb586adee56f0e271b5" +dependencies = [ + "jobserver", + "libc", + "once_cell", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "chrono-humanize" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" +dependencies = [ + "chrono", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap 0.11.0", + "unicode-width", + "vec_map", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_lex", + "indexmap 1.9.3", + "once_cell", + "strsim 0.10.0", + "termcolor", + "textwrap 0.16.1", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode 0.3.6", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +dependencies = [ + "log", + "web-sys", +] + +[[package]] +name = "const-oid" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "csv" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core 0.13.4", + "darling_macro 0.13.4", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core 0.20.10", + "darling_macro 0.20.10", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.71", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core 0.13.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core 0.20.10", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", + "rayon", +] + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "der" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" +dependencies = [ + "const-oid", +] + +[[package]] +name = "der-parser" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint 0.4.6", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "dialoguer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "dir-diff" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" +dependencies = [ + "walkdir", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[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", + "winapi", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "dlopen2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + +[[package]] +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.8", +] + +[[package]] +name = "educe" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[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.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "fehler" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5729fe49ba028cd550747b6e62cd3d841beccab5390aa398538c31a2d983635" +dependencies = [ + "fehler-macros", +] + +[[package]] +name = "fehler-macros" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccb5acb1045ebbfa222e2c50679e392a71dd77030b78fb0189f2d9c5974400f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", +] + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fragile" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fuzz_tests" +version = "0.1.0" +dependencies = [ + "arbitrary", + "assert_matches", + "callee", + "caller", + "honggfuzz", + "trident-client", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "serde", + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "goblin" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util 0.7.11", + "tracing", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.11", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "histogram" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "honggfuzz" +version = "0.5.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c76b6234c13c9ea73946d1379d33186151148e0da231506b964b44f3d023505" +dependencies = [ + "arbitrary", + "lazy_static", + "memmap2 0.9.4", + "rustc_version", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "im" +version = "15.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" +dependencies = [ + "bitmaps", + "rand_core 0.6.4", + "rand_xoshiro", + "rayon", + "serde", + "sized-chunks", + "typenum", + "version_check", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "index_list" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cb725b6505e51229de32027e0cfcd9db29da4d89156f9747b0a5195643fa3e1" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "light-poseidon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +dependencies = [ + "ark-bn254", + "ark-ff", + "num-bigint 0.4.6", + "thiserror", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] + +[[package]] +name = "lz4" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6eab492fe7f8651add23237ea56dbf11b3c4ff762ab83d40a47f11433421f91" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "mockall" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "lazy_static", + "mockall_derive", + "predicates", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "modular-bitfield" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" +dependencies = [ + "modular-bitfield-impl", + "static_assertions", +] + +[[package]] +name = "modular-bitfield-impl" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", + "pin-utils", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive 0.6.1", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive 0.7.2", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "ouroboros" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" +dependencies = [ + "aliasable", + "ouroboros_macro", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.2", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "pbkdf2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +dependencies = [ + "crypto-mac", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" +dependencies = [ + "der", + "spki", + "zeroize", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "predicates" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +dependencies = [ + "difflib", + "float-cmp", + "itertools", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" + +[[package]] +name = "predicates-tree" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "pretty-hex" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5" + +[[package]] +name = "prettytable" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46480520d1b77c9a3482d39939fcf96831537a250ec62d4fd8fbdf8e0302e781" +dependencies = [ + "csv", + "encode_unicode 1.0.0", + "is-terminal", + "lazy_static", + "term", + "unicode-width", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml 0.5.11", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "quinn" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" +dependencies = [ + "arbitrary", + "bytes", + "rand 0.8.5", + "ring 0.16.20", + "rustc-hash", + "rustls", + "rustls-native-certs", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" +dependencies = [ + "bytes", + "libc", + "socket2", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rcgen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +dependencies = [ + "pem", + "ring 0.16.20", + "time", + "yasna", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "relative-path" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "async-compression", + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-rustls", + "tokio-util 0.7.11", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rstest" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" +dependencies = [ + "cfg-if", + "glob", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.71", + "unicode-ident", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "seqlock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "serde" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "serde_json" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.2.6", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serial_test" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" +dependencies = [ + "dashmap", + "futures", + "lazy_static", + "log", + "parking_lot", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug", +] + +[[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 = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shellexpand" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b" +dependencies = [ + "dirs", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps", + "typenum", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "solana-account-decoder" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a1297281b114406a9165c6f55ff9f8706f6244545194c7aa837f9b25dee16e" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "bv", + "lazy_static", + "serde", + "serde_derive", + "serde_json", + "solana-config-program", + "solana-sdk", + "spl-token", + "spl-token-2022", + "spl-token-group-interface", + "spl-token-metadata-interface", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-accounts-db" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff031129c39c32d0176be1e3bb9352dc83c521187058d6c16febfee2aedddca0" +dependencies = [ + "arrayref", + "bincode", + "blake3", + "bv", + "bytemuck", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "flate2", + "fnv", + "im", + "index_list", + "itertools", + "lazy_static", + "log", + "lz4", + "memmap2 0.5.10", + "modular-bitfield", + "num-derive 0.4.2", + "num-traits", + "num_cpus", + "num_enum 0.7.2", + "ouroboros", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "rustc_version", + "seqlock", + "serde", + "serde_derive", + "smallvec", + "solana-bucket-map", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-nohash-hasher", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", + "static_assertions", + "strum", + "strum_macros", + "tar", + "tempfile", + "thiserror", +] + +[[package]] +name = "solana-address-lookup-table-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622d95db00595a3dd2abd2ee22c37cf3744ba3df8f531d5c79faa3c155e2814b" +dependencies = [ + "bincode", + "bytemuck", + "log", + "num-derive 0.4.2", + "num-traits", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-program", + "solana-program-runtime", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-banks-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d29258deb3e9a052ccdb2bbe986fc0a0c5117a8488298b75e013b8681d793a9" +dependencies = [ + "borsh 1.5.1", + "futures", + "solana-banks-interface", + "solana-program", + "solana-sdk", + "tarpc", + "thiserror", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "423a6215f7abd1af8e992785c91c685787651354b332781c06ad9fdd2b1095d8" +dependencies = [ + "serde", + "solana-sdk", + "tarpc", +] + +[[package]] +name = "solana-banks-server" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f986b20b5eecca738b8d2fd83fbaaffbbb2178d294c6d83813241dea48bcc0aa" +dependencies = [ + "bincode", + "crossbeam-channel", + "futures", + "solana-accounts-db", + "solana-banks-interface", + "solana-client", + "solana-runtime", + "solana-sdk", + "solana-send-transaction-service", + "tarpc", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9934493a6034c8cf05913ba6812c057f6cd4792ad75c335e8d971adf63ce01c7" +dependencies = [ + "bincode", + "byteorder", + "libsecp256k1", + "log", + "scopeguard", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-bucket-map" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da941e0bde672cd33696961450efa2efb8b46322c4f814c1894c9c264122d1b" +dependencies = [ + "bv", + "bytemuck", + "log", + "memmap2 0.5.10", + "modular-bitfield", + "num_enum 0.7.2", + "rand 0.8.5", + "solana-measure", + "solana-sdk", + "tempfile", +] + +[[package]] +name = "solana-clap-utils" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "811569ed647c15e97afd142297b0ad14a87149c51e11df740014daa81f297f8b" +dependencies = [ + "chrono", + "clap 2.34.0", + "rpassword", + "solana-remote-wallet", + "solana-sdk", + "thiserror", + "tiny-bip39", + "uriparse", + "url", +] + +[[package]] +name = "solana-cli-config" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cb4459594cbdbc6f3cd199bbca486f0ef7f1ecf107dce9cffa3f9d69df31dc7" +dependencies = [ + "dirs-next", + "lazy_static", + "serde", + "serde_derive", + "serde_yaml", + "solana-clap-utils", + "solana-sdk", + "url", +] + +[[package]] +name = "solana-cli-output" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb454e8df10d664ef0e1137c69af0f2d9fa0de713c1b608656318a76a2f5d3cc" +dependencies = [ + "Inflector", + "base64 0.21.7", + "chrono", + "clap 2.34.0", + "console", + "humantime", + "indicatif", + "pretty-hex", + "semver", + "serde", + "serde_json", + "solana-account-decoder", + "solana-clap-utils", + "solana-cli-config", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-vote-program", + "spl-memo", +] + +[[package]] +name = "solana-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "792ed1869858f35b4359f696771517b4848cd3ff6e2d58155c4bcb292f30166b" +dependencies = [ + "async-trait", + "bincode", + "dashmap", + "futures", + "futures-util", + "indexmap 2.2.6", + "indicatif", + "log", + "quinn", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-quic-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-rpc-client-nonce-utils", + "solana-sdk", + "solana-streamer", + "solana-thin-client", + "solana-tpu-client", + "solana-udp-client", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-compute-budget-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dde13cdf503b7269435ceee5a94f8c42313e9257df00e6c2aa06466345dd3fc" +dependencies = [ + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-config-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6db8509d749ff1396a0b538ade995908361563b4f2c875b09cf096ba4ba0fae" +dependencies = [ + "bincode", + "chrono", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-connection-cache" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257511b6c2b54c28eae24c5a9b7bab74522439fcd721d09e63092768333ba7b7" +dependencies = [ + "async-trait", + "bincode", + "crossbeam-channel", + "futures-util", + "indexmap 2.2.6", + "log", + "rand 0.8.5", + "rayon", + "rcgen", + "solana-measure", + "solana-metrics", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-cost-model" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c391b492eb79c24756ee149b19f5504f7a2554612a8d2860fb9701df4e202a8b" +dependencies = [ + "lazy_static", + "log", + "rustc_version", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-metrics", + "solana-program-runtime", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-frozen-abi" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f498a2b290abca1cf77feacef01b904be725fd46a7aea5ba121cce8c1269dcf" +dependencies = [ + "block-buffer 0.10.4", + "bs58 0.4.0", + "bv", + "either", + "generic-array", + "im", + "lazy_static", + "log", + "memmap2 0.5.10", + "rustc_version", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.10.8", + "solana-frozen-abi-macro", + "subtle", + "thiserror", +] + +[[package]] +name = "solana-frozen-abi-macro" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ab48d1be18021f5c13f94671e766699511044f81aab3376313f6a2392f8fab" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.71", +] + +[[package]] +name = "solana-loader-v4-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d5e1fcf36f771e210db47d9e4db1e88821d334b313e6fb3c19cf6a987617ffb" +dependencies = [ + "log", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana_rbpf", +] + +[[package]] +name = "solana-logger" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed08bcdd54232d2017071a6f5d664b34649ef0110801ac310a01418215f22ff7" +dependencies = [ + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "solana-measure" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5db05e4bba8562a2419cb980301152fc7f60f643065c3aba4b3b5d6e3bd66e45" +dependencies = [ + "log", + "solana-sdk", +] + +[[package]] +name = "solana-metrics" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7a77735beed78eb221e123e0d46a991dc91db9e199d5c5fdbea22a55149d162" +dependencies = [ + "crossbeam-channel", + "gethostname", + "lazy_static", + "log", + "reqwest", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-net-utils" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f76d98286bdb149ce5375c3c7d7301e5d1bf7bf2576789d3fd488cf93d32471" +dependencies = [ + "bincode", + "clap 3.2.25", + "crossbeam-channel", + "log", + "nix", + "rand 0.8.5", + "serde", + "serde_derive", + "socket2", + "solana-logger", + "solana-sdk", + "solana-version", + "tokio", + "url", +] + +[[package]] +name = "solana-nohash-hasher" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" + +[[package]] +name = "solana-perf" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0a1b27503716c3f5362c61215d2ccf88a3ecf95fce51b2b59951c38a9ad94c" +dependencies = [ + "ahash 0.8.11", + "bincode", + "bv", + "caps", + "curve25519-dalek", + "dlopen2", + "fnv", + "lazy_static", + "libc", + "log", + "nix", + "rand 0.8.5", + "rayon", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-metrics", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-vote-program", +] + +[[package]] +name = "solana-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97cec6d3d60ef58168c8b3e97fd88e8903fa059eff6635361427c61c946ec1e" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "base64 0.21.7", + "bincode", + "bitflags 2.6.0", + "blake3", + "borsh 0.10.3", + "borsh 0.9.3", + "borsh 1.5.1", + "bs58 0.4.0", + "bv", + "bytemuck", + "cc", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.2.15", + "itertools", + "js-sys", + "lazy_static", + "libc", + "libsecp256k1", + "light-poseidon", + "log", + "memoffset 0.9.1", + "num-bigint 0.4.6", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "sha2 0.10.8", + "sha3 0.10.8", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk-macro", + "thiserror", + "tiny-bip39", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-program-runtime" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b76599d73401663bc1fde39f9fa5e538bd74451ea4a8d4e3ac14541be0a5de" +dependencies = [ + "base64 0.21.7", + "bincode", + "eager", + "enum-iterator", + "itertools", + "libc", + "log", + "num-derive 0.4.2", + "num-traits", + "percentage", + "rand 0.8.5", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-program-test" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c65563d5196f76a7c2feb399543389d045c7352f099acb5f5222d46922664457" +dependencies = [ + "assert_matches", + "async-trait", + "base64 0.21.7", + "bincode", + "chrono-humanize", + "crossbeam-channel", + "log", + "serde", + "solana-accounts-db", + "solana-banks-client", + "solana-banks-interface", + "solana-banks-server", + "solana-bpf-loader-program", + "solana-logger", + "solana-program-runtime", + "solana-runtime", + "solana-sdk", + "solana-vote-program", + "solana_rbpf", + "test-case", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-pubsub-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09aacbdbeaa5722b2ab1f843673f66c317609741f494a6ef11e2e8928cc7449e" +dependencies = [ + "crossbeam-channel", + "futures-util", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tungstenite", + "url", +] + +[[package]] +name = "solana-quic-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2eeabd12e1039aa62cad34179fc1f139fca5c7bfeb7683057643bebff3506b0" +dependencies = [ + "async-mutex", + "async-trait", + "futures", + "itertools", + "lazy_static", + "log", + "quinn", + "quinn-proto", + "rcgen", + "rustls", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-rpc-client-api", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-rayon-threadlimit" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ad791cc224c84d69498eeeaeadfc5af2cf710ec2719e48b51f2e2b6e67d8163" +dependencies = [ + "lazy_static", + "num_cpus", +] + +[[package]] +name = "solana-remote-wallet" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fca3c68439865c87d5a01c26dc0dcbcce2d45331adf8f0bf92a7c7d44853fefb" +dependencies = [ + "console", + "dialoguer", + "log", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "qstring", + "semver", + "solana-sdk", + "thiserror", + "uriparse", +] + +[[package]] +name = "solana-rpc-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1c9bdb88ebcea8b13103019ed0d39b7d4391dc84a0d614dc8ba2e1ca43468e9" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "indicatif", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "solana-vote-program", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5bb93738a111d44dfeec6ccdd6a49f0478550a25a60e38badb2bd713599de44" +dependencies = [ + "base64 0.21.7", + "bs58 0.4.0", + "jsonrpc-core", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "spl-token-2022", + "thiserror", +] + +[[package]] +name = "solana-rpc-client-nonce-utils" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e066df081489cd10c91648f1e87d2b945fac2fcdfb34a715234a0b079a4c4375" +dependencies = [ + "clap 2.34.0", + "solana-clap-utils", + "solana-rpc-client", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-runtime" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8e16747198f45ab41f146d1ab1782d83016fb9ed1ce7612b9174018f907bd5" +dependencies = [ + "aquamarine", + "arrayref", + "base64 0.21.7", + "bincode", + "blake3", + "bv", + "bytemuck", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "dir-diff", + "flate2", + "fnv", + "im", + "index_list", + "itertools", + "lazy_static", + "log", + "lru", + "lz4", + "memmap2 0.5.10", + "mockall", + "modular-bitfield", + "num-derive 0.4.2", + "num-traits", + "num_cpus", + "num_enum 0.7.2", + "ouroboros", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "rustc_version", + "serde", + "serde_derive", + "serde_json", + "solana-accounts-db", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-bucket-map", + "solana-compute-budget-program", + "solana-config-program", + "solana-cost-model", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-measure", + "solana-metrics", + "solana-perf", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-version", + "solana-vote", + "solana-vote-program", + "solana-zk-token-proof-program", + "solana-zk-token-sdk", + "static_assertions", + "strum", + "strum_macros", + "symlink", + "tar", + "tempfile", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-sdk" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c335bdf35728ea876506babffcfd85fa4dd66af6438f9472afc91b278946909" +dependencies = [ + "assert_matches", + "base64 0.21.7", + "bincode", + "bitflags 2.6.0", + "borsh 1.5.1", + "bs58 0.4.0", + "bytemuck", + "byteorder", + "chrono", + "derivation-path", + "digest 0.10.7", + "ed25519-dalek", + "ed25519-dalek-bip32", + "generic-array", + "hmac 0.12.1", + "itertools", + "js-sys", + "lazy_static", + "libsecp256k1", + "log", + "memmap2 0.5.10", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.2", + "pbkdf2 0.11.0", + "qstring", + "qualifier_attr", + "rand 0.7.3", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "serde_with", + "sha2 0.10.8", + "sha3 0.10.8", + "siphasher", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-logger", + "solana-program", + "solana-sdk-macro", + "thiserror", + "uriparse", + "wasm-bindgen", +] + +[[package]] +name = "solana-sdk-macro" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba67050b90454a8638913a7d5775703c0557157def04ddcc8b59c964cda8535" +dependencies = [ + "bs58 0.4.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.71", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" + +[[package]] +name = "solana-send-transaction-service" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e8c1dd225716ecd66ec9a5a30c76355d8d1788c721d7db4d53ebb4c6ef34c8d" +dependencies = [ + "crossbeam-channel", + "log", + "solana-client", + "solana-measure", + "solana-metrics", + "solana-runtime", + "solana-sdk", + "solana-tpu-client", +] + +[[package]] +name = "solana-stake-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2ef08f7b2485af8578bfd4e23689286e5360b50d3cc9f350dfe3ad9fdabc679" +dependencies = [ + "bincode", + "log", + "rustc_version", + "solana-config-program", + "solana-program-runtime", + "solana-sdk", + "solana-vote-program", +] + +[[package]] +name = "solana-streamer" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27e8269eaa4aef1a9697fe8b9f659402272746c3fdd374fbffa96f68fe6745a6" +dependencies = [ + "async-channel", + "bytes", + "crossbeam-channel", + "futures-util", + "histogram", + "indexmap 2.2.6", + "itertools", + "libc", + "log", + "nix", + "pem", + "percentage", + "pkcs8", + "quinn", + "quinn-proto", + "rand 0.8.5", + "rcgen", + "rustls", + "smallvec", + "solana-metrics", + "solana-perf", + "solana-sdk", + "thiserror", + "tokio", + "x509-parser", +] + +[[package]] +name = "solana-system-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22c8b55398485962ea6127fe84c5768a5ae4a4ecdbd80a0917eb6945593481f9" +dependencies = [ + "bincode", + "log", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-thin-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c174c724bbe19a53862156e1a5d2cf6cdf1bd5d5d9853b4696b2d9d836123b" +dependencies = [ + "bincode", + "log", + "rayon", + "solana-connection-cache", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", +] + +[[package]] +name = "solana-tpu-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcdf9d7109d25900d0532539b00f53e820fb7200f6dc18f90e9d2be20c3d466" +dependencies = [ + "async-trait", + "bincode", + "futures-util", + "indexmap 2.2.6", + "indicatif", + "log", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-transaction-status" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7595aef5a9ddfdecd0966cc12ad0006713e4f8d87eafb4cb7b60fb18d98eff3a" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "borsh 0.10.3", + "bs58 0.4.0", + "lazy_static", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "spl-associated-token-account", + "spl-memo", + "spl-token", + "spl-token-2022", + "thiserror", +] + +[[package]] +name = "solana-udp-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a59c49a3766232005385bd70f15b0fce756fa6e73fb6397ce9ed34113f090e2" +dependencies = [ + "async-trait", + "solana-connection-cache", + "solana-net-utils", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-version" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ece37d745e1fb3455acd69b8ba6ecea3ebcefde29e0f40ee8e6467acc4dc04" +dependencies = [ + "log", + "rustc_version", + "semver", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", +] + +[[package]] +name = "solana-vote" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ca2744cf5509c7680a90d6704d00fbab899aa586542c4257fb23d4712b380c" +dependencies = [ + "crossbeam-channel", + "itertools", + "log", + "rustc_version", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", + "solana-vote-program", + "thiserror", +] + +[[package]] +name = "solana-vote-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6944bb3f8f34cc815017f6a50027331f5e7f48321e7998f1572cc898438b6a8a" +dependencies = [ + "bincode", + "log", + "num-derive 0.4.2", + "num-traits", + "rustc_version", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-metrics", + "solana-program", + "solana-program-runtime", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-zk-token-proof-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bd480f4b1b87dea1cdca14f3c6ba8e778e88756dc44ac090e797aab9c8759d" +dependencies = [ + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616130045004bccc9dd016fe03ac458db38bd61456f1d16f126acb60f968dcae" +dependencies = [ + "aes-gcm-siv", + "base64 0.21.7", + "bincode", + "bytemuck", + "byteorder", + "curve25519-dalek", + "getrandom 0.1.16", + "itertools", + "lazy_static", + "merlin", + "num-derive 0.4.2", + "num-traits", + "rand 0.7.3", + "serde", + "serde_json", + "sha3 0.9.1", + "solana-program", + "solana-sdk", + "subtle", + "thiserror", + "zeroize", +] + +[[package]] +name = "solana_rbpf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d457cc2ba742c120492a64b7fa60e22c575e891f6b55039f4d736568fb112a3" +dependencies = [ + "byteorder", + "combine", + "goblin", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "scroll", + "thiserror", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "spl-associated-token-account" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f" +dependencies = [ + "assert_matches", + "borsh 0.10.3", + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-token", + "spl-token-2022", + "thiserror", +] + +[[package]] +name = "spl-discriminator" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" +dependencies = [ + "quote", + "spl-discriminator-syn", + "syn 2.0.71", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fea7be851bd98d10721782ea958097c03a0c2a07d8d4997041d0ece6319a63" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.71", + "thiserror", +] + +[[package]] +name = "spl-memo" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" +dependencies = [ + "solana-program", +] + +[[package]] +name = "spl-pod" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" +dependencies = [ + "borsh 0.10.3", + "bytemuck", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error", +] + +[[package]] +name = "spl-program-error" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" +dependencies = [ + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-program-error-derive", + "thiserror", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1845dfe71fd68f70382232742e758557afe973ae19e6c06807b2c30f5d5cb474" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.71", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "615d381f48ddd2bb3c57c7f7fb207591a2a05054639b18a62e785117dd7a8683" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", +] + +[[package]] +name = "spl-token" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.3.3", + "num-traits", + "num_enum 0.6.1", + "solana-program", + "thiserror", +] + +[[package]] +name = "spl-token-2022" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.2", + "solana-program", + "solana-security-txt", + "solana-zk-token-sdk", + "spl-memo", + "spl-pod", + "spl-token", + "spl-token-group-interface", + "spl-token-metadata-interface", + "spl-transfer-hook-interface", + "spl-type-length-value", + "thiserror", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" +dependencies = [ + "borsh 0.10.3", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aabdb7c471566f6ddcee724beb8618449ea24b399e58d464d6b5bc7db550259" +dependencies = [ + "arrayref", + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-tlv-account-resolution", + "spl-type-length-value", +] + +[[package]] +name = "spl-type-length-value" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "symlink" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tar" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tarpc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" +dependencies = [ + "anyhow", + "fnv", + "futures", + "humantime", + "opentelemetry", + "pin-project", + "rand 0.8.5", + "serde", + "static_assertions", + "tarpc-plugins", + "thiserror", + "tokio", + "tokio-serde", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "tarpc-plugins" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[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 = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", + "test-case-core", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + +[[package]] +name = "thiserror" +version = "1.0.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-bip39" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" +dependencies = [ + "anyhow", + "hmac 0.8.1", + "once_cell", + "pbkdf2 0.4.0", + "rand 0.7.3", + "rustc-hash", + "sha2 0.9.9", + "thiserror", + "unicode-normalization", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +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.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bincode", + "bytes", + "educe", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots 0.25.4", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "indexmap 1.9.3", + "serde", +] + +[[package]] +name = "toml" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.15", +] + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.13", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "trident-client" +version = "0.6.0" +dependencies = [ + "anchor-client", + "anchor-lang", + "anchor-syn", + "anyhow", + "arbitrary", + "bincode", + "borsh 0.10.3", + "cargo_metadata", + "ed25519-dalek", + "fehler", + "futures", + "heck 0.4.1", + "honggfuzz", + "indicatif", + "log", + "pathdiff", + "proc-macro2", + "quinn-proto", + "quote", + "regex", + "rstest", + "serde", + "serde_json", + "serial_test", + "shellexpand", + "solana-account-decoder", + "solana-cli-output", + "solana-program-test", + "solana-sdk", + "solana-transaction-status", + "spl-associated-token-account", + "spl-token", + "syn 1.0.109", + "thiserror", + "tokio", + "toml 0.5.11", + "trident-derive-accounts-snapshots", + "trident-derive-displayix", + "trident-derive-fuzz-deserialize", + "trident-derive-fuzz-test-executor", + "trident-fuzz", + "trident-test", +] + +[[package]] +name = "trident-derive-accounts-snapshots" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "trident-fuzz", +] + +[[package]] +name = "trident-derive-displayix" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "trident-derive-fuzz-deserialize" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "trident-derive-fuzz-test-executor" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "trident-fuzz" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "anchor-syn", + "arbitrary", + "convert_case", + "heck 0.4.1", + "prettytable", + "proc-macro2", + "quote", + "regex", + "serde", + "serde_json", + "solana-banks-client", + "solana-program-runtime", + "solana-program-test", + "solana-sdk", + "spl-token", + "syn 1.0.109", + "thiserror", + "tokio", +] + +[[package]] +name = "trident-test" +version = "0.3.2" +dependencies = [ + "darling 0.13.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", + "webpki-roots 0.24.0", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "universal-hash" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.71", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" +dependencies = [ + "rustls-webpki", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys 0.52.0", +] + +[[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.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64 0.13.1", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.12+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/examples/fuzz-tests/simple-cpi-7/Cargo.toml b/examples/fuzz-tests/simple-cpi-7/Cargo.toml new file mode 100644 index 00000000..9783b3f0 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/Cargo.toml @@ -0,0 +1,12 @@ +[workspace] +members = ["programs/*", "trident-tests/fuzz_tests"] +resolver = "2" +[profile.release] +overflow-checks = true +lto = "fat" +codegen-units = 1 + +[profile.release.build-override] +opt-level = 3 +incremental = false +codegen-units = 1 diff --git a/examples/fuzz-tests/simple-cpi-7/Trident.toml b/examples/fuzz-tests/simple-cpi-7/Trident.toml new file mode 100644 index 00000000..6fd20b35 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/Trident.toml @@ -0,0 +1,41 @@ +[test] +validator_startup_timeout = 15000 + + +[honggfuzz] +# Timeout in seconds (default: 10) +timeout = 10 +# Number of fuzzing iterations (default: 0 [no limit]) +iterations = 100 +# Number of concurrent fuzzing threads (default: 0 [number of CPUs / 2]) +threads = 0 +# Don't close children's stdin, stdout, stderr; can be noisy (default: false) +keep_output = false +# Disable ANSI console; use simple log output (default: false) +verbose = false +# Exit upon seeing the first crash (default: false) +exit_upon_crash = false +# Maximal number of mutations per one run (default: 6) +mutations_per_run = 6 +# Target compilation directory, (default: "" ["trident-tests/fuzz_tests/fuzzing/hfuzz_target"]). +# To not clash with cargo build's default target directory. +cargo_target_dir = "" +# Honggfuzz working directory, (default: "" ["trident-tests/fuzz_tests/fuzzing/hfuzz_workspace"]). +hfuzz_workspace = "" +# Directory where crashes are saved to (default: "" [workspace directory]) +crashdir = "" +# Input file extension (e.g. 'swf'), (default: "" ['fuzz']) +extension = "" +# Number of seconds this fuzzing session will last (default: 0 [no limit]) +run_time = 0 +# Maximal size of files processed by the fuzzer in bytes (default: 1048576 = 1MB) +max_file_size = 1048576 +# Save all test-cases (not only the unique ones) by appending the current time-stamp to the filenames (default: false) +save_all = false + +[fuzz] +# Allow processing of duplicate transactions. Setting to true might speed up fuzzing but can cause false positive crashes (default: false) +allow_duplicate_txs = false +# Trident will show statistics after the fuzzing session. This option forces use of honggfuzz parameter +# `keep_output` as true in order to be able to catch fuzzer stdout. (default: false) +fuzzing_with_stats = false diff --git a/examples/fuzz-tests/simple-cpi-7/migrations/deploy.ts b/examples/fuzz-tests/simple-cpi-7/migrations/deploy.ts new file mode 100644 index 00000000..82fb175f --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/migrations/deploy.ts @@ -0,0 +1,12 @@ +// Migrations are an early feature. Currently, they're nothing more than this +// single deploy script that's invoked from the CLI, injecting a provider +// configured from the workspace's Anchor.toml. + +const anchor = require("@coral-xyz/anchor"); + +module.exports = async function (provider) { + // Configure client to use the provider. + anchor.setProvider(provider); + + // Add your deploy script here. +}; diff --git a/examples/fuzz-tests/simple-cpi-7/package.json b/examples/fuzz-tests/simple-cpi-7/package.json new file mode 100644 index 00000000..b036f2ff --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/package.json @@ -0,0 +1,20 @@ +{ + "license": "ISC", + "scripts": { + "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", + "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" + }, + "dependencies": { + "@coral-xyz/anchor": "^0.30.1" + }, + "devDependencies": { + "chai": "^4.3.4", + "mocha": "^9.0.3", + "ts-mocha": "^10.0.0", + "@types/bn.js": "^5.1.0", + "@types/chai": "^4.3.0", + "@types/mocha": "^9.0.0", + "typescript": "^4.3.5", + "prettier": "^2.6.2" + } +} diff --git a/examples/fuzz-tests/simple-cpi-7/programs/callee/Cargo.toml b/examples/fuzz-tests/simple-cpi-7/programs/callee/Cargo.toml new file mode 100644 index 00000000..73a67880 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/programs/callee/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "callee" +version = "0.1.0" +description = "Created with Anchor" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "callee" + +[features] +default = [] +cpi = ["no-entrypoint"] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +idl-build = ["anchor-lang/idl-build"] + +[dependencies] +anchor-lang = "0.30.1" diff --git a/examples/fuzz-tests/simple-cpi-7/programs/callee/Xargo.toml b/examples/fuzz-tests/simple-cpi-7/programs/callee/Xargo.toml new file mode 100644 index 00000000..475fb71e --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/programs/callee/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] diff --git a/examples/fuzz-tests/simple-cpi-7/programs/callee/src/lib.rs b/examples/fuzz-tests/simple-cpi-7/programs/callee/src/lib.rs new file mode 100644 index 00000000..c7576f3d --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/programs/callee/src/lib.rs @@ -0,0 +1,22 @@ +use anchor_lang::prelude::*; + +declare_id!("HJR1TK8bgrUWzysdpS1pBGBYKF7zi1tU9cS4qj8BW8ZL"); + +#[program] +pub mod callee { + use super::*; + + pub fn initialize_callee(_ctx: Context, input: u8) -> Result<()> { + msg!("Greetings from Callee"); + + if input >= 15 { + panic!(); + } + Ok(()) + } +} + +#[derive(Accounts)] +pub struct InitializeCallee<'info> { + pub signer: Signer<'info>, +} diff --git a/examples/fuzz-tests/simple-cpi-7/programs/caller/Cargo.toml b/examples/fuzz-tests/simple-cpi-7/programs/caller/Cargo.toml new file mode 100644 index 00000000..fc850231 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/programs/caller/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "caller" +version = "0.1.0" +description = "Created with Anchor" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "caller" + +[features] +default = [] +cpi = ["no-entrypoint"] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +idl-build = ["anchor-lang/idl-build"] + +[dependencies] +anchor-lang = "0.30.1" +callee = { path = "../callee", features = ["cpi"] } +trident-client = { path = "../../../../../crates/client" } diff --git a/examples/fuzz-tests/simple-cpi-7/programs/caller/Xargo.toml b/examples/fuzz-tests/simple-cpi-7/programs/caller/Xargo.toml new file mode 100644 index 00000000..475fb71e --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/programs/caller/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] diff --git a/examples/fuzz-tests/simple-cpi-7/programs/caller/src/lib.rs b/examples/fuzz-tests/simple-cpi-7/programs/caller/src/lib.rs new file mode 100644 index 00000000..eb2dc232 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/programs/caller/src/lib.rs @@ -0,0 +1,29 @@ +use anchor_lang::prelude::*; +use callee::program::Callee; +use trident_client::fuzzing::AccountsSnapshots; + +declare_id!("FWtSodrkUnovFPnNRCxneP6VWh6JH6jtQZ4PHoP8Ejuz"); + +#[program] +pub mod caller { + use super::*; + + pub fn initialize_caller(ctx: Context, input: u8) -> Result<()> { + msg!("Greetings from Caller"); + + let cpi_context = CpiContext::new( + ctx.accounts.program.to_account_info(), + callee::cpi::accounts::InitializeCallee { + signer: ctx.accounts.signer.to_account_info(), + }, + ); + + callee::cpi::initialize_callee(cpi_context, input)?; + Ok(()) + } +} +#[derive(AccountsSnapshots, Accounts)] +pub struct InitializeCaller<'info> { + pub signer: Signer<'info>, + pub program: Program<'info, Callee>, +} diff --git a/examples/fuzz-tests/simple-cpi-7/tests/simple-cpi-7.ts b/examples/fuzz-tests/simple-cpi-7/tests/simple-cpi-7.ts new file mode 100644 index 00000000..6da007ba --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/tests/simple-cpi-7.ts @@ -0,0 +1,16 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program } from "@coral-xyz/anchor"; +import { SimpleCpi7 } from "../target/types/simple_cpi_7"; + +describe("simple-cpi-7", () => { + // Configure the client to use the local cluster. + anchor.setProvider(anchor.AnchorProvider.env()); + + const program = anchor.workspace.SimpleCpi7 as Program; + + it("Is initialized!", async () => { + // Add your test here. + const tx = await program.methods.initialize().rpc(); + console.log("Your transaction signature", tx); + }); +}); diff --git a/examples/fuzz-tests/simple-cpi-7/trident-genesis/caller.so b/examples/fuzz-tests/simple-cpi-7/trident-genesis/caller.so new file mode 100755 index 0000000000000000000000000000000000000000..e31cebeed43fc6b1ba30cdf37d9671dc74bb61be GIT binary patch literal 194920 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 EKiFeb4gdfE literal 0 HcmV?d00001 diff --git a/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/Cargo.toml new file mode 100644 index 00000000..2009814c --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/Cargo.toml @@ -0,0 +1,23 @@ +[[bin]] +name = "fuzz_0" +path = "fuzz_0/test_fuzz.rs" + +[package] +name = "fuzz_tests" +version = "0.1.0" +description = "Created with Trident" +edition = "2021" + +[dependencies] +honggfuzz = "0.5.56" +arbitrary = "1.3.0" +assert_matches = "1.4.0" + +[dependencies.trident-client] +path = "../../../../../crates/client" + +[dependencies.callee] +path = "../../programs/callee" + +[dependencies.caller] +path = "../../programs/caller" diff --git a/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs new file mode 100644 index 00000000..58f1ab5d --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -0,0 +1,112 @@ +// pub mod callee_fuzz_instructions { +// use trident_client::fuzzing::*; +// #[derive(Arbitrary, DisplayIx, FuzzTestExecutor, FuzzDeserialize)] +// pub enum FuzzInstruction { +// InitializeCallee(InitializeCallee), +// } +// #[derive(Arbitrary, Debug)] +// pub struct InitializeCallee { +// pub accounts: InitializeCalleeAccounts, +// pub data: InitializeCalleeData, +// } +// #[derive(Arbitrary, Debug)] +// pub struct InitializeCalleeAccounts { +// pub signer: AccountId, +// } +// #[derive(Arbitrary, Debug)] +// pub struct InitializeCalleeData { +// pub input: u8, +// } +// impl<'info> IxOps<'info> for InitializeCallee { +// type IxData = callee::instruction::InitializeCallee; +// type IxAccounts = FuzzAccounts; +// type IxSnapshot = InitializeCalleeSnapshot<'info>; +// fn get_data( +// &self, +// _client: &mut impl FuzzClient, +// _fuzz_accounts: &mut FuzzAccounts, +// ) -> Result { +// let data = callee::instruction::InitializeCallee { input: todo!() }; +// Ok(data) +// } +// fn get_accounts( +// &self, +// client: &mut impl FuzzClient, +// fuzz_accounts: &mut FuzzAccounts, +// ) -> Result<(Vec, Vec), FuzzingError> { +// let signers = vec![todo!()]; +// let acc_meta = +// callee::accounts::InitializeCallee { signer: todo!() }.to_account_metas(None); +// Ok((signers, acc_meta)) +// } +// } +// #[doc = r" Use AccountsStorage where T can be one of:"] +// #[doc = r" Keypair, PdaStore, TokenStore, MintStore, ProgramStore"] +// #[derive(Default)] +// pub struct FuzzAccounts { +// signer: AccountsStorage, +// } +// } + +pub mod caller_fuzz_instructions { + use caller::trident_fuzz_initialize_caller_snapshot::InitializeCallerSnapshot; + use trident_client::fuzzing::*; + #[derive(Arbitrary, DisplayIx, FuzzTestExecutor, FuzzDeserialize)] + pub enum FuzzInstruction { + InitializeCaller(InitializeCaller), + } + #[derive(Arbitrary, Debug)] + pub struct InitializeCaller { + pub accounts: InitializeCallerAccounts, + pub data: InitializeCallerData, + } + #[derive(Arbitrary, Debug)] + pub struct InitializeCallerAccounts { + pub signer: AccountId, + pub program: AccountId, + } + #[derive(Arbitrary, Debug)] + pub struct InitializeCallerData { + pub input: u8, + } + impl<'info> IxOps<'info> for InitializeCaller { + type IxData = caller::instruction::InitializeCaller; + type IxAccounts = FuzzAccounts; + type IxSnapshot = InitializeCallerSnapshot<'info>; + fn get_data( + &self, + _client: &mut impl FuzzClient, + _fuzz_accounts: &mut FuzzAccounts, + ) -> Result { + let data = caller::instruction::InitializeCaller { + input: self.data.input, + }; + Ok(data) + } + fn get_accounts( + &self, + client: &mut impl FuzzClient, + fuzz_accounts: &mut FuzzAccounts, + ) -> Result<(Vec, Vec), FuzzingError> { + let signer = fuzz_accounts.signer.get_or_create_account( + self.accounts.signer, + client, + 5 * solana_sdk::native_token::LAMPORTS_PER_SOL, + ); + let signers = vec![signer.clone()]; + let acc_meta = caller::accounts::InitializeCaller { + signer: signer.pubkey(), + program: callee::ID, + } + .to_account_metas(None); + Ok((signers, acc_meta)) + } + } + #[doc = r" Use AccountsStorage where T can be one of:"] + #[doc = r" Keypair, PdaStore, TokenStore, MintStore, ProgramStore"] + #[derive(Default)] + pub struct FuzzAccounts { + _program: AccountsStorage, + signer: AccountsStorage, + } +} diff --git a/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs new file mode 100644 index 00000000..20151e03 --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -0,0 +1,45 @@ +use callee::entry as entry_callee; +use callee::ID as PROGRAM_ID_CALLEE; +use caller::ID as PROGRAM_ID_CALLER; +const PROGRAM_NAME_CALLEE: &str = "callee"; +const PROGRAM_NAME_CALLER: &str = "caller"; +use fuzz_instructions::caller_fuzz_instructions::FuzzInstruction as FuzzInstruction_caller; +use trident_client::fuzzing::*; +mod fuzz_instructions; + +// TODO: In case of using file extension for AccountsSnapshots +// uncomment the line below +// mod accounts_snapshots; + +struct MyFuzzData; + +impl FuzzDataBuilder for MyFuzzData {} + +fn main() { + loop { + fuzz_trident!(fuzz_ix: FuzzInstruction_caller, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + let fuzzing_program1 = FuzzingProgram::new( + PROGRAM_NAME_CALLER, + &PROGRAM_ID_CALLER, + None + ); + + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program2 = FuzzingProgram::new( + PROGRAM_NAME_CALLEE, + &PROGRAM_ID_CALLEE, + processor!(convert_entry!(entry_callee)) + ); + + let mut client = + ProgramTestClientBlocking::new(&[fuzzing_program1,fuzzing_program2]) + .unwrap(); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(PROGRAM_ID_CALLER, &mut client); + }); + } +} diff --git a/examples/fuzz-tests/simple-cpi-7/tsconfig.json b/examples/fuzz-tests/simple-cpi-7/tsconfig.json new file mode 100644 index 00000000..cd5d2e3d --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai"], + "typeRoots": ["./node_modules/@types"], + "lib": ["es2015"], + "module": "commonjs", + "target": "es6", + "esModuleInterop": true + } +} diff --git a/examples/fuzz-tests/simple-cpi-7/yarn.lock b/examples/fuzz-tests/simple-cpi-7/yarn.lock new file mode 100644 index 00000000..d009586c --- /dev/null +++ b/examples/fuzz-tests/simple-cpi-7/yarn.lock @@ -0,0 +1,1181 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.24.7": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" + integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== + dependencies: + regenerator-runtime "^0.14.0" + +"@coral-xyz/anchor-errors@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz#bdfd3a353131345244546876eb4afc0e125bec30" + integrity sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ== + +"@coral-xyz/anchor@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" + integrity sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ== + dependencies: + "@coral-xyz/anchor-errors" "^0.30.1" + "@coral-xyz/borsh" "^0.30.1" + "@noble/hashes" "^1.3.1" + "@solana/web3.js" "^1.68.0" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^6.3.0" + cross-fetch "^3.1.5" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + pako "^2.0.3" + snake-case "^3.0.4" + superstruct "^0.15.4" + toml "^3.0.0" + +"@coral-xyz/borsh@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.30.1.tgz#869d8833abe65685c72e9199b8688477a4f6b0e3" + integrity sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@noble/curves@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== + dependencies: + "@noble/hashes" "1.4.0" + +"@noble/hashes@1.4.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/web3.js@^1.68.0": + version "1.95.0" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.0.tgz#9cf08383e7dcba212a73d78349cf9b25bc34764f" + integrity sha512-iHwJ/HcWrF9qbnI1ctwI1UXHJ0vZXRpnt+lI5UcQIk8WvJNuQ5gV06icxzM6B7ojUES85Q1/FM4jZ49UQ8yZZQ== + dependencies: + "@babel/runtime" "^7.24.7" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.0" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@swc/helpers@^0.5.11": + version "0.5.12" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.12.tgz#37aaca95284019eb5d2207101249435659709f4b" + integrity sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g== + dependencies: + tslib "^2.4.0" + +"@types/bn.js@^5.1.0": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + +"@types/chai@^4.3.0": + version "4.3.16" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.16.tgz#b1572967f0b8b60bf3f87fe1d854a5604ea70c82" + integrity sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ== + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/mocha@^9.0.0": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + +"@types/node@*": + version "20.14.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.10.tgz#a1a218290f1b6428682e3af044785e5874db469a" + integrity sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ== + dependencies: + undici-types "~5.26.4" + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@types/ws@^8.2.2": + version "8.5.11" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.11.tgz#90ad17b3df7719ce3e6bc32f83ff954d38656508" + integrity sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w== + dependencies: + "@types/node" "*" + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +agentkeepalive@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.10" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" + integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +buffer-from@^1.0.0, buffer-from@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-layout@^1.2.0, buffer-layout@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" + integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.0.8" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== + dependencies: + node-gyp-build "^4.3.0" + +camelcase@^6.0.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +chai@^4.3.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.0.8" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +crypto-hash@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" + integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== + +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^3.1.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +jayson@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.1.tgz#282ff13d3cea09776db684b7eeca98c47b2fa99a" + integrity sha512-5ZWm4Q/0DHPyeMfAsrwViwUS2DMVsQgWh8bEEIVTkfb3DzHZ2L3G5WUnF+AKmGjjM9r1uAv73SaqC1/U4RL45w== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.5.10" + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mocha@^9.0.3: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.3" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" + ms "2.1.3" + nanoid "3.3.1" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + workerpool "6.2.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-fetch@^2.6.12, node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.3.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" + integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pako@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prettier@^2.6.2: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +rpc-websockets@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.2.tgz#4c1568d00b8100f997379a363478f41f8f4b242c" + integrity sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +source-map-support@^0.5.6: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +superstruct@^0.15.4: + version "0.15.5" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" + integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== + +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-mocha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.0.0.tgz#41a8d099ac90dbbc64b06976c5025ffaebc53cb9" + integrity sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw== + dependencies: + ts-node "7.0.1" + optionalDependencies: + tsconfig-paths "^3.5.0" + +ts-node@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" + integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== + dependencies: + arrify "^1.0.0" + buffer-from "^1.1.0" + diff "^3.1.0" + make-error "^1.1.1" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map-support "^0.5.6" + yn "^2.0.0" + +tsconfig-paths@^3.5.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.0.3, tslib@^2.4.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + +type-detect@^4.0.0, type-detect@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +typescript@^4.3.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.5.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + integrity sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From d0c1fca299106ae4364b046079cb48012943d2a7 Mon Sep 17 00:00:00 2001 From: lukacan Date: Sun, 14 Jul 2024 23:13:37 +0200 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=92=9A=20Update=20pipeline=20to=20tes?= =?UTF-8?q?t=20cpi=20example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/run_fuzz_example.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/run_fuzz_example.yml b/.github/workflows/run_fuzz_example.yml index 2476fd28..dfb3d6fd 100644 --- a/.github/workflows/run_fuzz_example.yml +++ b/.github/workflows/run_fuzz_example.yml @@ -5,17 +5,17 @@ on: pull_request: env: - SOLANA_CLI_VERSION: 1.18.17 + SOLANA_CLI_VERSION: 1.18.18 HONGGFUZZ_VERSION: 0.5.56 jobs: - unchecked-arithmetic-0: + simple-cpi-7: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - name: Set Anchor Version - run: echo "ANCHOR_VERSION=0.29.0" >> $GITHUB_ENV + run: echo "ANCHOR_VERSION=0.30.1" >> $GITHUB_ENV - uses: Swatinem/rust-cache@v2 name: Cache Rust and it's packages @@ -30,7 +30,7 @@ jobs: id: rust-setup - name: Test Fuzz - working-directory: examples/fuzz-tests/unchecked-arithmetic-0 + working-directory: examples/fuzz-tests/simple-cpi-7 run: trident fuzz run fuzz_0 arbitrary-limit-inputs-5: runs-on: ubuntu-20.04 From 01a19efe35e2745d0713c09588d312eeee694c30 Mon Sep 17 00:00:00 2001 From: lukacan Date: Mon, 15 Jul 2024 00:30:45 +0200 Subject: [PATCH 3/5] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20fuzz=20exampl?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fuzz_tests/fuzz_0/accounts_snapshots.rs | 3 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 40 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 38 +- .../fuzz_tests/fuzz_0/accounts_snapshots.rs | 4 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 38 +- .../fuzz_tests/fuzz_0/accounts_snapshots.rs | 5 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 39 +- .../fuzz_tests/fuzz_0/accounts_snapshots.rs | 5 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 38 +- .../{simple-cpi-7 => simple-cpi-6}/.gitignore | 0 .../.prettierignore | 0 .../Anchor.toml | 0 .../{simple-cpi-7 => simple-cpi-6}/Cargo.lock | 0 .../{simple-cpi-7 => simple-cpi-6}/Cargo.toml | 0 .../Trident.toml | 0 .../migrations/deploy.ts | 0 .../package.json | 0 .../programs/callee/Cargo.toml | 0 .../programs/callee/Xargo.toml | 0 .../programs/callee/src/lib.rs | 0 .../programs/caller/Cargo.toml | 0 .../programs/caller/Xargo.toml | 0 .../programs/caller/src/lib.rs | 0 .../tests/simple-cpi-7.ts | 0 .../trident-genesis/caller.so | Bin .../trident-tests/fuzz_tests/Cargo.toml | 0 .../fuzz_tests/fuzz_0/fuzz_instructions.rs | 0 .../fuzz_tests/fuzz_0/test_fuzz.rs | 0 .../tsconfig.json | 0 .../{simple-cpi-7 => simple-cpi-6}/yarn.lock | 0 .../fuzz_tests/fuzz_0/accounts_snapshots.rs | 5 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 39 +- .../unchecked-arithmetic-0/Cargo.lock | 342 +++--------------- .../fuzz_tests/fuzz_0/accounts_snapshots.rs | 3 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 38 +- 35 files changed, 227 insertions(+), 410 deletions(-) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/.gitignore (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/.prettierignore (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/Anchor.toml (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/Cargo.lock (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/Cargo.toml (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/Trident.toml (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/migrations/deploy.ts (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/package.json (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/programs/callee/Cargo.toml (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/programs/callee/Xargo.toml (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/programs/callee/src/lib.rs (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/programs/caller/Cargo.toml (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/programs/caller/Xargo.toml (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/programs/caller/src/lib.rs (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/tests/simple-cpi-7.ts (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/trident-genesis/caller.so (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/trident-tests/fuzz_tests/Cargo.toml (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/tsconfig.json (100%) rename examples/fuzz-tests/{simple-cpi-7 => simple-cpi-6}/yarn.lock (100%) diff --git a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs index 3cf2473e..154ecb8a 100644 --- a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs +++ b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs @@ -1,5 +1,4 @@ use anchor_lang::prelude::*; -use arbitrary_custom_types_4::ID as PROGRAM_ID; use trident_client::fuzzing::{anchor_lang, FuzzingError}; pub struct InitializeSnapshot<'info> { pub counter: Option>, @@ -23,7 +22,7 @@ impl<'info> InitializeSnapshot<'info> { .ok_or(FuzzingError::NotEnoughAccounts("counter".to_string()))? .as_ref() .map(|acc| { - if acc.key() != PROGRAM_ID { + if acc.key() != *_program_id { anchor_lang::accounts::account::Account::try_from(acc) .map_err(|_| FuzzingError::CannotDeserializeAccount("counter".to_string())) } else { diff --git a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index ee2f1d14..16e11aaf 100644 --- a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,31 +1,37 @@ -use arbitrary_custom_types_4::entry; -use arbitrary_custom_types_4::ID as PROGRAM_ID; -use fuzz_instructions::arbitrary_custom_types_4_fuzz_instructions::FuzzInstruction; -use fuzz_instructions::arbitrary_custom_types_4_fuzz_instructions::Initialize; -use fuzz_instructions::arbitrary_custom_types_4_fuzz_instructions::Update; +use arbitrary_custom_types_4::entry as entry_arbitrary_custom_types_4; +use arbitrary_custom_types_4::ID as PROGRAM_ID_ARBITRARY_CUSTOM_TYPES_4; +const PROGRAM_NAME_ARBITRARY_CUSTOM_TYPES_4: &str = "arbitrary_custom_types_4"; +use fuzz_instructions::arbitrary_custom_types_4_fuzz_instructions::FuzzInstruction as FuzzInstruction_arbitrary_custom_types_4; use trident_client::fuzzing::*; -mod accounts_snapshots; mod fuzz_instructions; -const PROGRAM_NAME: &str = "arbitrary_custom_types_4"; +// TODO: In case of using file extension for AccountsSnapshots +// uncomment the line below +mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - let update = FuzzInstruction::Update(Update::arbitrary(u)?); - Ok(vec![init, update]) - } -} +impl FuzzDataBuilder for MyFuzzData {} fn main() { loop { - fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: MyFuzzData| { + fuzz_trident!(fuzz_ix: FuzzInstruction_arbitrary_custom_types_4, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program1 = FuzzingProgram::new( + PROGRAM_NAME_ARBITRARY_CUSTOM_TYPES_4, + &PROGRAM_ID_ARBITRARY_CUSTOM_TYPES_4, + processor!(convert_entry!(entry_arbitrary_custom_types_4)) + ); + let mut client = - ProgramTestClientBlocking::new(PROGRAM_NAME, PROGRAM_ID, processor!(convert_entry!(entry))) + ProgramTestClientBlocking::new(&[fuzzing_program1]) .unwrap(); - let _ = fuzz_data.run_with_runtime(PROGRAM_ID, &mut client); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(PROGRAM_ID_ARBITRARY_CUSTOM_TYPES_4, &mut client); }); } } diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 1548b67d..1bf30d76 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,29 +1,37 @@ -use arbitrary_limit_inputs_5::entry; -use arbitrary_limit_inputs_5::ID as PROGRAM_ID; -use fuzz_instructions::arbitrary_limit_inputs_5_fuzz_instructions::FuzzInstruction; -use fuzz_instructions::arbitrary_limit_inputs_5_fuzz_instructions::InitVesting; +use arbitrary_limit_inputs_5::entry as entry_arbitrary_limit_inputs_5; +use arbitrary_limit_inputs_5::ID as PROGRAM_ID_ARBITRARY_LIMIT_INPUTS_5; +const PROGRAM_NAME_ARBITRARY_LIMIT_INPUTS_5: &str = "arbitrary_limit_inputs_5"; +use fuzz_instructions::arbitrary_limit_inputs_5_fuzz_instructions::FuzzInstruction as FuzzInstruction_arbitrary_limit_inputs_5; use trident_client::fuzzing::*; mod fuzz_instructions; -const PROGRAM_NAME: &str = "arbitrary_limit_inputs_5"; +// TODO: In case of using file extension for AccountsSnapshots +// uncomment the line below +// mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init_ix = FuzzInstruction::InitVesting(InitVesting::arbitrary(u)?); - - Ok(vec![init_ix]) - } -} +impl FuzzDataBuilder for MyFuzzData {} fn main() { loop { - fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: MyFuzzData| { + fuzz_trident!(fuzz_ix: FuzzInstruction_arbitrary_limit_inputs_5, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program1 = FuzzingProgram::new( + PROGRAM_NAME_ARBITRARY_LIMIT_INPUTS_5, + &PROGRAM_ID_ARBITRARY_LIMIT_INPUTS_5, + processor!(convert_entry!(entry_arbitrary_limit_inputs_5)) + ); + let mut client = - ProgramTestClientBlocking::new(PROGRAM_NAME, PROGRAM_ID, processor!(convert_entry!(entry))) + ProgramTestClientBlocking::new(&[fuzzing_program1]) .unwrap(); - let _ = fuzz_data.run_with_runtime(PROGRAM_ID, &mut client); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(PROGRAM_ID_ARBITRARY_LIMIT_INPUTS_5, &mut client); }); } } diff --git a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs index 22a852d9..b915b2c5 100644 --- a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs +++ b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs @@ -1,7 +1,5 @@ use anchor_lang::prelude::*; -use hello_world::ID as PROGRAM_ID; use trident_client::fuzzing::{anchor_lang, FuzzingError}; - pub struct InitializeSnapshot<'info> { pub author: Signer<'info>, pub hello_world_account: Option>, @@ -29,7 +27,7 @@ impl<'info> InitializeSnapshot<'info> { ))? .as_ref() .map(|acc| { - if acc.key() != PROGRAM_ID { + if acc.key() != *_program_id { anchor_lang::accounts::account::Account::try_from(acc).map_err(|_| { FuzzingError::CannotDeserializeAccount("hello_world_account".to_string()) }) diff --git a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index c239068c..629b3913 100644 --- a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,29 +1,37 @@ -use fuzz_instructions::hello_world_fuzz_instructions::FuzzInstruction; -use fuzz_instructions::hello_world_fuzz_instructions::Initialize; -use hello_world::entry; -use hello_world::ID as PROGRAM_ID; +use hello_world::entry as entry_hello_world; +use hello_world::ID as PROGRAM_ID_HELLO_WORLD; +const PROGRAM_NAME_HELLO_WORLD: &str = "hello_world"; +use fuzz_instructions::hello_world_fuzz_instructions::FuzzInstruction as FuzzInstruction_hello_world; use trident_client::fuzzing::*; -mod accounts_snapshots; mod fuzz_instructions; -const PROGRAM_NAME: &str = "hello_world"; +// TODO: In case of using file extension for AccountsSnapshots +// uncomment the line below +mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - Ok(vec![init]) - } -} +impl FuzzDataBuilder for MyFuzzData {} fn main() { loop { - fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: MyFuzzData| { + fuzz_trident!(fuzz_ix: FuzzInstruction_hello_world, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program1 = FuzzingProgram::new( + PROGRAM_NAME_HELLO_WORLD, + &PROGRAM_ID_HELLO_WORLD, + processor!(convert_entry!(entry_hello_world)) + ); + let mut client = - ProgramTestClientBlocking::new(PROGRAM_NAME, PROGRAM_ID, processor!(convert_entry!(entry))) + ProgramTestClientBlocking::new(&[fuzzing_program1]) .unwrap(); - let _ = fuzz_data.run_with_runtime(PROGRAM_ID, &mut client); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(PROGRAM_ID_HELLO_WORLD, &mut client); }); } } diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs index 5d93dc8a..7ff899d6 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs @@ -1,6 +1,5 @@ use anchor_lang::prelude::*; use anchor_spl::token::{Mint, Token, TokenAccount}; -use incorrect_integer_arithmetic_3::ID as PROGRAM_ID; use trident_client::fuzzing::{anchor_lang, FuzzingError}; pub struct InitVestingSnapshot<'info> { pub sender: Signer<'info>, @@ -55,7 +54,7 @@ impl<'info> InitVestingSnapshot<'info> { .ok_or(FuzzingError::NotEnoughAccounts("escrow".to_string()))? .as_ref() .map(|acc| { - if acc.key() != PROGRAM_ID { + if acc.key() != *_program_id { anchor_lang::accounts::account::Account::try_from(acc) .map_err(|_| FuzzingError::CannotDeserializeAccount("escrow".to_string())) } else { @@ -148,7 +147,7 @@ impl<'info> WithdrawUnlockedSnapshot<'info> { .ok_or(FuzzingError::NotEnoughAccounts("escrow".to_string()))? .as_ref() .map(|acc| { - if acc.key() != PROGRAM_ID { + if acc.key() != *_program_id { anchor_lang::accounts::account::Account::try_from(acc) .map_err(|_| FuzzingError::CannotDeserializeAccount("escrow".to_string())) } else { diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 13704dbc..bd8763b4 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,30 +1,37 @@ -use fuzz_instructions::incorrect_integer_arithmetic_3_fuzz_instructions::FuzzInstruction; -use fuzz_instructions::incorrect_integer_arithmetic_3_fuzz_instructions::InitVesting; -use incorrect_integer_arithmetic_3::entry; -use incorrect_integer_arithmetic_3::ID as PROGRAM_ID; +use incorrect_integer_arithmetic_3::entry as entry_incorrect_integer_arithmetic_3; +use incorrect_integer_arithmetic_3::ID as PROGRAM_ID_INCORRECT_INTEGER_ARITHMETIC_3; +const PROGRAM_NAME_INCORRECT_INTEGER_ARITHMETIC_3: &str = "incorrect_integer_arithmetic_3"; +use fuzz_instructions::incorrect_integer_arithmetic_3_fuzz_instructions::FuzzInstruction as FuzzInstruction_incorrect_integer_arithmetic_3; use trident_client::fuzzing::*; -mod accounts_snapshots; mod fuzz_instructions; -const PROGRAM_NAME: &str = "incorrect_integer_arithmetic_3"; +// TODO: In case of using file extension for AccountsSnapshots +// uncomment the line below +mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init_ix = FuzzInstruction::InitVesting(InitVesting::arbitrary(u)?); - - Ok(vec![init_ix]) - } -} +impl FuzzDataBuilder for MyFuzzData {} fn main() { loop { - fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: MyFuzzData| { + fuzz_trident!(fuzz_ix: FuzzInstruction_incorrect_integer_arithmetic_3, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program1 = FuzzingProgram::new( + PROGRAM_NAME_INCORRECT_INTEGER_ARITHMETIC_3, + &PROGRAM_ID_INCORRECT_INTEGER_ARITHMETIC_3, + processor!(convert_entry!(entry_incorrect_integer_arithmetic_3)) + ); + let mut client = - ProgramTestClientBlocking::new(PROGRAM_NAME, PROGRAM_ID, processor!(convert_entry!(entry))) + ProgramTestClientBlocking::new(&[fuzzing_program1]) .unwrap(); - let _ = fuzz_data.run_with_runtime(PROGRAM_ID, &mut client); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(PROGRAM_ID_INCORRECT_INTEGER_ARITHMETIC_3, &mut client); }); } } diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs index 48c6f844..ec363fdd 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs @@ -1,5 +1,4 @@ use anchor_lang::prelude::*; -use incorrect_ix_sequence_1::ID as PROGRAM_ID; use trident_client::fuzzing::{anchor_lang, FuzzingError}; pub struct InitializeSnapshot<'info> { pub author: Signer<'info>, @@ -42,7 +41,7 @@ impl<'info> InitializeSnapshot<'info> { .ok_or(FuzzingError::NotEnoughAccounts("state".to_string()))? .as_ref() .map(|acc| { - if acc.key() != PROGRAM_ID { + if acc.key() != *_program_id { anchor_lang::accounts::account::Account::try_from(acc) .map_err(|_| FuzzingError::CannotDeserializeAccount("state".to_string())) } else { @@ -91,7 +90,7 @@ impl<'info> RegisterSnapshot<'info> { .ok_or(FuzzingError::NotEnoughAccounts("project".to_string()))? .as_ref() .map(|acc| { - if acc.key() != PROGRAM_ID { + if acc.key() != *_program_id { anchor_lang::accounts::account::Account::try_from(acc) .map_err(|_| FuzzingError::CannotDeserializeAccount("project".to_string())) } else { diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index a0b6b879..f2b692e5 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,29 +1,37 @@ -use fuzz_instructions::incorrect_ix_sequence_1_fuzz_instructions::FuzzInstruction; -use fuzz_instructions::incorrect_ix_sequence_1_fuzz_instructions::Initialize; -use incorrect_ix_sequence_1::entry; -use incorrect_ix_sequence_1::ID as PROGRAM_ID; +use incorrect_ix_sequence_1::entry as entry_incorrect_ix_sequence_1; +use incorrect_ix_sequence_1::ID as PROGRAM_ID_INCORRECT_IX_SEQUENCE_1; +const PROGRAM_NAME_INCORRECT_IX_SEQUENCE_1: &str = "incorrect_ix_sequence_1"; +use fuzz_instructions::incorrect_ix_sequence_1_fuzz_instructions::FuzzInstruction as FuzzInstruction_incorrect_ix_sequence_1; use trident_client::fuzzing::*; -mod accounts_snapshots; mod fuzz_instructions; -const PROGRAM_NAME: &str = "incorrect_ix_sequence_1"; +// TODO: In case of using file extension for AccountsSnapshots +// uncomment the line below +mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init_ix = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - Ok(vec![init_ix]) - } -} +impl FuzzDataBuilder for MyFuzzData {} fn main() { loop { - fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: MyFuzzData| { + fuzz_trident!(fuzz_ix: FuzzInstruction_incorrect_ix_sequence_1, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program1 = FuzzingProgram::new( + PROGRAM_NAME_INCORRECT_IX_SEQUENCE_1, + &PROGRAM_ID_INCORRECT_IX_SEQUENCE_1, + processor!(convert_entry!(entry_incorrect_ix_sequence_1)) + ); + let mut client = - ProgramTestClientBlocking::new(PROGRAM_NAME, PROGRAM_ID, processor!(convert_entry!(entry))) + ProgramTestClientBlocking::new(&[fuzzing_program1]) .unwrap(); - let _ = fuzz_data.run_with_runtime(PROGRAM_ID, &mut client); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(PROGRAM_ID_INCORRECT_IX_SEQUENCE_1, &mut client); }); } } diff --git a/examples/fuzz-tests/simple-cpi-7/.gitignore b/examples/fuzz-tests/simple-cpi-6/.gitignore similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/.gitignore rename to examples/fuzz-tests/simple-cpi-6/.gitignore diff --git a/examples/fuzz-tests/simple-cpi-7/.prettierignore b/examples/fuzz-tests/simple-cpi-6/.prettierignore similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/.prettierignore rename to examples/fuzz-tests/simple-cpi-6/.prettierignore diff --git a/examples/fuzz-tests/simple-cpi-7/Anchor.toml b/examples/fuzz-tests/simple-cpi-6/Anchor.toml similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/Anchor.toml rename to examples/fuzz-tests/simple-cpi-6/Anchor.toml diff --git a/examples/fuzz-tests/simple-cpi-7/Cargo.lock b/examples/fuzz-tests/simple-cpi-6/Cargo.lock similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/Cargo.lock rename to examples/fuzz-tests/simple-cpi-6/Cargo.lock diff --git a/examples/fuzz-tests/simple-cpi-7/Cargo.toml b/examples/fuzz-tests/simple-cpi-6/Cargo.toml similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/Cargo.toml rename to examples/fuzz-tests/simple-cpi-6/Cargo.toml diff --git a/examples/fuzz-tests/simple-cpi-7/Trident.toml b/examples/fuzz-tests/simple-cpi-6/Trident.toml similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/Trident.toml rename to examples/fuzz-tests/simple-cpi-6/Trident.toml diff --git a/examples/fuzz-tests/simple-cpi-7/migrations/deploy.ts b/examples/fuzz-tests/simple-cpi-6/migrations/deploy.ts similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/migrations/deploy.ts rename to examples/fuzz-tests/simple-cpi-6/migrations/deploy.ts diff --git a/examples/fuzz-tests/simple-cpi-7/package.json b/examples/fuzz-tests/simple-cpi-6/package.json similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/package.json rename to examples/fuzz-tests/simple-cpi-6/package.json diff --git a/examples/fuzz-tests/simple-cpi-7/programs/callee/Cargo.toml b/examples/fuzz-tests/simple-cpi-6/programs/callee/Cargo.toml similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/programs/callee/Cargo.toml rename to examples/fuzz-tests/simple-cpi-6/programs/callee/Cargo.toml diff --git a/examples/fuzz-tests/simple-cpi-7/programs/callee/Xargo.toml b/examples/fuzz-tests/simple-cpi-6/programs/callee/Xargo.toml similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/programs/callee/Xargo.toml rename to examples/fuzz-tests/simple-cpi-6/programs/callee/Xargo.toml diff --git a/examples/fuzz-tests/simple-cpi-7/programs/callee/src/lib.rs b/examples/fuzz-tests/simple-cpi-6/programs/callee/src/lib.rs similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/programs/callee/src/lib.rs rename to examples/fuzz-tests/simple-cpi-6/programs/callee/src/lib.rs diff --git a/examples/fuzz-tests/simple-cpi-7/programs/caller/Cargo.toml b/examples/fuzz-tests/simple-cpi-6/programs/caller/Cargo.toml similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/programs/caller/Cargo.toml rename to examples/fuzz-tests/simple-cpi-6/programs/caller/Cargo.toml diff --git a/examples/fuzz-tests/simple-cpi-7/programs/caller/Xargo.toml b/examples/fuzz-tests/simple-cpi-6/programs/caller/Xargo.toml similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/programs/caller/Xargo.toml rename to examples/fuzz-tests/simple-cpi-6/programs/caller/Xargo.toml diff --git a/examples/fuzz-tests/simple-cpi-7/programs/caller/src/lib.rs b/examples/fuzz-tests/simple-cpi-6/programs/caller/src/lib.rs similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/programs/caller/src/lib.rs rename to examples/fuzz-tests/simple-cpi-6/programs/caller/src/lib.rs diff --git a/examples/fuzz-tests/simple-cpi-7/tests/simple-cpi-7.ts b/examples/fuzz-tests/simple-cpi-6/tests/simple-cpi-7.ts similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/tests/simple-cpi-7.ts rename to examples/fuzz-tests/simple-cpi-6/tests/simple-cpi-7.ts diff --git a/examples/fuzz-tests/simple-cpi-7/trident-genesis/caller.so b/examples/fuzz-tests/simple-cpi-6/trident-genesis/caller.so similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/trident-genesis/caller.so rename to examples/fuzz-tests/simple-cpi-6/trident-genesis/caller.so diff --git a/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/Cargo.toml similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/Cargo.toml rename to examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/Cargo.toml diff --git a/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs rename to examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs diff --git a/examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs rename to examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs diff --git a/examples/fuzz-tests/simple-cpi-7/tsconfig.json b/examples/fuzz-tests/simple-cpi-6/tsconfig.json similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/tsconfig.json rename to examples/fuzz-tests/simple-cpi-6/tsconfig.json diff --git a/examples/fuzz-tests/simple-cpi-7/yarn.lock b/examples/fuzz-tests/simple-cpi-6/yarn.lock similarity index 100% rename from examples/fuzz-tests/simple-cpi-7/yarn.lock rename to examples/fuzz-tests/simple-cpi-6/yarn.lock diff --git a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs index cc8aef74..2690db9c 100644 --- a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs +++ b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs @@ -1,6 +1,5 @@ use anchor_lang::prelude::*; use trident_client::fuzzing::{anchor_lang, FuzzingError}; -use unauthorized_access_2::ID as PROGRAM_ID; pub struct InitializeSnapshot<'info> { pub author: Signer<'info>, pub escrow: Option>, @@ -31,7 +30,7 @@ impl<'info> InitializeSnapshot<'info> { .ok_or(FuzzingError::NotEnoughAccounts("escrow".to_string()))? .as_ref() .map(|acc| { - if acc.key() != PROGRAM_ID { + if acc.key() != *_program_id { anchor_lang::accounts::account::Account::try_from(acc) .map_err(|_| FuzzingError::CannotDeserializeAccount("escrow".to_string())) } else { @@ -78,7 +77,7 @@ impl<'info> WithdrawSnapshot<'info> { .ok_or(FuzzingError::NotEnoughAccounts("escrow".to_string()))? .as_ref() .map(|acc| { - if acc.key() != PROGRAM_ID { + if acc.key() != *_program_id { anchor_lang::accounts::account::Account::try_from(acc) .map_err(|_| FuzzingError::CannotDeserializeAccount("escrow".to_string())) } else { diff --git a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index f9189619..8eb7341e 100644 --- a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,30 +1,37 @@ -use fuzz_instructions::unauthorized_access_2_fuzz_instructions::FuzzInstruction; -use fuzz_instructions::unauthorized_access_2_fuzz_instructions::Initialize; +use unauthorized_access_2::entry as entry_unauthorized_access_2; +use unauthorized_access_2::ID as PROGRAM_ID_UNAUTHORIZED_ACCESS_2; +const PROGRAM_NAME_UNAUTHORIZED_ACCESS_2: &str = "unauthorized_access_2"; +use fuzz_instructions::unauthorized_access_2_fuzz_instructions::FuzzInstruction as FuzzInstruction_unauthorized_access_2; use trident_client::fuzzing::*; -use unauthorized_access_2::entry; -use unauthorized_access_2::ID as PROGRAM_ID; -mod accounts_snapshots; mod fuzz_instructions; -const PROGRAM_NAME: &str = "unauthorized_access_2"; +// TODO: In case of using file extension for AccountsSnapshots +// uncomment the line below +mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init_ix = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - - Ok(vec![init_ix]) - } -} +impl FuzzDataBuilder for MyFuzzData {} fn main() { loop { - fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: MyFuzzData| { + fuzz_trident!(fuzz_ix: FuzzInstruction_unauthorized_access_2, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program1 = FuzzingProgram::new( + PROGRAM_NAME_UNAUTHORIZED_ACCESS_2, + &PROGRAM_ID_UNAUTHORIZED_ACCESS_2, + processor!(convert_entry!(entry_unauthorized_access_2)) + ); + let mut client = - ProgramTestClientBlocking::new(PROGRAM_NAME, PROGRAM_ID, processor!(convert_entry!(entry))) + ProgramTestClientBlocking::new(&[fuzzing_program1]) .unwrap(); - let _ = fuzz_data.run_with_runtime(PROGRAM_ID, &mut client); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(PROGRAM_ID_UNAUTHORIZED_ACCESS_2, &mut client); }); } } diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/Cargo.lock b/examples/fuzz-tests/unchecked-arithmetic-0/Cargo.lock index c7ea855f..4fee64df 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/Cargo.lock +++ b/examples/fuzz-tests/unchecked-arithmetic-0/Cargo.lock @@ -266,19 +266,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "anchor-spl" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c4fd6e43b2ca6220d2ef1641539e678bfc31b6cc393cf892b373b5997b6a39a" -dependencies = [ - "anchor-lang", - "solana-program", - "spl-associated-token-account 2.3.0", - "spl-token", - "spl-token-2022 0.9.0", -] - [[package]] name = "anchor-syn" version = "0.29.0" @@ -1127,6 +1114,15 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -4034,9 +4030,9 @@ dependencies = [ "solana-config-program", "solana-sdk", "spl-token", - "spl-token-2022 1.0.0", - "spl-token-group-interface 0.1.0", - "spl-token-metadata-interface 0.2.0", + "spl-token-2022", + "spl-token-group-interface", + "spl-token-metadata-interface", "thiserror", "zstd", ] @@ -4752,7 +4748,7 @@ dependencies = [ "solana-sdk", "solana-transaction-status", "solana-version", - "spl-token-2022 1.0.0", + "spl-token-2022", "thiserror", ] @@ -5055,10 +5051,10 @@ dependencies = [ "serde_json", "solana-account-decoder", "solana-sdk", - "spl-associated-token-account 2.3.0", + "spl-associated-token-account", "spl-memo", "spl-token", - "spl-token-2022 1.0.0", + "spl-token-2022", "thiserror", ] @@ -5230,23 +5226,7 @@ dependencies = [ "num-traits", "solana-program", "spl-token", - "spl-token-2022 1.0.0", - "thiserror", -] - -[[package]] -name = "spl-associated-token-account" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e688554bac5838217ffd1fab7845c573ff106b6336bf7d290db7c98d5a8efd" -dependencies = [ - "assert_matches", - "borsh 1.5.0", - "num-derive 0.4.2", - "num-traits", - "solana-program", - "spl-token", - "spl-token-2022 3.0.2", + "spl-token-2022", "thiserror", ] @@ -5258,18 +5238,7 @@ checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator-derive 0.1.2", -] - -[[package]] -name = "spl-discriminator" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator-derive 0.2.0", + "spl-discriminator-derive", ] [[package]] @@ -5279,18 +5248,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", - "spl-discriminator-syn 0.1.2", - "syn 2.0.60", -] - -[[package]] -name = "spl-discriminator-derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" -dependencies = [ - "quote", - "spl-discriminator-syn 0.2.0", + "spl-discriminator-syn", "syn 2.0.60", ] @@ -5307,19 +5265,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "spl-discriminator-syn" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.60", - "thiserror", -] - [[package]] name = "spl-memo" version = "4.0.0" @@ -5339,20 +5284,7 @@ dependencies = [ "bytemuck", "solana-program", "solana-zk-token-sdk", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-pod" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" -dependencies = [ - "borsh 1.5.0", - "bytemuck", - "solana-program", - "solana-zk-token-sdk", - "spl-program-error 0.4.1", + "spl-program-error", ] [[package]] @@ -5364,20 +5296,7 @@ dependencies = [ "num-derive 0.4.2", "num-traits", "solana-program", - "spl-program-error-derive 0.3.2", - "thiserror", -] - -[[package]] -name = "spl-program-error" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49065093ea91f57b9b2bd81493ff705e2ad4e64507a07dbc02b085778e02770e" -dependencies = [ - "num-derive 0.4.2", - "num-traits", - "solana-program", - "spl-program-error-derive 0.4.1", + "spl-program-error-derive", "thiserror", ] @@ -5393,32 +5312,6 @@ dependencies = [ "syn 2.0.60", ] -[[package]] -name = "spl-program-error-derive" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" -dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.60", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062e148d3eab7b165582757453632ffeef490c02c86a48bfdb4988f63eefb3b9" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", -] - [[package]] name = "spl-tlv-account-resolution" version = "0.5.2" @@ -5427,24 +5320,10 @@ checksum = "56f335787add7fa711819f9e7c573f8145a5358a709446fe2d24bf2a88117c90" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-tlv-account-resolution" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", - "spl-type-length-value 0.4.3", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", ] [[package]] @@ -5462,28 +5341,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "spl-token-2022" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4abf34a65ba420584a0c35f3903f8d727d1f13ababbdc3f714c6b065a686e86" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive 0.4.2", - "num-traits", - "num_enum 0.7.2", - "solana-program", - "solana-zk-token-sdk", - "spl-memo", - "spl-pod 0.1.1", - "spl-token", - "spl-token-metadata-interface 0.2.0", - "spl-transfer-hook-interface 0.3.0", - "spl-type-length-value 0.3.1", - "thiserror", -] - [[package]] name = "spl-token-2022" version = "1.0.0" @@ -5499,36 +5356,12 @@ dependencies = [ "solana-security-txt", "solana-zk-token-sdk", "spl-memo", - "spl-pod 0.1.1", + "spl-pod", "spl-token", - "spl-token-group-interface 0.1.0", - "spl-token-metadata-interface 0.2.0", - "spl-transfer-hook-interface 0.4.1", - "spl-type-length-value 0.3.1", - "thiserror", -] - -[[package]] -name = "spl-token-2022" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive 0.4.2", - "num-traits", - "num_enum 0.7.2", - "solana-program", - "solana-security-txt", - "solana-zk-token-sdk", - "spl-memo", - "spl-pod 0.2.2", - "spl-token", - "spl-token-group-interface 0.2.3", - "spl-token-metadata-interface 0.3.3", - "spl-transfer-hook-interface 0.6.3", - "spl-type-length-value 0.4.3", + "spl-token-group-interface", + "spl-token-metadata-interface", + "spl-transfer-hook-interface", + "spl-type-length-value", "thiserror", ] @@ -5540,22 +5373,9 @@ checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-token-group-interface" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", + "spl-discriminator", + "spl-pod", + "spl-program-error", ] [[package]] @@ -5566,40 +5386,10 @@ checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" dependencies = [ "borsh 0.10.3", "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-token-metadata-interface" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" -dependencies = [ - "borsh 1.5.0", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", - "spl-type-length-value 0.4.3", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051d31803f873cabe71aec3c1b849f35248beae5d19a347d93a5c9cccc5d5a9b" -dependencies = [ - "arrayref", - "bytemuck", - "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-tlv-account-resolution 0.4.0", - "spl-type-length-value 0.3.1", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", ] [[package]] @@ -5611,27 +5401,11 @@ dependencies = [ "arrayref", "bytemuck", "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", - "spl-tlv-account-resolution 0.5.2", - "spl-type-length-value 0.3.1", -] - -[[package]] -name = "spl-transfer-hook-interface" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" -dependencies = [ - "arrayref", - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", - "spl-tlv-account-resolution 0.6.3", - "spl-type-length-value 0.4.3", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-tlv-account-resolution", + "spl-type-length-value", ] [[package]] @@ -5642,22 +5416,9 @@ checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator 0.1.1", - "spl-pod 0.1.1", - "spl-program-error 0.3.1", -] - -[[package]] -name = "spl-type-length-value" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" -dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator 0.2.2", - "spl-pod 0.2.2", - "spl-program-error 0.4.1", + "spl-discriminator", + "spl-pod", + "spl-program-error", ] [[package]] @@ -6230,7 +5991,6 @@ version = "0.6.0" dependencies = [ "anchor-client", "anchor-lang", - "anchor-spl", "anchor-syn", "anyhow", "arbitrary", @@ -6259,12 +6019,13 @@ dependencies = [ "solana-program-test", "solana-sdk", "solana-transaction-status", - "spl-associated-token-account 3.0.2", + "spl-associated-token-account", "spl-token", "syn 1.0.109", "thiserror", "tokio", "toml", + "trident-derive-accounts-snapshots", "trident-derive-displayix", "trident-derive-fuzz-deserialize", "trident-derive-fuzz-test-executor", @@ -6272,6 +6033,16 @@ dependencies = [ "trident-test", ] +[[package]] +name = "trident-derive-accounts-snapshots" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "trident-fuzz", +] + [[package]] name = "trident-derive-displayix" version = "0.0.1" @@ -6306,6 +6077,7 @@ dependencies = [ "anchor-lang", "anchor-syn", "arbitrary", + "convert_case", "heck 0.4.1", "prettytable", "proc-macro2", diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs index 2042ddd2..b53ed2ad 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs +++ b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/accounts_snapshots.rs @@ -1,6 +1,5 @@ use anchor_lang::prelude::*; use trident_client::fuzzing::{anchor_lang, FuzzingError}; -use unchecked_arithmetic_0::ID as PROGRAM_ID; pub struct InitializeSnapshot<'info> { pub counter: Option>, pub user: Signer<'info>, @@ -23,7 +22,7 @@ impl<'info> InitializeSnapshot<'info> { .ok_or(FuzzingError::NotEnoughAccounts("counter".to_string()))? .as_ref() .map(|acc| { - if acc.key() != PROGRAM_ID { + if acc.key() != *_program_id { anchor_lang::accounts::account::Account::try_from(acc) .map_err(|_| FuzzingError::CannotDeserializeAccount("counter".to_string())) } else { diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 29b1c0ca..1d5fb963 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,29 +1,37 @@ -use fuzz_instructions::unchecked_arithmetic_0_fuzz_instructions::FuzzInstruction; -use fuzz_instructions::unchecked_arithmetic_0_fuzz_instructions::Initialize; +use unchecked_arithmetic_0::entry as entry_unchecked_arithmetic_0; +use unchecked_arithmetic_0::ID as PROGRAM_ID_UNCHECKED_ARITHMETIC_0; +const PROGRAM_NAME_UNCHECKED_ARITHMETIC_0: &str = "unchecked_arithmetic_0"; +use fuzz_instructions::unchecked_arithmetic_0_fuzz_instructions::FuzzInstruction as FuzzInstruction_unchecked_arithmetic_0; use trident_client::fuzzing::*; -use unchecked_arithmetic_0::entry; -use unchecked_arithmetic_0::ID as PROGRAM_ID; -mod accounts_snapshots; mod fuzz_instructions; -const PROGRAM_NAME: &str = "unchecked_arithmetic_0"; +// TODO: In case of using file extension for AccountsSnapshots +// uncomment the line below +mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - Ok(vec![init]) - } -} +impl FuzzDataBuilder for MyFuzzData {} fn main() { loop { - fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: MyFuzzData| { + fuzz_trident!(fuzz_ix: FuzzInstruction_unchecked_arithmetic_0, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program1 = FuzzingProgram::new( + PROGRAM_NAME_UNCHECKED_ARITHMETIC_0, + &PROGRAM_ID_UNCHECKED_ARITHMETIC_0, + processor!(convert_entry!(entry_unchecked_arithmetic_0)) + ); + let mut client = - ProgramTestClientBlocking::new(PROGRAM_NAME, PROGRAM_ID, processor!(convert_entry!(entry))) + ProgramTestClientBlocking::new(&[fuzzing_program1]) .unwrap(); - let _ = fuzz_data.run_with_runtime(PROGRAM_ID, &mut client); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(PROGRAM_ID_UNCHECKED_ARITHMETIC_0, &mut client); }); } } From 762d4cc0345e05cdcaab50de49846766276cd23a Mon Sep 17 00:00:00 2001 From: lukacan Date: Mon, 15 Jul 2024 00:32:45 +0200 Subject: [PATCH 4/5] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Remove=20turnstile=20i?= =?UTF-8?q?ntegration=20test=20example=20pipeline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/run_examples.yml | 18 +----------------- .github/workflows/run_fuzz_example.yml | 4 ++-- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/.github/workflows/run_examples.yml b/.github/workflows/run_examples.yml index b48defd2..7a5eb634 100644 --- a/.github/workflows/run_examples.yml +++ b/.github/workflows/run_examples.yml @@ -4,7 +4,7 @@ on: push: branches: [master] -name: Test Escrow and Turnstile +name: Test Escrow env: SOLANA_CLI_VERSION: 1.18.12 @@ -27,19 +27,3 @@ jobs: - name: Test Escrow working-directory: examples/integration-tests/escrow run: cargo run --manifest-path ../../../Cargo.toml test - test_turnstile: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - - uses: ./.github/actions/setup-rust/ - - uses: ./.github/actions/setup-solana/ - - uses: ./.github/actions/setup-anchor/ - id: rust-setup - - uses: Swatinem/rust-cache@v2 - name: Cache Rust and it's packages - - name: Build Turnstile - working-directory: examples/integration-tests/turnstile - run: anchor build - - name: Test Turnstile - working-directory: examples/integration-tests/turnstile - run: cargo run --manifest-path ../../../Cargo.toml test diff --git a/.github/workflows/run_fuzz_example.yml b/.github/workflows/run_fuzz_example.yml index dfb3d6fd..64c82a52 100644 --- a/.github/workflows/run_fuzz_example.yml +++ b/.github/workflows/run_fuzz_example.yml @@ -9,7 +9,7 @@ env: HONGGFUZZ_VERSION: 0.5.56 jobs: - simple-cpi-7: + simple-cpi-6: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 @@ -30,7 +30,7 @@ jobs: id: rust-setup - name: Test Fuzz - working-directory: examples/fuzz-tests/simple-cpi-7 + working-directory: examples/fuzz-tests/simple-cpi-6 run: trident fuzz run fuzz_0 arbitrary-limit-inputs-5: runs-on: ubuntu-20.04 From 0c8e18a41526b338e4d08efe520ba31cfcccb6fb Mon Sep 17 00:00:00 2001 From: lukacan Date: Mon, 15 Jul 2024 22:01:40 +0200 Subject: [PATCH 5/5] =?UTF-8?q?=E2=9C=85=20Update=20examples=20,=20update?= =?UTF-8?q?=20changelog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../src/templates/trident-tests/test_fuzz.rs | 2 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 12 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 12 +- examples/fuzz-tests/cpi-metaplex-7/.gitignore | 8 + .../fuzz-tests/cpi-metaplex-7/.prettierignore | 7 + .../fuzz-tests/cpi-metaplex-7/Anchor.toml | 24 + examples/fuzz-tests/cpi-metaplex-7/Cargo.lock | 7007 +++++++++++++++++ examples/fuzz-tests/cpi-metaplex-7/Cargo.toml | 12 + .../fuzz-tests/cpi-metaplex-7/Trident.toml | 41 + .../cpi-metaplex-7/migrations/deploy.ts | 12 + .../fuzz-tests/cpi-metaplex-7/package.json | 21 + .../programs/cpi-metaplex-7/Cargo.toml | 23 + .../programs/cpi-metaplex-7/Xargo.toml | 2 + .../programs/cpi-metaplex-7/src/lib.rs | 106 + .../cpi-metaplex-7/tests/cpi-metaplex-7.ts | 66 + .../metaplex-token-metadata.so | Bin 0 -> 793904 bytes .../trident-tests/fuzz_tests/Cargo.toml | 22 + .../fuzz_tests/fuzz_0/fuzz_instructions.rs | 90 + .../fuzz_tests/fuzz_0/test_fuzz.rs | 60 + .../fuzz-tests/cpi-metaplex-7/tsconfig.json | 10 + examples/fuzz-tests/cpi-metaplex-7/yarn.lock | 1363 ++++ .../fuzz_tests/fuzz_0/test_fuzz.rs | 10 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 12 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 11 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 4 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 11 +- .../fuzz_tests/fuzz_0/test_fuzz.rs | 10 +- 28 files changed, 8950 insertions(+), 9 deletions(-) create mode 100644 examples/fuzz-tests/cpi-metaplex-7/.gitignore create mode 100644 examples/fuzz-tests/cpi-metaplex-7/.prettierignore create mode 100644 examples/fuzz-tests/cpi-metaplex-7/Anchor.toml create mode 100644 examples/fuzz-tests/cpi-metaplex-7/Cargo.lock create mode 100644 examples/fuzz-tests/cpi-metaplex-7/Cargo.toml create mode 100644 examples/fuzz-tests/cpi-metaplex-7/Trident.toml create mode 100644 examples/fuzz-tests/cpi-metaplex-7/migrations/deploy.ts create mode 100644 examples/fuzz-tests/cpi-metaplex-7/package.json create mode 100644 examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Cargo.toml create mode 100644 examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Xargo.toml create mode 100644 examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/src/lib.rs create mode 100644 examples/fuzz-tests/cpi-metaplex-7/tests/cpi-metaplex-7.ts create mode 100644 examples/fuzz-tests/cpi-metaplex-7/trident-genesis/metaplex-token-metadata.so create mode 100644 examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/Cargo.toml create mode 100644 examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs create mode 100644 examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs create mode 100644 examples/fuzz-tests/cpi-metaplex-7/tsconfig.json create mode 100644 examples/fuzz-tests/cpi-metaplex-7/yarn.lock diff --git a/CHANGELOG.md b/CHANGELOG.md index 62ab5303..f972fa76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 incremented upon a breaking change and the patch version will be incremented for features. ## [dev] - Unreleased +- feat/ add Support for CPI ([182](https://github.com/Ackee-Blockchain/trident/pull/182)) - feat/ add option to initialize Trident with Macro/File (for Snapshots) option based on preference ([179](https://github.com/Ackee-Blockchain/trident/pull/179)) - del/remove localnet subcommand ([178](https://github.com/Ackee-Blockchain/trident/pull/178)) - feat/create AccountsSnapshots derive macro for Snapshots creation ([#177](https://github.com/Ackee-Blockchain/trident/pull/177)) diff --git a/crates/client/src/templates/trident-tests/test_fuzz.rs b/crates/client/src/templates/trident-tests/test_fuzz.rs index c22d93fb..923a9ca7 100644 --- a/crates/client/src/templates/trident-tests/test_fuzz.rs +++ b/crates/client/src/templates/trident-tests/test_fuzz.rs @@ -16,7 +16,7 @@ fn main() { // Specify programs you want to include in genesis // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. // `entry_fn`` example: processor!(convert_entry!(program_entry)) - let fuzzing_program1 = FuzzingProgram::new(todo!(),todo!(),todo!()); + let fuzzing_program1 = FuzzingProgram::new(todo!(),todo!(),processor!(convert_entry!(todo!()))); let mut client = ProgramTestClientBlocking::new(&[todo!()]) diff --git a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 16e11aaf..6d5b9c74 100644 --- a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -2,6 +2,8 @@ use arbitrary_custom_types_4::entry as entry_arbitrary_custom_types_4; use arbitrary_custom_types_4::ID as PROGRAM_ID_ARBITRARY_CUSTOM_TYPES_4; const PROGRAM_NAME_ARBITRARY_CUSTOM_TYPES_4: &str = "arbitrary_custom_types_4"; use fuzz_instructions::arbitrary_custom_types_4_fuzz_instructions::FuzzInstruction as FuzzInstruction_arbitrary_custom_types_4; +use fuzz_instructions::arbitrary_custom_types_4_fuzz_instructions::Initialize; +use fuzz_instructions::arbitrary_custom_types_4_fuzz_instructions::Update; use trident_client::fuzzing::*; mod fuzz_instructions; @@ -11,7 +13,15 @@ mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData {} +impl FuzzDataBuilder for MyFuzzData { + fn pre_ixs( + u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + let init = FuzzInstruction_arbitrary_custom_types_4::Initialize(Initialize::arbitrary(u)?); + let update = FuzzInstruction_arbitrary_custom_types_4::Update(Update::arbitrary(u)?); + Ok(vec![init, update]) + } +} fn main() { loop { diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 1bf30d76..7df50c2d 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -2,6 +2,7 @@ use arbitrary_limit_inputs_5::entry as entry_arbitrary_limit_inputs_5; use arbitrary_limit_inputs_5::ID as PROGRAM_ID_ARBITRARY_LIMIT_INPUTS_5; const PROGRAM_NAME_ARBITRARY_LIMIT_INPUTS_5: &str = "arbitrary_limit_inputs_5"; use fuzz_instructions::arbitrary_limit_inputs_5_fuzz_instructions::FuzzInstruction as FuzzInstruction_arbitrary_limit_inputs_5; +use fuzz_instructions::arbitrary_limit_inputs_5_fuzz_instructions::InitVesting; use trident_client::fuzzing::*; mod fuzz_instructions; @@ -11,7 +12,16 @@ mod fuzz_instructions; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData {} +impl FuzzDataBuilder for MyFuzzData { + fn pre_ixs( + u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + let init_ix = + FuzzInstruction_arbitrary_limit_inputs_5::InitVesting(InitVesting::arbitrary(u)?); + + Ok(vec![init_ix]) + } +} fn main() { loop { diff --git a/examples/fuzz-tests/cpi-metaplex-7/.gitignore b/examples/fuzz-tests/cpi-metaplex-7/.gitignore new file mode 100644 index 00000000..28be1fa0 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/.gitignore @@ -0,0 +1,8 @@ +.anchor +.DS_Store +target +**/*.rs.bk +node_modules +test-ledger +.yarn +trident-tests/fuzz_tests/fuzzing/hfuzz_target diff --git a/examples/fuzz-tests/cpi-metaplex-7/.prettierignore b/examples/fuzz-tests/cpi-metaplex-7/.prettierignore new file mode 100644 index 00000000..41425834 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/.prettierignore @@ -0,0 +1,7 @@ +.anchor +.DS_Store +target +node_modules +dist +build +test-ledger diff --git a/examples/fuzz-tests/cpi-metaplex-7/Anchor.toml b/examples/fuzz-tests/cpi-metaplex-7/Anchor.toml new file mode 100644 index 00000000..1cedce83 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/Anchor.toml @@ -0,0 +1,24 @@ +[toolchain] + +[features] +resolution = true +skip-lint = false + +[programs.localnet] +cpi_metaplex_7 = "3XtULmXDGS867VbBXiPkjYr4EMjytGW8X12F6BS23Zcw" + +[registry] +url = "https://api.apr.dev" + +[provider] +cluster = "Localnet" +wallet = "~/.config/solana/id.json" + +[scripts] +test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" + + +# include metadata program in genesis +[[test.genesis]] +address = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" +program = "trident-genesis/metaplex-token-metadata.so" diff --git a/examples/fuzz-tests/cpi-metaplex-7/Cargo.lock b/examples/fuzz-tests/cpi-metaplex-7/Cargo.lock new file mode 100644 index 00000000..bc62e2d2 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/Cargo.lock @@ -0,0 +1,7007 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aead" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +dependencies = [ + "generic-array", +] + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", + "opaque-debug", +] + +[[package]] +name = "aes-gcm-siv" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom 0.2.15", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "anchor-attribute-access-control" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47fe28365b33e8334dd70ae2f34a43892363012fe239cf37d2ee91693575b1f8" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c288d496168268d198d9b53ee9f4f9d260a55ba4df9877ea1d4486ad6109e0f" +dependencies = [ + "anchor-syn", + "bs58 0.5.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-constant" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b77b6948d0eeaaa129ce79eea5bbbb9937375a9241d909ca8fb9e006bb6e90" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d20bb569c5a557c86101b944721d865e1fd0a4c67c381d31a44a84f07f84828" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cebd8d0671a3a9dc3160c48598d652c34c77de6be4d44345b8b514323284d57" +dependencies = [ + "anchor-syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efb2a5eb0860e661ab31aff7bb5e0288357b176380e985bade4ccb395981b42d" +dependencies = [ + "anchor-lang-idl", + "anchor-syn", + "anyhow", + "bs58 0.5.1", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "anchor-client" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b4397af9b7d6919df3342210d897c0ffda1a31d052abc8eee3e6035ee71567" +dependencies = [ + "anchor-lang", + "anyhow", + "futures", + "regex", + "serde", + "solana-account-decoder", + "solana-client", + "solana-sdk", + "thiserror", + "tokio", + "url", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04368b5abef4266250ca8d1d12f4dff860242681e4ec22b885dcfe354fd35aa1" +dependencies = [ + "anchor-syn", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-serde" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" +dependencies = [ + "anchor-syn", + "borsh-derive-internal 0.10.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-derive-space" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef415ff156dc82e9ecb943189b0cb241b3a6bfc26a180234dc21bd3ef3ce0cb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anchor-lang" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6620c9486d9d36a4389cab5e37dc34a42ed0bfaa62e6a75a2999ce98f8f2e373" +dependencies = [ + "anchor-attribute-access-control", + "anchor-attribute-account", + "anchor-attribute-constant", + "anchor-attribute-error", + "anchor-attribute-event", + "anchor-attribute-program", + "anchor-derive-accounts", + "anchor-derive-serde", + "anchor-derive-space", + "anchor-lang-idl", + "arrayref", + "base64 0.21.7", + "bincode", + "borsh 0.10.3", + "bytemuck", + "getrandom 0.2.15", + "solana-program", + "thiserror", +] + +[[package]] +name = "anchor-lang-idl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31cf97b4e6f7d6144a05e435660fcf757dbc3446d38d0e2b851d11ed13625bba" +dependencies = [ + "anchor-lang-idl-spec", + "anyhow", + "heck 0.3.3", + "regex", + "serde", + "serde_json", + "sha2 0.10.8", +] + +[[package]] +name = "anchor-lang-idl-spec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" +dependencies = [ + "anyhow", + "serde", +] + +[[package]] +name = "anchor-spl" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04bd077c34449319a1e4e0bc21cea572960c9ae0d0fefda0dd7c52fcc3c647a3" +dependencies = [ + "anchor-lang", + "spl-associated-token-account 3.0.4", + "spl-pod 0.2.5", + "spl-token", + "spl-token-2022 3.0.4", + "spl-token-group-interface 0.2.5", + "spl-token-metadata-interface 0.3.5", +] + +[[package]] +name = "anchor-syn" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f99daacb53b55cfd37ce14d6c9905929721137fd4c67bbab44a19802aecb622f" +dependencies = [ + "anyhow", + "bs58 0.5.1", + "cargo_toml", + "heck 0.3.3", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.8", + "syn 1.0.109", + "thiserror", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "aquamarine" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" +dependencies = [ + "include_dir", + "itertools", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest 0.10.7", + "itertools", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "asn1-rs" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[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", + "futures-core", +] + +[[package]] +name = "async-compression" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-mutex" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-trait" +version = "0.1.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "bitmaps" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" +dependencies = [ + "typenum", +] + +[[package]] +name = "blake3" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive 0.9.3", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive 0.10.3", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +dependencies = [ + "borsh-derive 1.5.1", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +dependencies = [ + "once_cell", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.71", + "syn_derive", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "brotli" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "bytemuck" +version = "1.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +dependencies = [ + "serde", +] + +[[package]] +name = "caps" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" +dependencies = [ + "libc", + "thiserror", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cargo_toml" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" +dependencies = [ + "serde", + "toml 0.8.14", +] + +[[package]] +name = "cc" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "chrono-humanize" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" +dependencies = [ + "chrono", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap 0.11.0", + "unicode-width", + "vec_map", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_lex", + "indexmap 1.9.3", + "once_cell", + "strsim 0.10.0", + "termcolor", + "textwrap 0.16.1", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode 0.3.6", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +dependencies = [ + "log", + "web-sys", +] + +[[package]] +name = "const-oid" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpi-metaplex-7" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "anchor-spl", + "mpl-token-metadata", + "trident-client", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "csv" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core 0.13.4", + "darling_macro 0.13.4", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core 0.20.10", + "darling_macro 0.20.10", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.71", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core 0.13.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core 0.20.10", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", + "rayon", +] + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "der" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" +dependencies = [ + "const-oid", +] + +[[package]] +name = "der-parser" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint 0.4.6", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "dialoguer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "dir-diff" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" +dependencies = [ + "walkdir", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[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", + "winapi", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "dlopen2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + +[[package]] +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.8", +] + +[[package]] +name = "educe" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[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.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "fehler" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5729fe49ba028cd550747b6e62cd3d841beccab5390aa398538c31a2d983635" +dependencies = [ + "fehler-macros", +] + +[[package]] +name = "fehler-macros" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccb5acb1045ebbfa222e2c50679e392a71dd77030b78fb0189f2d9c5974400f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", +] + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fragile" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fuzz_tests" +version = "0.1.0" +dependencies = [ + "anchor-spl", + "arbitrary", + "assert_matches", + "cpi-metaplex-7", + "honggfuzz", + "mpl-token-metadata", + "trident-client", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "serde", + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "goblin" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util 0.7.11", + "tracing", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.11", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "histogram" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "honggfuzz" +version = "0.5.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c76b6234c13c9ea73946d1379d33186151148e0da231506b964b44f3d023505" +dependencies = [ + "arbitrary", + "lazy_static", + "memmap2 0.9.4", + "rustc_version", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "im" +version = "15.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" +dependencies = [ + "bitmaps", + "rand_core 0.6.4", + "rand_xoshiro", + "rayon", + "serde", + "sized-chunks", + "typenum", + "version_check", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "index_list" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cb725b6505e51229de32027e0cfcd9db29da4d89156f9747b0a5195643fa3e1" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "light-poseidon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +dependencies = [ + "ark-bn254", + "ark-ff", + "num-bigint 0.4.6", + "thiserror", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] + +[[package]] +name = "lz4" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6eab492fe7f8651add23237ea56dbf11b3c4ff762ab83d40a47f11433421f91" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "mockall" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "lazy_static", + "mockall_derive", + "predicates", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "modular-bitfield" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" +dependencies = [ + "modular-bitfield-impl", + "static_assertions", +] + +[[package]] +name = "modular-bitfield-impl" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "mpl-token-metadata" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf0f61b553e424a6234af1268456972ee66c2222e1da89079242251fa7479e5" +dependencies = [ + "borsh 0.10.3", + "num-derive 0.3.3", + "num-traits", + "solana-program", + "thiserror", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", + "pin-utils", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive 0.6.1", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive 0.7.2", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "ouroboros" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" +dependencies = [ + "aliasable", + "ouroboros_macro", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.3", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "pbkdf2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +dependencies = [ + "crypto-mac", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" +dependencies = [ + "der", + "spki", + "zeroize", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "predicates" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +dependencies = [ + "difflib", + "float-cmp", + "itertools", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" + +[[package]] +name = "predicates-tree" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "pretty-hex" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5" + +[[package]] +name = "prettytable" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46480520d1b77c9a3482d39939fcf96831537a250ec62d4fd8fbdf8e0302e781" +dependencies = [ + "csv", + "encode_unicode 1.0.0", + "is-terminal", + "lazy_static", + "term", + "unicode-width", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml 0.5.11", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "quinn" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" +dependencies = [ + "arbitrary", + "bytes", + "rand 0.8.5", + "ring 0.16.20", + "rustc-hash", + "rustls", + "rustls-native-certs", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" +dependencies = [ + "bytes", + "libc", + "socket2", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rcgen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +dependencies = [ + "pem", + "ring 0.16.20", + "time", + "yasna", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "relative-path" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "async-compression", + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-rustls", + "tokio-util 0.7.11", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rstest" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" +dependencies = [ + "cfg-if", + "glob", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.71", + "unicode-ident", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "seqlock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "serde" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "serde_json" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.2.6", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serial_test" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" +dependencies = [ + "dashmap", + "futures", + "lazy_static", + "log", + "parking_lot", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug", +] + +[[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 = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shellexpand" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b" +dependencies = [ + "dirs", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps", + "typenum", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "solana-account-decoder" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a1297281b114406a9165c6f55ff9f8706f6244545194c7aa837f9b25dee16e" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "bv", + "lazy_static", + "serde", + "serde_derive", + "serde_json", + "solana-config-program", + "solana-sdk", + "spl-token", + "spl-token-2022 1.0.0", + "spl-token-group-interface 0.1.0", + "spl-token-metadata-interface 0.2.0", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-accounts-db" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff031129c39c32d0176be1e3bb9352dc83c521187058d6c16febfee2aedddca0" +dependencies = [ + "arrayref", + "bincode", + "blake3", + "bv", + "bytemuck", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "flate2", + "fnv", + "im", + "index_list", + "itertools", + "lazy_static", + "log", + "lz4", + "memmap2 0.5.10", + "modular-bitfield", + "num-derive 0.4.2", + "num-traits", + "num_cpus", + "num_enum 0.7.2", + "ouroboros", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "rustc_version", + "seqlock", + "serde", + "serde_derive", + "smallvec", + "solana-bucket-map", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-nohash-hasher", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", + "static_assertions", + "strum", + "strum_macros", + "tar", + "tempfile", + "thiserror", +] + +[[package]] +name = "solana-address-lookup-table-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622d95db00595a3dd2abd2ee22c37cf3744ba3df8f531d5c79faa3c155e2814b" +dependencies = [ + "bincode", + "bytemuck", + "log", + "num-derive 0.4.2", + "num-traits", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-program", + "solana-program-runtime", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-banks-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d29258deb3e9a052ccdb2bbe986fc0a0c5117a8488298b75e013b8681d793a9" +dependencies = [ + "borsh 1.5.1", + "futures", + "solana-banks-interface", + "solana-program", + "solana-sdk", + "tarpc", + "thiserror", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "423a6215f7abd1af8e992785c91c685787651354b332781c06ad9fdd2b1095d8" +dependencies = [ + "serde", + "solana-sdk", + "tarpc", +] + +[[package]] +name = "solana-banks-server" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f986b20b5eecca738b8d2fd83fbaaffbbb2178d294c6d83813241dea48bcc0aa" +dependencies = [ + "bincode", + "crossbeam-channel", + "futures", + "solana-accounts-db", + "solana-banks-interface", + "solana-client", + "solana-runtime", + "solana-sdk", + "solana-send-transaction-service", + "tarpc", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9934493a6034c8cf05913ba6812c057f6cd4792ad75c335e8d971adf63ce01c7" +dependencies = [ + "bincode", + "byteorder", + "libsecp256k1", + "log", + "scopeguard", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-bucket-map" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da941e0bde672cd33696961450efa2efb8b46322c4f814c1894c9c264122d1b" +dependencies = [ + "bv", + "bytemuck", + "log", + "memmap2 0.5.10", + "modular-bitfield", + "num_enum 0.7.2", + "rand 0.8.5", + "solana-measure", + "solana-sdk", + "tempfile", +] + +[[package]] +name = "solana-clap-utils" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "811569ed647c15e97afd142297b0ad14a87149c51e11df740014daa81f297f8b" +dependencies = [ + "chrono", + "clap 2.34.0", + "rpassword", + "solana-remote-wallet", + "solana-sdk", + "thiserror", + "tiny-bip39", + "uriparse", + "url", +] + +[[package]] +name = "solana-cli-config" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cb4459594cbdbc6f3cd199bbca486f0ef7f1ecf107dce9cffa3f9d69df31dc7" +dependencies = [ + "dirs-next", + "lazy_static", + "serde", + "serde_derive", + "serde_yaml", + "solana-clap-utils", + "solana-sdk", + "url", +] + +[[package]] +name = "solana-cli-output" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb454e8df10d664ef0e1137c69af0f2d9fa0de713c1b608656318a76a2f5d3cc" +dependencies = [ + "Inflector", + "base64 0.21.7", + "chrono", + "clap 2.34.0", + "console", + "humantime", + "indicatif", + "pretty-hex", + "semver", + "serde", + "serde_json", + "solana-account-decoder", + "solana-clap-utils", + "solana-cli-config", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-vote-program", + "spl-memo", +] + +[[package]] +name = "solana-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "792ed1869858f35b4359f696771517b4848cd3ff6e2d58155c4bcb292f30166b" +dependencies = [ + "async-trait", + "bincode", + "dashmap", + "futures", + "futures-util", + "indexmap 2.2.6", + "indicatif", + "log", + "quinn", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-quic-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-rpc-client-nonce-utils", + "solana-sdk", + "solana-streamer", + "solana-thin-client", + "solana-tpu-client", + "solana-udp-client", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-compute-budget-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dde13cdf503b7269435ceee5a94f8c42313e9257df00e6c2aa06466345dd3fc" +dependencies = [ + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-config-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6db8509d749ff1396a0b538ade995908361563b4f2c875b09cf096ba4ba0fae" +dependencies = [ + "bincode", + "chrono", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-connection-cache" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257511b6c2b54c28eae24c5a9b7bab74522439fcd721d09e63092768333ba7b7" +dependencies = [ + "async-trait", + "bincode", + "crossbeam-channel", + "futures-util", + "indexmap 2.2.6", + "log", + "rand 0.8.5", + "rayon", + "rcgen", + "solana-measure", + "solana-metrics", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-cost-model" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c391b492eb79c24756ee149b19f5504f7a2554612a8d2860fb9701df4e202a8b" +dependencies = [ + "lazy_static", + "log", + "rustc_version", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-metrics", + "solana-program-runtime", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-frozen-abi" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f498a2b290abca1cf77feacef01b904be725fd46a7aea5ba121cce8c1269dcf" +dependencies = [ + "block-buffer 0.10.4", + "bs58 0.4.0", + "bv", + "either", + "generic-array", + "im", + "lazy_static", + "log", + "memmap2 0.5.10", + "rustc_version", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.10.8", + "solana-frozen-abi-macro", + "subtle", + "thiserror", +] + +[[package]] +name = "solana-frozen-abi-macro" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ab48d1be18021f5c13f94671e766699511044f81aab3376313f6a2392f8fab" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.71", +] + +[[package]] +name = "solana-loader-v4-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d5e1fcf36f771e210db47d9e4db1e88821d334b313e6fb3c19cf6a987617ffb" +dependencies = [ + "log", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana_rbpf", +] + +[[package]] +name = "solana-logger" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed08bcdd54232d2017071a6f5d664b34649ef0110801ac310a01418215f22ff7" +dependencies = [ + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "solana-measure" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5db05e4bba8562a2419cb980301152fc7f60f643065c3aba4b3b5d6e3bd66e45" +dependencies = [ + "log", + "solana-sdk", +] + +[[package]] +name = "solana-metrics" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7a77735beed78eb221e123e0d46a991dc91db9e199d5c5fdbea22a55149d162" +dependencies = [ + "crossbeam-channel", + "gethostname", + "lazy_static", + "log", + "reqwest", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-net-utils" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f76d98286bdb149ce5375c3c7d7301e5d1bf7bf2576789d3fd488cf93d32471" +dependencies = [ + "bincode", + "clap 3.2.25", + "crossbeam-channel", + "log", + "nix", + "rand 0.8.5", + "serde", + "serde_derive", + "socket2", + "solana-logger", + "solana-sdk", + "solana-version", + "tokio", + "url", +] + +[[package]] +name = "solana-nohash-hasher" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" + +[[package]] +name = "solana-perf" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0a1b27503716c3f5362c61215d2ccf88a3ecf95fce51b2b59951c38a9ad94c" +dependencies = [ + "ahash 0.8.11", + "bincode", + "bv", + "caps", + "curve25519-dalek", + "dlopen2", + "fnv", + "lazy_static", + "libc", + "log", + "nix", + "rand 0.8.5", + "rayon", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-metrics", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-vote-program", +] + +[[package]] +name = "solana-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97cec6d3d60ef58168c8b3e97fd88e8903fa059eff6635361427c61c946ec1e" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "base64 0.21.7", + "bincode", + "bitflags 2.6.0", + "blake3", + "borsh 0.10.3", + "borsh 0.9.3", + "borsh 1.5.1", + "bs58 0.4.0", + "bv", + "bytemuck", + "cc", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.2.15", + "itertools", + "js-sys", + "lazy_static", + "libc", + "libsecp256k1", + "light-poseidon", + "log", + "memoffset 0.9.1", + "num-bigint 0.4.6", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "sha2 0.10.8", + "sha3 0.10.8", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk-macro", + "thiserror", + "tiny-bip39", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-program-runtime" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b76599d73401663bc1fde39f9fa5e538bd74451ea4a8d4e3ac14541be0a5de" +dependencies = [ + "base64 0.21.7", + "bincode", + "eager", + "enum-iterator", + "itertools", + "libc", + "log", + "num-derive 0.4.2", + "num-traits", + "percentage", + "rand 0.8.5", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-program-test" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c65563d5196f76a7c2feb399543389d045c7352f099acb5f5222d46922664457" +dependencies = [ + "assert_matches", + "async-trait", + "base64 0.21.7", + "bincode", + "chrono-humanize", + "crossbeam-channel", + "log", + "serde", + "solana-accounts-db", + "solana-banks-client", + "solana-banks-interface", + "solana-banks-server", + "solana-bpf-loader-program", + "solana-logger", + "solana-program-runtime", + "solana-runtime", + "solana-sdk", + "solana-vote-program", + "solana_rbpf", + "test-case", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-pubsub-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09aacbdbeaa5722b2ab1f843673f66c317609741f494a6ef11e2e8928cc7449e" +dependencies = [ + "crossbeam-channel", + "futures-util", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tungstenite", + "url", +] + +[[package]] +name = "solana-quic-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2eeabd12e1039aa62cad34179fc1f139fca5c7bfeb7683057643bebff3506b0" +dependencies = [ + "async-mutex", + "async-trait", + "futures", + "itertools", + "lazy_static", + "log", + "quinn", + "quinn-proto", + "rcgen", + "rustls", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-rpc-client-api", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-rayon-threadlimit" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ad791cc224c84d69498eeeaeadfc5af2cf710ec2719e48b51f2e2b6e67d8163" +dependencies = [ + "lazy_static", + "num_cpus", +] + +[[package]] +name = "solana-remote-wallet" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fca3c68439865c87d5a01c26dc0dcbcce2d45331adf8f0bf92a7c7d44853fefb" +dependencies = [ + "console", + "dialoguer", + "log", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "qstring", + "semver", + "solana-sdk", + "thiserror", + "uriparse", +] + +[[package]] +name = "solana-rpc-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1c9bdb88ebcea8b13103019ed0d39b7d4391dc84a0d614dc8ba2e1ca43468e9" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "indicatif", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "solana-vote-program", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5bb93738a111d44dfeec6ccdd6a49f0478550a25a60e38badb2bd713599de44" +dependencies = [ + "base64 0.21.7", + "bs58 0.4.0", + "jsonrpc-core", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "solana-rpc-client-nonce-utils" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e066df081489cd10c91648f1e87d2b945fac2fcdfb34a715234a0b079a4c4375" +dependencies = [ + "clap 2.34.0", + "solana-clap-utils", + "solana-rpc-client", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-runtime" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8e16747198f45ab41f146d1ab1782d83016fb9ed1ce7612b9174018f907bd5" +dependencies = [ + "aquamarine", + "arrayref", + "base64 0.21.7", + "bincode", + "blake3", + "bv", + "bytemuck", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "dir-diff", + "flate2", + "fnv", + "im", + "index_list", + "itertools", + "lazy_static", + "log", + "lru", + "lz4", + "memmap2 0.5.10", + "mockall", + "modular-bitfield", + "num-derive 0.4.2", + "num-traits", + "num_cpus", + "num_enum 0.7.2", + "ouroboros", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "rustc_version", + "serde", + "serde_derive", + "serde_json", + "solana-accounts-db", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-bucket-map", + "solana-compute-budget-program", + "solana-config-program", + "solana-cost-model", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-measure", + "solana-metrics", + "solana-perf", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-version", + "solana-vote", + "solana-vote-program", + "solana-zk-token-proof-program", + "solana-zk-token-sdk", + "static_assertions", + "strum", + "strum_macros", + "symlink", + "tar", + "tempfile", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-sdk" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c335bdf35728ea876506babffcfd85fa4dd66af6438f9472afc91b278946909" +dependencies = [ + "assert_matches", + "base64 0.21.7", + "bincode", + "bitflags 2.6.0", + "borsh 1.5.1", + "bs58 0.4.0", + "bytemuck", + "byteorder", + "chrono", + "derivation-path", + "digest 0.10.7", + "ed25519-dalek", + "ed25519-dalek-bip32", + "generic-array", + "hmac 0.12.1", + "itertools", + "js-sys", + "lazy_static", + "libsecp256k1", + "log", + "memmap2 0.5.10", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.2", + "pbkdf2 0.11.0", + "qstring", + "qualifier_attr", + "rand 0.7.3", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "serde_with", + "sha2 0.10.8", + "sha3 0.10.8", + "siphasher", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-logger", + "solana-program", + "solana-sdk-macro", + "thiserror", + "uriparse", + "wasm-bindgen", +] + +[[package]] +name = "solana-sdk-macro" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba67050b90454a8638913a7d5775703c0557157def04ddcc8b59c964cda8535" +dependencies = [ + "bs58 0.4.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.71", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" + +[[package]] +name = "solana-send-transaction-service" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e8c1dd225716ecd66ec9a5a30c76355d8d1788c721d7db4d53ebb4c6ef34c8d" +dependencies = [ + "crossbeam-channel", + "log", + "solana-client", + "solana-measure", + "solana-metrics", + "solana-runtime", + "solana-sdk", + "solana-tpu-client", +] + +[[package]] +name = "solana-stake-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2ef08f7b2485af8578bfd4e23689286e5360b50d3cc9f350dfe3ad9fdabc679" +dependencies = [ + "bincode", + "log", + "rustc_version", + "solana-config-program", + "solana-program-runtime", + "solana-sdk", + "solana-vote-program", +] + +[[package]] +name = "solana-streamer" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27e8269eaa4aef1a9697fe8b9f659402272746c3fdd374fbffa96f68fe6745a6" +dependencies = [ + "async-channel", + "bytes", + "crossbeam-channel", + "futures-util", + "histogram", + "indexmap 2.2.6", + "itertools", + "libc", + "log", + "nix", + "pem", + "percentage", + "pkcs8", + "quinn", + "quinn-proto", + "rand 0.8.5", + "rcgen", + "rustls", + "smallvec", + "solana-metrics", + "solana-perf", + "solana-sdk", + "thiserror", + "tokio", + "x509-parser", +] + +[[package]] +name = "solana-system-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22c8b55398485962ea6127fe84c5768a5ae4a4ecdbd80a0917eb6945593481f9" +dependencies = [ + "bincode", + "log", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-thin-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c174c724bbe19a53862156e1a5d2cf6cdf1bd5d5d9853b4696b2d9d836123b" +dependencies = [ + "bincode", + "log", + "rayon", + "solana-connection-cache", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", +] + +[[package]] +name = "solana-tpu-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcdf9d7109d25900d0532539b00f53e820fb7200f6dc18f90e9d2be20c3d466" +dependencies = [ + "async-trait", + "bincode", + "futures-util", + "indexmap 2.2.6", + "indicatif", + "log", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-transaction-status" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7595aef5a9ddfdecd0966cc12ad0006713e4f8d87eafb4cb7b60fb18d98eff3a" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "borsh 0.10.3", + "bs58 0.4.0", + "lazy_static", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "spl-associated-token-account 2.3.0", + "spl-memo", + "spl-token", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "solana-udp-client" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a59c49a3766232005385bd70f15b0fce756fa6e73fb6397ce9ed34113f090e2" +dependencies = [ + "async-trait", + "solana-connection-cache", + "solana-net-utils", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-version" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ece37d745e1fb3455acd69b8ba6ecea3ebcefde29e0f40ee8e6467acc4dc04" +dependencies = [ + "log", + "rustc_version", + "semver", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", +] + +[[package]] +name = "solana-vote" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ca2744cf5509c7680a90d6704d00fbab899aa586542c4257fb23d4712b380c" +dependencies = [ + "crossbeam-channel", + "itertools", + "log", + "rustc_version", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", + "solana-vote-program", + "thiserror", +] + +[[package]] +name = "solana-vote-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6944bb3f8f34cc815017f6a50027331f5e7f48321e7998f1572cc898438b6a8a" +dependencies = [ + "bincode", + "log", + "num-derive 0.4.2", + "num-traits", + "rustc_version", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-metrics", + "solana-program", + "solana-program-runtime", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-zk-token-proof-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bd480f4b1b87dea1cdca14f3c6ba8e778e88756dc44ac090e797aab9c8759d" +dependencies = [ + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616130045004bccc9dd016fe03ac458db38bd61456f1d16f126acb60f968dcae" +dependencies = [ + "aes-gcm-siv", + "base64 0.21.7", + "bincode", + "bytemuck", + "byteorder", + "curve25519-dalek", + "getrandom 0.1.16", + "itertools", + "lazy_static", + "merlin", + "num-derive 0.4.2", + "num-traits", + "rand 0.7.3", + "serde", + "serde_json", + "sha3 0.9.1", + "solana-program", + "solana-sdk", + "subtle", + "thiserror", + "zeroize", +] + +[[package]] +name = "solana_rbpf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d457cc2ba742c120492a64b7fa60e22c575e891f6b55039f4d736568fb112a3" +dependencies = [ + "byteorder", + "combine", + "goblin", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "scroll", + "thiserror", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "spl-associated-token-account" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f" +dependencies = [ + "assert_matches", + "borsh 0.10.3", + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-token", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "spl-associated-token-account" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143109d789171379e6143ef23191786dfaac54289ad6e7917cfb26b36c432b10" +dependencies = [ + "assert_matches", + "borsh 1.5.1", + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-token", + "spl-token-2022 3.0.4", + "thiserror", +] + +[[package]] +name = "spl-discriminator" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive 0.1.2", +] + +[[package]] +name = "spl-discriminator" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "210101376962bb22bb13be6daea34656ea1cbc248fce2164b146e39203b55e03" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive 0.2.0", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" +dependencies = [ + "quote", + "spl-discriminator-syn 0.1.2", + "syn 2.0.71", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" +dependencies = [ + "quote", + "spl-discriminator-syn 0.2.0", + "syn 2.0.71", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fea7be851bd98d10721782ea958097c03a0c2a07d8d4997041d0ece6319a63" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.71", + "thiserror", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.71", + "thiserror", +] + +[[package]] +name = "spl-memo" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" +dependencies = [ + "solana-program", +] + +[[package]] +name = "spl-pod" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" +dependencies = [ + "borsh 0.10.3", + "bytemuck", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error 0.3.0", +] + +[[package]] +name = "spl-pod" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c52d84c55efeef8edcc226743dc089d7e3888b8e3474569aa3eff152b37b9996" +dependencies = [ + "borsh 1.5.1", + "bytemuck", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error 0.4.4", +] + +[[package]] +name = "spl-program-error" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" +dependencies = [ + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-program-error-derive 0.3.2", + "thiserror", +] + +[[package]] +name = "spl-program-error" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e45a49acb925db68aa501b926096b2164adbdcade7a0c24152af9f0742d0a602" +dependencies = [ + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-program-error-derive 0.4.1", + "thiserror", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1845dfe71fd68f70382232742e758557afe973ae19e6c06807b2c30f5d5cb474" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.71", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.71", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "615d381f48ddd2bb3c57c7f7fb207591a2a05054639b18a62e785117dd7a8683" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-type-length-value 0.3.0", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fab8edfd37be5fa17c9e42c1bff86abbbaf0494b031b37957f2728ad2ff842ba" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", + "spl-type-length-value 0.4.6", +] + +[[package]] +name = "spl-token" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.3.3", + "num-traits", + "num_enum 0.6.1", + "solana-program", + "thiserror", +] + +[[package]] +name = "spl-token-2022" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.2", + "solana-program", + "solana-security-txt", + "solana-zk-token-sdk", + "spl-memo", + "spl-pod 0.1.0", + "spl-token", + "spl-token-group-interface 0.1.0", + "spl-token-metadata-interface 0.2.0", + "spl-transfer-hook-interface 0.4.1", + "spl-type-length-value 0.3.0", + "thiserror", +] + +[[package]] +name = "spl-token-2022" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b01d1b2851964e257187c0bca43a0de38d0af59192479ca01ac3e2b58b1bd95a" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.2", + "solana-program", + "solana-security-txt", + "solana-zk-token-sdk", + "spl-memo", + "spl-pod 0.2.5", + "spl-token", + "spl-token-group-interface 0.2.5", + "spl-token-metadata-interface 0.3.5", + "spl-transfer-hook-interface 0.6.5", + "spl-type-length-value 0.4.6", + "thiserror", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "014817d6324b1e20c4bbc883e8ee30a5faa13e59d91d1b2b95df98b920150c17" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" +dependencies = [ + "borsh 0.10.3", + "solana-program", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-type-length-value 0.3.0", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3da00495b602ebcf5d8ba8b3ecff1ee454ce4c125c9077747be49c2d62335ba" +dependencies = [ + "borsh 1.5.1", + "solana-program", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", + "spl-type-length-value 0.4.6", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aabdb7c471566f6ddcee724beb8618449ea24b399e58d464d6b5bc7db550259" +dependencies = [ + "arrayref", + "bytemuck", + "solana-program", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-tlv-account-resolution 0.5.1", + "spl-type-length-value 0.3.0", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9b5c08a89838e5a2931f79b17f611857f281a14a2100968a3ccef352cb7414b" +dependencies = [ + "arrayref", + "bytemuck", + "solana-program", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", + "spl-tlv-account-resolution 0.6.5", + "spl-type-length-value 0.4.6", +] + +[[package]] +name = "spl-type-length-value" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", +] + +[[package]] +name = "spl-type-length-value" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c872f93d0600e743116501eba2d53460e73a12c9a496875a42a7d70e034fe06d" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.2.5", + "spl-pod 0.2.5", + "spl-program-error 0.4.4", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "symlink" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tar" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tarpc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" +dependencies = [ + "anyhow", + "fnv", + "futures", + "humantime", + "opentelemetry", + "pin-project", + "rand 0.8.5", + "serde", + "static_assertions", + "tarpc-plugins", + "thiserror", + "tokio", + "tokio-serde", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "tarpc-plugins" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[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 = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", + "test-case-core", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + +[[package]] +name = "thiserror" +version = "1.0.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-bip39" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" +dependencies = [ + "anyhow", + "hmac 0.8.1", + "once_cell", + "pbkdf2 0.4.0", + "rand 0.7.3", + "rustc-hash", + "sha2 0.9.9", + "thiserror", + "unicode-normalization", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +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.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bincode", + "bytes", + "educe", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots 0.25.4", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "indexmap 1.9.3", + "serde", +] + +[[package]] +name = "toml" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.15", +] + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.13", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "trident-client" +version = "0.6.0" +dependencies = [ + "anchor-client", + "anchor-lang", + "anchor-syn", + "anyhow", + "arbitrary", + "bincode", + "borsh 0.10.3", + "cargo_metadata", + "ed25519-dalek", + "fehler", + "futures", + "heck 0.4.1", + "honggfuzz", + "indicatif", + "log", + "pathdiff", + "proc-macro2", + "quinn-proto", + "quote", + "regex", + "rstest", + "serde", + "serde_json", + "serial_test", + "shellexpand", + "solana-account-decoder", + "solana-cli-output", + "solana-program-test", + "solana-sdk", + "solana-transaction-status", + "spl-associated-token-account 2.3.0", + "spl-token", + "syn 1.0.109", + "thiserror", + "tokio", + "toml 0.5.11", + "trident-derive-accounts-snapshots", + "trident-derive-displayix", + "trident-derive-fuzz-deserialize", + "trident-derive-fuzz-test-executor", + "trident-fuzz", + "trident-test", +] + +[[package]] +name = "trident-derive-accounts-snapshots" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "trident-fuzz", +] + +[[package]] +name = "trident-derive-displayix" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "trident-derive-fuzz-deserialize" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "trident-derive-fuzz-test-executor" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "trident-fuzz" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "anchor-syn", + "arbitrary", + "convert_case", + "heck 0.4.1", + "prettytable", + "proc-macro2", + "quote", + "regex", + "serde", + "serde_json", + "solana-banks-client", + "solana-program-runtime", + "solana-program-test", + "solana-sdk", + "spl-token", + "syn 1.0.109", + "thiserror", + "tokio", +] + +[[package]] +name = "trident-test" +version = "0.3.2" +dependencies = [ + "darling 0.13.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", + "webpki-roots 0.24.0", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "universal-hash" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.71", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" +dependencies = [ + "rustls-webpki", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys 0.52.0", +] + +[[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.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64 0.13.1", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.71", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.12+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/examples/fuzz-tests/cpi-metaplex-7/Cargo.toml b/examples/fuzz-tests/cpi-metaplex-7/Cargo.toml new file mode 100644 index 00000000..9783b3f0 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/Cargo.toml @@ -0,0 +1,12 @@ +[workspace] +members = ["programs/*", "trident-tests/fuzz_tests"] +resolver = "2" +[profile.release] +overflow-checks = true +lto = "fat" +codegen-units = 1 + +[profile.release.build-override] +opt-level = 3 +incremental = false +codegen-units = 1 diff --git a/examples/fuzz-tests/cpi-metaplex-7/Trident.toml b/examples/fuzz-tests/cpi-metaplex-7/Trident.toml new file mode 100644 index 00000000..1c4d43cb --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/Trident.toml @@ -0,0 +1,41 @@ +[test] +validator_startup_timeout = 15000 + + +[honggfuzz] +# Timeout in seconds (default: 10) +timeout = 10 +# Number of fuzzing iterations (default: 0 [no limit]) +iterations = 1000 +# Number of concurrent fuzzing threads (default: 0 [number of CPUs / 2]) +threads = 0 +# Don't close children's stdin, stdout, stderr; can be noisy (default: false) +keep_output = false +# Disable ANSI console; use simple log output (default: false) +verbose = false +# Exit upon seeing the first crash (default: false) +exit_upon_crash = false +# Maximal number of mutations per one run (default: 6) +mutations_per_run = 6 +# Target compilation directory, (default: "" ["trident-tests/fuzz_tests/fuzzing/hfuzz_target"]). +# To not clash with cargo build's default target directory. +cargo_target_dir = "" +# Honggfuzz working directory, (default: "" ["trident-tests/fuzz_tests/fuzzing/hfuzz_workspace"]). +hfuzz_workspace = "" +# Directory where crashes are saved to (default: "" [workspace directory]) +crashdir = "" +# Input file extension (e.g. 'swf'), (default: "" ['fuzz']) +extension = "" +# Number of seconds this fuzzing session will last (default: 0 [no limit]) +run_time = 0 +# Maximal size of files processed by the fuzzer in bytes (default: 1048576 = 1MB) +max_file_size = 1048576 +# Save all test-cases (not only the unique ones) by appending the current time-stamp to the filenames (default: false) +save_all = false + +[fuzz] +# Allow processing of duplicate transactions. Setting to true might speed up fuzzing but can cause false positive crashes (default: false) +allow_duplicate_txs = false +# Trident will show statistics after the fuzzing session. This option forces use of honggfuzz parameter +# `keep_output` as true in order to be able to catch fuzzer stdout. (default: false) +fuzzing_with_stats = false diff --git a/examples/fuzz-tests/cpi-metaplex-7/migrations/deploy.ts b/examples/fuzz-tests/cpi-metaplex-7/migrations/deploy.ts new file mode 100644 index 00000000..82fb175f --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/migrations/deploy.ts @@ -0,0 +1,12 @@ +// Migrations are an early feature. Currently, they're nothing more than this +// single deploy script that's invoked from the CLI, injecting a provider +// configured from the workspace's Anchor.toml. + +const anchor = require("@coral-xyz/anchor"); + +module.exports = async function (provider) { + // Configure client to use the provider. + anchor.setProvider(provider); + + // Add your deploy script here. +}; diff --git a/examples/fuzz-tests/cpi-metaplex-7/package.json b/examples/fuzz-tests/cpi-metaplex-7/package.json new file mode 100644 index 00000000..f10b5053 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/package.json @@ -0,0 +1,21 @@ +{ + "license": "ISC", + "scripts": { + "lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w", + "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check" + }, + "dependencies": { + "@coral-xyz/anchor": "^0.30.1", + "@solana/spl-token": "^0.4.8" + }, + "devDependencies": { + "@types/bn.js": "^5.1.0", + "@types/chai": "^4.3.0", + "@types/mocha": "^9.0.0", + "chai": "^4.3.4", + "mocha": "^9.0.3", + "prettier": "^2.6.2", + "ts-mocha": "^10.0.0", + "typescript": "^4.3.5" + } +} diff --git a/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Cargo.toml b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Cargo.toml new file mode 100644 index 00000000..53fd2667 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "cpi-metaplex-7" +version = "0.1.0" +description = "Created with Anchor" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "cpi_metaplex_7" + +[features] +default = [] +cpi = ["no-entrypoint"] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] + +[dependencies] +anchor-lang = "0.30.1" +anchor-spl = "0.30.1" +mpl-token-metadata = "4.1.2" +trident-client = { path = "../../../../../crates/client" } diff --git a/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Xargo.toml b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Xargo.toml new file mode 100644 index 00000000..475fb71e --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Xargo.toml @@ -0,0 +1,2 @@ +[target.bpfel-unknown-unknown.dependencies.std] +features = [] diff --git a/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/src/lib.rs b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/src/lib.rs new file mode 100644 index 00000000..cc3a5eac --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/src/lib.rs @@ -0,0 +1,106 @@ +use anchor_lang::prelude::*; +use anchor_spl::{token::Mint, token_interface::TokenInterface}; +use mpl_token_metadata::{ + instructions::{ + CreateMetadataAccountV3Cpi, CreateMetadataAccountV3CpiAccounts, + CreateMetadataAccountV3InstructionArgs, + }, + types::DataV2, + ID as MPL_METADATA_PROGRAM, +}; + +use trident_client::fuzzing::AccountsSnapshots; + +declare_id!("3XtULmXDGS867VbBXiPkjYr4EMjytGW8X12F6BS23Zcw"); + +#[program] +pub mod cpi_metaplex_7 { + + use super::*; + + pub fn initialize( + ctx: Context, + input: u8, + name: String, + symbol: String, + uri: String, + ) -> Result<()> { + ctx.accounts.create_metadata(name, symbol, uri)?; + + if input > 15 { + panic!("This number is magic"); + } + + Ok(()) + } +} + +#[derive(AccountsSnapshots, Accounts)] +pub struct Initialize<'info> { + #[account(mut)] + pub signer: Signer<'info>, + #[account( + init, + payer = signer, + mint::decimals = 9, + mint::authority = signer, + )] + pub mint: Account<'info, Mint>, + + // CHECK: Will be initialized + #[account(mut)] + pub metadata_account: UncheckedAccount<'info>, + pub mpl_token_metadata: Program<'info, MplTokenMetadataProgram>, + pub system_program: Program<'info, System>, + pub token_program: Interface<'info, TokenInterface>, +} + +#[derive(Debug, Clone)] +pub struct MplTokenMetadataProgram; + +impl anchor_lang::Id for MplTokenMetadataProgram { + fn id() -> Pubkey { + MPL_METADATA_PROGRAM + } +} + +impl<'info> Initialize<'info> { + pub fn create_metadata(&self, name: String, symbol: String, uri: String) -> Result<()> { + let mpl_metadata_program = &self.mpl_token_metadata.to_account_info(); + let metadata = &self.metadata_account.to_account_info(); + let mint = &self.mint.to_account_info(); + let mint_authority = &self.signer.to_account_info(); + let payer = &self.signer.to_account_info(); + let system_program = &self.system_program.to_account_info(); + + let cpi_context = CreateMetadataAccountV3Cpi::new( + mpl_metadata_program, + CreateMetadataAccountV3CpiAccounts { + metadata, + mint, + mint_authority, + payer, + update_authority: (system_program, false), // second value sets if the account is also signer + system_program, + rent: None, + }, + CreateMetadataAccountV3InstructionArgs { + data: DataV2 { + name, + symbol, + uri, + seller_fee_basis_points: 0, + creators: None, + collection: None, + uses: None, + }, + is_mutable: false, + collection_details: None, + }, + ); + + cpi_context.invoke()?; + + Ok(()) + } +} diff --git a/examples/fuzz-tests/cpi-metaplex-7/tests/cpi-metaplex-7.ts b/examples/fuzz-tests/cpi-metaplex-7/tests/cpi-metaplex-7.ts new file mode 100644 index 00000000..440ea59b --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/tests/cpi-metaplex-7.ts @@ -0,0 +1,66 @@ +import * as anchor from "@coral-xyz/anchor"; +import { Program } from "@coral-xyz/anchor"; +import { CpiMetaplex7 } from "../target/types/cpi_metaplex_7"; +import { PublicKey } from '@solana/web3.js'; +import * as spl_token from '@solana/spl-token'; + + +export const MetaplexTokenMetadataProgram = new PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s") + +describe("cpi-metaplex-7", () => { + // Configure the client to use the local cluster. + const provider = anchor.AnchorProvider.env() + anchor.setProvider(provider); + + const program = anchor.workspace.CpiMetaplex7 as Program; + + const signer = anchor.web3.Keypair.generate(); + + it("Initialize with Metaplex!", async () => { + await airdrop(provider.connection, signer.publicKey) + + const name = "Name1"; + const symbol = "smb1"; + const uri = "uri1"; + + const [mint, metadata] = await get_adresses(); + + await program.methods.initialize(8, name, symbol, uri).accounts({ + signer: signer.publicKey, + mint: mint.publicKey, + metadataAccount: metadata, + mplTokenMetadata: MetaplexTokenMetadataProgram, + systemProgram: anchor.web3.SystemProgram.programId, + tokenProgram: spl_token.TOKEN_PROGRAM_ID, + }).signers([signer, mint]).rpc({ commitment: "confirmed" }) + }); +}); + + +export async function airdrop( + connection: any, + address: any, + amount = 500_000_000_000 +) { + await connection.confirmTransaction( + await connection.requestAirdrop(address, amount), + 'confirmed' + ); +} + +export async function get_adresses(): Promise<[anchor.web3.Keypair, anchor.web3.PublicKey]> { + // WE GENERATE RANDOM KEYPAIR FOR THE MINT + const mint = anchor.web3.Keypair.generate(); + const mintAddress = mint.publicKey; + + const [metadata, metadata_bump] = anchor.web3.PublicKey.findProgramAddressSync( + [ + Buffer.from('metadata'), + MetaplexTokenMetadataProgram.toBuffer(), + mintAddress.toBuffer(), + ], + MetaplexTokenMetadataProgram + ); + + return [mint, metadata]; +} diff --git a/examples/fuzz-tests/cpi-metaplex-7/trident-genesis/metaplex-token-metadata.so b/examples/fuzz-tests/cpi-metaplex-7/trident-genesis/metaplex-token-metadata.so new file mode 100644 index 0000000000000000000000000000000000000000..5da6f4fa684bd01fc15a7d20eca754a11d247348 GIT binary patch literal 793904 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 HXb_#~;kB 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

c$gipIpyw~E> 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 z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; z1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^;1#|^; S1#|^;1#|^;1^&NSf&T?_U|CcE literal 0 HcmV?d00001 diff --git a/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/Cargo.toml new file mode 100644 index 00000000..021e69b0 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/Cargo.toml @@ -0,0 +1,22 @@ +[[bin]] +name = "fuzz_0" +path = "fuzz_0/test_fuzz.rs" + +[package] +name = "fuzz_tests" +version = "0.1.0" +description = "Created with Trident" +edition = "2021" + +[dependencies] +honggfuzz = "0.5.56" +arbitrary = "1.3.0" +assert_matches = "1.4.0" +mpl-token-metadata = "4.1.2" +anchor-spl = "0.30.1" +[dependencies.trident-client] +path = "../../../../../crates/client" + + +[dependencies.cpi-metaplex-7] +path = "../../programs/cpi-metaplex-7" diff --git a/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs new file mode 100644 index 00000000..4ad8ffae --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -0,0 +1,90 @@ +pub mod cpi_metaplex_7_fuzz_instructions { + use cpi_metaplex_7::trident_fuzz_initialize_snapshot::InitializeSnapshot; + use solana_sdk::native_token::LAMPORTS_PER_SOL; + use trident_client::fuzzing::*; + #[derive(Arbitrary, DisplayIx, FuzzTestExecutor, FuzzDeserialize)] + pub enum FuzzInstruction { + Initialize(Initialize), + } + #[derive(Arbitrary, Debug)] + pub struct Initialize { + pub accounts: InitializeAccounts, + pub data: InitializeData, + } + #[derive(Arbitrary, Debug)] + pub struct InitializeAccounts { + pub signer: AccountId, + pub mint: AccountId, + pub metadata_account: AccountId, + pub mpl_token_metadata: AccountId, + pub system_program: AccountId, + pub token_program: AccountId, + } + #[derive(Arbitrary, Debug)] + pub struct InitializeData { + pub input: u8, + pub name: String, + pub symbol: String, + pub uri: String, + } + impl<'info> IxOps<'info> for Initialize { + type IxData = cpi_metaplex_7::instruction::Initialize; + type IxAccounts = FuzzAccounts; + type IxSnapshot = InitializeSnapshot<'info>; + fn get_data( + &self, + _client: &mut impl FuzzClient, + _fuzz_accounts: &mut FuzzAccounts, + ) -> Result { + let data = cpi_metaplex_7::instruction::Initialize { + input: self.data.input, + name: "NAME1".to_string(), + symbol: "SMB1".to_string(), + uri: "URI1".to_string(), + }; + Ok(data) + } + fn get_accounts( + &self, + client: &mut impl FuzzClient, + fuzz_accounts: &mut FuzzAccounts, + ) -> Result<(Vec, Vec), FuzzingError> { + let signer = fuzz_accounts.signer.get_or_create_account( + self.accounts.signer, + client, + 10 * LAMPORTS_PER_SOL, + ); + + let mint = fuzz_accounts.mint.get_or_create_account( + self.accounts.mint, + client, + 10 * LAMPORTS_PER_SOL, + ); + + let metadata_account = mpl_token_metadata::accounts::Metadata::find_pda(&mint.pubkey()); + + let signers = vec![signer.clone(), mint.clone()]; + let acc_meta = cpi_metaplex_7::accounts::Initialize { + signer: signer.pubkey(), + mint: mint.pubkey(), + metadata_account: metadata_account.0, + mpl_token_metadata: mpl_token_metadata::ID, + system_program: solana_sdk::system_program::ID, + token_program: anchor_spl::token::ID, + } + .to_account_metas(None); + Ok((signers, acc_meta)) + } + } + #[doc = r" Use AccountsStorage where T can be one of:"] + #[doc = r" Keypair, PdaStore, TokenStore, MintStore, ProgramStore"] + #[derive(Default)] + pub struct FuzzAccounts { + _metadata_account: AccountsStorage, + mint: AccountsStorage, + _mpl_token_metadata: AccountsStorage, + signer: AccountsStorage, + _system_program: AccountsStorage, + _token_program: AccountsStorage, + } +} diff --git a/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs new file mode 100644 index 00000000..ff6639e2 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -0,0 +1,60 @@ +use cpi_metaplex_7::entry as entry_cpi_metaplex_7; +use cpi_metaplex_7::ID as PROGRAM_ID_CPI_METAPLEX_7; +const PROGRAM_NAME_CPI_METAPLEX_7: &str = "cpi_metaplex_7"; +use fuzz_instructions::cpi_metaplex_7_fuzz_instructions::FuzzInstruction as FuzzInstruction_cpi_metaplex_7; +use fuzz_instructions::cpi_metaplex_7_fuzz_instructions::Initialize; +use trident_client::fuzzing::*; +mod fuzz_instructions; + +// TODO: In case of using file extension for AccountsSnapshots +// uncomment the line below +// mod accounts_snapshots; + +struct MyFuzzData; + +impl FuzzDataBuilder for MyFuzzData { + fn pre_ixs( + u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + let init = FuzzInstruction_cpi_metaplex_7::Initialize(Initialize::arbitrary(u)?); + Ok(vec![init]) + } + fn ixs( + _u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + Ok(vec![]) + } + fn post_ixs( + _u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + Ok(vec![]) + } +} + +fn main() { + loop { + fuzz_trident!(fuzz_ix: FuzzInstruction_cpi_metaplex_7, |fuzz_data: MyFuzzData| { + + // Specify programs you want to include in genesis + // Programs without an `entry_fn`` will be searched for within `trident-genesis` folder. + // `entry_fn`` example: processor!(convert_entry!(program_entry)) + let fuzzing_program1 = FuzzingProgram::new( + PROGRAM_NAME_CPI_METAPLEX_7, + &PROGRAM_ID_CPI_METAPLEX_7, + processor!(convert_entry!(entry_cpi_metaplex_7)) + ); + let metaplex = FuzzingProgram::new( + "metaplex-token-metadata", + &mpl_token_metadata::ID, + None + ); + + let mut client = + ProgramTestClientBlocking::new(&[fuzzing_program1,metaplex]) + .unwrap(); + + // fill Program ID of program you are going to call + let _ = fuzz_data.run_with_runtime(PROGRAM_ID_CPI_METAPLEX_7, &mut client); + }); + } +} diff --git a/examples/fuzz-tests/cpi-metaplex-7/tsconfig.json b/examples/fuzz-tests/cpi-metaplex-7/tsconfig.json new file mode 100644 index 00000000..cd5d2e3d --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "types": ["mocha", "chai"], + "typeRoots": ["./node_modules/@types"], + "lib": ["es2015"], + "module": "commonjs", + "target": "es6", + "esModuleInterop": true + } +} diff --git a/examples/fuzz-tests/cpi-metaplex-7/yarn.lock b/examples/fuzz-tests/cpi-metaplex-7/yarn.lock new file mode 100644 index 00000000..46fd2610 --- /dev/null +++ b/examples/fuzz-tests/cpi-metaplex-7/yarn.lock @@ -0,0 +1,1363 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.24.7": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" + integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== + dependencies: + regenerator-runtime "^0.14.0" + +"@coral-xyz/anchor-errors@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz#bdfd3a353131345244546876eb4afc0e125bec30" + integrity sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ== + +"@coral-xyz/anchor@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" + integrity sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ== + dependencies: + "@coral-xyz/anchor-errors" "^0.30.1" + "@coral-xyz/borsh" "^0.30.1" + "@noble/hashes" "^1.3.1" + "@solana/web3.js" "^1.68.0" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^6.3.0" + cross-fetch "^3.1.5" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + pako "^2.0.3" + snake-case "^3.0.4" + superstruct "^0.15.4" + toml "^3.0.0" + +"@coral-xyz/borsh@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.30.1.tgz#869d8833abe65685c72e9199b8688477a4f6b0e3" + integrity sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@noble/curves@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== + dependencies: + "@noble/hashes" "1.4.0" + +"@noble/hashes@1.4.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@solana/buffer-layout-utils@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" + integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/web3.js" "^1.32.0" + bigint-buffer "^1.1.5" + bignumber.js "^9.0.1" + +"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/codecs-core@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz#689784d032fbc1fedbde40bb25d76cdcecf6553b" + integrity sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg== + dependencies: + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-core@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.4.tgz#770826105f2f884110a21662573e7a2014654324" + integrity sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw== + dependencies: + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-data-structures@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz#e82cb1b6d154fa636cd5c8953ff3f32959cc0370" + integrity sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-data-structures@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" + integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-numbers@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz#56995c27396cd8ee3bae8bd055363891b630bbd0" + integrity sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-numbers@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.4.tgz#6a53b456bb7866f252d8c032c81a92651e150f66" + integrity sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-strings@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz#8bd01a4e48614d5289d72d743c3e81305d445c46" + integrity sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-strings@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.4.tgz#4d06bb722a55a5d04598d362021bfab4bd446760" + integrity sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.2.tgz#d6615fec98f423166fb89409f9a4ad5b74c10935" + integrity sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-data-structures" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/codecs-strings" "2.0.0-preview.2" + "@solana/options" "2.0.0-preview.2" + +"@solana/codecs@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.4.tgz#a1923cc78a6f64ebe656c7ec6335eb6b70405b22" + integrity sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-data-structures" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/codecs-strings" "2.0.0-preview.4" + "@solana/options" "2.0.0-preview.4" + +"@solana/errors@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.2.tgz#e0ea8b008c5c02528d5855bc1903e5e9bbec322e" + integrity sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA== + dependencies: + chalk "^5.3.0" + commander "^12.0.0" + +"@solana/errors@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" + integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== + dependencies: + chalk "^5.3.0" + commander "^12.1.0" + +"@solana/options@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.2.tgz#13ff008bf43a5056ef9a091dc7bb3f39321e867e" + integrity sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + +"@solana/options@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.4.tgz#212d35d1da87c7efb13de4d3569ad9eb070f013d" + integrity sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-data-structures" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/codecs-strings" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/spl-token-group@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.5.tgz#f955dcca782031c85e862b2b46878d1bb02db6c2" + integrity sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ== + dependencies: + "@solana/codecs" "2.0.0-preview.4" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token-metadata@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.4.tgz#5cdc3b857a8c4a6877df24e24a8648c4132d22ba" + integrity sha512-N3gZ8DlW6NWDV28+vCCDJoTqaCZiF/jDUnk3o8GRkAFzHObiR60Bs1gXHBa8zCPdvOwiG6Z3dg5pg7+RW6XNsQ== + dependencies: + "@solana/codecs" "2.0.0-preview.2" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token@^0.4.8": + version "0.4.8" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.8.tgz#a84e4131af957fa9fbd2727e5fc45dfbf9083586" + integrity sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.5" + "@solana/spl-token-metadata" "^0.1.3" + buffer "^6.0.3" + +"@solana/spl-type-length-value@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b" + integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== + dependencies: + buffer "^6.0.3" + +"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.68.0": + version "1.95.0" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.0.tgz#9cf08383e7dcba212a73d78349cf9b25bc34764f" + integrity sha512-iHwJ/HcWrF9qbnI1ctwI1UXHJ0vZXRpnt+lI5UcQIk8WvJNuQ5gV06icxzM6B7ojUES85Q1/FM4jZ49UQ8yZZQ== + dependencies: + "@babel/runtime" "^7.24.7" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.0" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@swc/helpers@^0.5.11": + version "0.5.12" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.12.tgz#37aaca95284019eb5d2207101249435659709f4b" + integrity sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g== + dependencies: + tslib "^2.4.0" + +"@types/bn.js@^5.1.0": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + +"@types/chai@^4.3.0": + version "4.3.16" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.16.tgz#b1572967f0b8b60bf3f87fe1d854a5604ea70c82" + integrity sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ== + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/mocha@^9.0.0": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + +"@types/node@*": + version "20.14.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.10.tgz#a1a218290f1b6428682e3af044785e5874db469a" + integrity sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ== + dependencies: + undici-types "~5.26.4" + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@types/ws@^8.2.2": + version "8.5.11" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.11.tgz#90ad17b3df7719ce3e6bc32f83ff954d38656508" + integrity sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w== + dependencies: + "@types/node" "*" + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +agentkeepalive@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.10" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" + integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +bignumber.js@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +buffer-from@^1.0.0, buffer-from@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-layout@^1.2.0, buffer-layout@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" + integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.0.8" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== + dependencies: + node-gyp-build "^4.3.0" + +camelcase@^6.0.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +chai@^4.3.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.0.8" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^12.0.0, commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +crypto-hash@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" + integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== + +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^3.1.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +jayson@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.1.tgz#282ff13d3cea09776db684b7eeca98c47b2fa99a" + integrity sha512-5ZWm4Q/0DHPyeMfAsrwViwUS2DMVsQgWh8bEEIVTkfb3DzHZ2L3G5WUnF+AKmGjjM9r1uAv73SaqC1/U4RL45w== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.5.10" + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mocha@^9.0.3: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.3" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" + ms "2.1.3" + nanoid "3.3.1" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + workerpool "6.2.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-fetch@^2.6.12, node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.3.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" + integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pako@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prettier@^2.6.2: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +rpc-websockets@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.2.tgz#4c1568d00b8100f997379a363478f41f8f4b242c" + integrity sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +source-map-support@^0.5.6: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +superstruct@^0.15.4: + version "0.15.5" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" + integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== + +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-mocha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.0.0.tgz#41a8d099ac90dbbc64b06976c5025ffaebc53cb9" + integrity sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw== + dependencies: + ts-node "7.0.1" + optionalDependencies: + tsconfig-paths "^3.5.0" + +ts-node@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" + integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== + dependencies: + arrify "^1.0.0" + buffer-from "^1.1.0" + diff "^3.1.0" + make-error "^1.1.1" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map-support "^0.5.6" + yn "^2.0.0" + +tsconfig-paths@^3.5.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.0.3, tslib@^2.4.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + +type-detect@^4.0.0, type-detect@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +typescript@^4.3.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.5.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + integrity sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 629b3913..3081dd80 100644 --- a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,3 +1,4 @@ +use fuzz_instructions::hello_world_fuzz_instructions::Initialize; use hello_world::entry as entry_hello_world; use hello_world::ID as PROGRAM_ID_HELLO_WORLD; const PROGRAM_NAME_HELLO_WORLD: &str = "hello_world"; @@ -11,7 +12,14 @@ mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData {} +impl FuzzDataBuilder for MyFuzzData { + fn pre_ixs( + u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + let init = FuzzInstruction_hello_world::Initialize(Initialize::arbitrary(u)?); + Ok(vec![init]) + } +} fn main() { loop { diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index bd8763b4..5491a092 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,3 +1,4 @@ +use fuzz_instructions::incorrect_integer_arithmetic_3_fuzz_instructions::InitVesting; use incorrect_integer_arithmetic_3::entry as entry_incorrect_integer_arithmetic_3; use incorrect_integer_arithmetic_3::ID as PROGRAM_ID_INCORRECT_INTEGER_ARITHMETIC_3; const PROGRAM_NAME_INCORRECT_INTEGER_ARITHMETIC_3: &str = "incorrect_integer_arithmetic_3"; @@ -11,7 +12,16 @@ mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData {} +impl FuzzDataBuilder for MyFuzzData { + fn pre_ixs( + u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + let init_ix = + FuzzInstruction_incorrect_integer_arithmetic_3::InitVesting(InitVesting::arbitrary(u)?); + + Ok(vec![init_ix]) + } +} fn main() { loop { diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index f2b692e5..5b7919a3 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,3 +1,4 @@ +use fuzz_instructions::incorrect_ix_sequence_1_fuzz_instructions::Initialize; use incorrect_ix_sequence_1::entry as entry_incorrect_ix_sequence_1; use incorrect_ix_sequence_1::ID as PROGRAM_ID_INCORRECT_IX_SEQUENCE_1; const PROGRAM_NAME_INCORRECT_IX_SEQUENCE_1: &str = "incorrect_ix_sequence_1"; @@ -11,7 +12,15 @@ mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData {} +impl FuzzDataBuilder for MyFuzzData { + fn pre_ixs( + u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + let init_ix = + FuzzInstruction_incorrect_ix_sequence_1::Initialize(Initialize::arbitrary(u)?); + Ok(vec![init_ix]) + } +} fn main() { loop { diff --git a/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 20151e03..16ed8311 100644 --- a/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,4 +1,6 @@ use callee::entry as entry_callee; +use caller::entry as entry_caller; + use callee::ID as PROGRAM_ID_CALLEE; use caller::ID as PROGRAM_ID_CALLER; const PROGRAM_NAME_CALLEE: &str = "callee"; @@ -24,7 +26,7 @@ fn main() { let fuzzing_program1 = FuzzingProgram::new( PROGRAM_NAME_CALLER, &PROGRAM_ID_CALLER, - None + processor!(convert_entry!(entry_caller)) ); // `entry_fn`` example: processor!(convert_entry!(program_entry)) diff --git a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 8eb7341e..62f6df2e 100644 --- a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,3 +1,4 @@ +use fuzz_instructions::unauthorized_access_2_fuzz_instructions::Initialize; use unauthorized_access_2::entry as entry_unauthorized_access_2; use unauthorized_access_2::ID as PROGRAM_ID_UNAUTHORIZED_ACCESS_2; const PROGRAM_NAME_UNAUTHORIZED_ACCESS_2: &str = "unauthorized_access_2"; @@ -11,7 +12,15 @@ mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData {} +impl FuzzDataBuilder for MyFuzzData { + fn pre_ixs( + u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + let init_ix = FuzzInstruction_unauthorized_access_2::Initialize(Initialize::arbitrary(u)?); + + Ok(vec![init_ix]) + } +} fn main() { loop { diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 1d5fb963..eda60538 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -1,3 +1,4 @@ +use fuzz_instructions::unchecked_arithmetic_0_fuzz_instructions::Initialize; use unchecked_arithmetic_0::entry as entry_unchecked_arithmetic_0; use unchecked_arithmetic_0::ID as PROGRAM_ID_UNCHECKED_ARITHMETIC_0; const PROGRAM_NAME_UNCHECKED_ARITHMETIC_0: &str = "unchecked_arithmetic_0"; @@ -11,7 +12,14 @@ mod accounts_snapshots; struct MyFuzzData; -impl FuzzDataBuilder for MyFuzzData {} +impl FuzzDataBuilder for MyFuzzData { + fn pre_ixs( + u: &mut arbitrary::Unstructured, + ) -> arbitrary::Result> { + let init = FuzzInstruction_unchecked_arithmetic_0::Initialize(Initialize::arbitrary(u)?); + Ok(vec![init]) + } +} fn main() { loop {