From 3a1b446871cbb687ab818fcaa26139ff9ac7c1d5 Mon Sep 17 00:00:00 2001 From: Emanuele Cesena Date: Mon, 22 Apr 2024 19:11:50 -0700 Subject: [PATCH] openfund v2 --- anchor/Anchor.toml | 5 +- anchor/Cargo.lock | 396 +- anchor/Cargo.toml | 6 +- anchor/package.json | 4 +- anchor/programs/glam/src/constants.rs | 4 +- .../programs/glam/src/instructions/manager.rs | 4 +- .../glam/src/instructions/manager_v2.rs | 116 + anchor/programs/glam/src/instructions/mod.rs | 2 + anchor/programs/glam/src/lib.rs | 8 + anchor/programs/glam/src/state/fund.rs | 231 + anchor/programs/glam/src/state/mod.rs | 3 + anchor/programs/glam/src/state/openfund.rs | 258 + anchor/src/client.ts | 145 + anchor/src/clientConfig.ts | 7 + .../src/{glam-exports.ts => glamExports.ts} | 8 +- anchor/src/index.ts | 2 +- anchor/target/idl/glam.json | 2530 ++++++--- anchor/target/types/glam.ts | 5058 ++++++++++++++--- anchor/tests/glam_crud.spec.ts | 65 +- api/app.yaml | 3 + api/package.json | 1 + api/pnpm-lock.yaml | 3816 +++++++------ api/server.js | 3 +- package.json | 2 +- pnpm-lock.yaml | 18 +- web/src/app/glam/glam-data-access.tsx | 2 +- 26 files changed, 9294 insertions(+), 3403 deletions(-) create mode 100644 anchor/programs/glam/src/instructions/manager_v2.rs create mode 100644 anchor/programs/glam/src/state/openfund.rs create mode 100644 anchor/src/client.ts create mode 100644 anchor/src/clientConfig.ts rename anchor/src/{glam-exports.ts => glamExports.ts} (84%) diff --git a/anchor/Anchor.toml b/anchor/Anchor.toml index 9fd48d79..663f0adc 100644 --- a/anchor/Anchor.toml +++ b/anchor/Anchor.toml @@ -1,4 +1,5 @@ [toolchain] +anchor_version = "0.29.0" [features] seeds = false @@ -27,8 +28,8 @@ cluster = "localnet" wallet = "~/.config/solana/id.json" [scripts] -test = "../node_modules/.bin/nx run anchor:jest --verbose --testPathPattern tests/ --testNamePattern glam_investor" -# test = "../node_modules/.bin/nx run anchor:jest --verbose --testPathPattern tests/ --testNamePattern glam_crud" +#test = "../node_modules/.bin/nx run anchor:jest --verbose --testPathPattern tests/ --testNamePattern glam_investor" +test = "../node_modules/.bin/nx run anchor:jest --verbose --testPathPattern tests/ --testNamePattern glam_crud" #test = "../node_modules/.bin/nx run anchor:jest --verbose --testPathPattern tests/ --testNamePattern devnet" [test] diff --git a/anchor/Cargo.lock b/anchor/Cargo.lock index e3bac320..07f7297b 100644 --- a/anchor/Cargo.lock +++ b/anchor/Cargo.lock @@ -72,11 +72,11 @@ dependencies = [ [[package]] name = "anchor-attribute-access-control" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7368e171b3a317885dc08ec0f74eed9d0ad6c726cc819593aed81440dca926" +checksum = "e5f619f1d04f53621925ba8a2e633ba5a6081f2ae14758cbb67f38fd823e0a3e" dependencies = [ - "anchor-syn 0.30.0", + "anchor-syn 0.29.0", "proc-macro2", "quote", "syn 1.0.109", @@ -84,11 +84,11 @@ dependencies = [ [[package]] name = "anchor-attribute-account" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f527df85a8cba3f2bea04e46ed71b66e525ea378c7fec538aa205f4520b73e31" +checksum = "e7f2a3e1df4685f18d12a943a9f2a7456305401af21a07c9fe076ef9ecd6e400" dependencies = [ - "anchor-syn 0.30.0", + "anchor-syn 0.29.0", "bs58 0.5.1", "proc-macro2", "quote", @@ -97,33 +97,33 @@ dependencies = [ [[package]] name = "anchor-attribute-constant" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb1dc1845cf8636c2e046a274ca074dabd3884ac8ed11cc4ed64b7e8ef5a318" +checksum = "9423945cb55627f0b30903288e78baf6f62c6c8ab28fb344b6b25f1ffee3dca7" dependencies = [ - "anchor-syn 0.30.0", + "anchor-syn 0.29.0", "quote", "syn 1.0.109", ] [[package]] name = "anchor-attribute-error" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f382e41514c59a77ffa7bb1a47df9a0359564a749b6934485c742c11962e540" +checksum = "93ed12720033cc3c3bf3cfa293349c2275cd5ab99936e33dd4bf283aaad3e241" dependencies = [ - "anchor-syn 0.30.0", + "anchor-syn 0.29.0", "quote", "syn 1.0.109", ] [[package]] name = "anchor-attribute-event" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473a122aeed3f6b666438236338d2ef7833ee5fdc5688e1baa80185d61088a53" +checksum = "eef4dc0371eba2d8c8b54794b0b0eb786a234a559b77593d6f80825b6d2c77a2" dependencies = [ - "anchor-syn 0.30.0", + "anchor-syn 0.29.0", "proc-macro2", "quote", "syn 1.0.109", @@ -131,39 +131,33 @@ dependencies = [ [[package]] name = "anchor-attribute-program" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f88c7ffe2eb40aeac43ffd0d74a6671581158aedfaa0552330a2ef92fa5c889" +checksum = "b18c4f191331e078d4a6a080954d1576241c29c56638783322a18d308ab27e4f" dependencies = [ - "anchor-lang-idl", - "anchor-syn 0.30.0", - "anyhow", - "bs58 0.5.1", - "heck 0.3.3", - "proc-macro2", + "anchor-syn 0.29.0", "quote", - "serde_json", "syn 1.0.109", ] [[package]] name = "anchor-derive-accounts" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9b97c99dcec135aae0ff908c14bcfcd3e78cfc16a0c6f245135038f0e6d390" +checksum = "5de10d6e9620d3bcea56c56151cad83c5992f50d5960b3a9bebc4a50390ddc3c" dependencies = [ - "anchor-syn 0.30.0", + "anchor-syn 0.29.0", "quote", "syn 1.0.109", ] [[package]] name = "anchor-derive-serde" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbece98f6ad9c37070edc0841326c9623a249346cd74f433e7cef69b14f7f31d" +checksum = "f4e2e5be518ec6053d90a2a7f26843dbee607583c779e6c8395951b9739bdfbe" dependencies = [ - "anchor-syn 0.30.0", + "anchor-syn 0.29.0", "borsh-derive-internal 0.10.3", "proc-macro2", "quote", @@ -172,9 +166,9 @@ dependencies = [ [[package]] name = "anchor-derive-space" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8badbe2648bc99a85ee05a7a5f9512e5e2af8ffac71476a69350cb278057ac53" +checksum = "1ecc31d19fa54840e74b7a979d44bcea49d70459de846088a1d71e87ba53c419" dependencies = [ "proc-macro2", "quote", @@ -229,9 +223,9 @@ dependencies = [ [[package]] name = "anchor-lang" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e41feb9c1cd9f4b0fad1c004fc8f289183f3ce27e9db38fa6e434470c716fb1e" +checksum = "35da4785497388af0553586d55ebdc08054a8b1724720ef2749d313494f2b8ad" dependencies = [ "anchor-attribute-access-control", "anchor-attribute-account", @@ -242,9 +236,9 @@ dependencies = [ "anchor-derive-accounts", "anchor-derive-serde", "anchor-derive-space", - "anchor-lang-idl", + "anchor-syn 0.29.0", "arrayref", - "base64 0.21.7", + "base64 0.13.1", "bincode", "borsh 0.10.3", "bytemuck", @@ -253,32 +247,17 @@ dependencies = [ "thiserror", ] -[[package]] -name = "anchor-lang-idl" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b29da81eae478b1bb846749b06b8a2cb9c6f9ed26ca793b0c916793fdf36adab" -dependencies = [ - "anchor-syn 0.30.0", - "anyhow", - "regex", - "serde", - "serde_json", -] - [[package]] name = "anchor-spl" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcee54a30b27ea8317ca647759b5d9701a8c7caaaa0c922c6d3c306a7278a7a" +checksum = "6c4fd6e43b2ca6220d2ef1641539e678bfc31b6cc393cf892b373b5997b6a39a" dependencies = [ "anchor-lang", + "solana-program", "spl-associated-token-account", - "spl-pod", "spl-token", - "spl-token-2022", - "spl-token-group-interface", - "spl-token-metadata-interface", + "spl-token-2022 0.9.0", ] [[package]] @@ -302,13 +281,12 @@ dependencies = [ [[package]] name = "anchor-syn" -version = "0.30.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac53f2378bc08e89e20c2b893c01986ffd34cfbc69a17e35bd6f754753e9fdad" +checksum = "d9101b84702fed2ea57bd22992f75065da5648017135b844283a2f6d74f27825" dependencies = [ "anyhow", "bs58 0.5.1", - "cargo_toml", "heck 0.3.3", "proc-macro2", "quote", @@ -483,6 +461,12 @@ 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" @@ -738,16 +722,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" -[[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.12", -] - [[package]] name = "cc" version = "1.0.94" @@ -1136,8 +1110,8 @@ dependencies = [ "drift", "pyth-sdk-solana", "solana-program", - "spl-token-2022", - "spl-token-metadata-interface", + "spl-token-2022 2.0.2", + "spl-token-metadata-interface 0.3.3", ] [[package]] @@ -1592,7 +1566,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" dependencies = [ - "toml 0.5.11", + "toml", ] [[package]] @@ -1601,7 +1575,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -1961,15 +1935,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_spanned" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" -dependencies = [ - "serde", -] - [[package]] name = "serde_with" version = "2.3.3" @@ -2274,20 +2239,31 @@ dependencies = [ [[package]] name = "spl-associated-token-account" -version = "3.0.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e688554bac5838217ffd1fab7845c573ff106b6336bf7d290db7c98d5a8efd" +checksum = "4414117bead33f2a5cf059cefac0685592bdd36f31f3caac49b89bff7f6bbf32" dependencies = [ "assert_matches", - "borsh 1.4.0", + "borsh 0.10.3", "num-derive 0.4.2", "num-traits", "solana-program", "spl-token", - "spl-token-2022", + "spl-token-2022 2.0.2", "thiserror", ] +[[package]] +name = "spl-discriminator" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive 0.1.2", +] + [[package]] name = "spl-discriminator" version = "0.2.2" @@ -2296,7 +2272,18 @@ checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator-derive", + "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.59", ] [[package]] @@ -2306,10 +2293,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", - "spl-discriminator-syn", + "spl-discriminator-syn 0.2.0", "syn 2.0.59", ] +[[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.59", + "thiserror", +] + [[package]] name = "spl-discriminator-syn" version = "0.2.0" @@ -2332,6 +2332,19 @@ dependencies = [ "solana-program", ] +[[package]] +name = "spl-pod" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" +dependencies = [ + "borsh 0.10.3", + "bytemuck", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error 0.3.1", +] + [[package]] name = "spl-pod" version = "0.2.2" @@ -2342,7 +2355,20 @@ dependencies = [ "bytemuck", "solana-program", "solana-zk-token-sdk", - "spl-program-error", + "spl-program-error 0.4.0", +] + +[[package]] +name = "spl-program-error" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" +dependencies = [ + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-program-error-derive 0.3.2", + "thiserror", ] [[package]] @@ -2354,10 +2380,22 @@ dependencies = [ "num-derive 0.4.2", "num-traits", "solana-program", - "spl-program-error-derive", + "spl-program-error-derive 0.4.0", "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.59", +] + [[package]] name = "spl-program-error-derive" version = "0.4.0" @@ -2372,16 +2410,30 @@ dependencies = [ [[package]] name = "spl-tlv-account-resolution" -version = "0.6.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" +checksum = "062e148d3eab7b165582757453632ffeef490c02c86a48bfdb4988f63eefb3b9" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +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]] @@ -2401,9 +2453,31 @@ dependencies = [ [[package]] name = "spl-token-2022" -version = "3.0.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" +checksum = "e4abf34a65ba420584a0c35f3903f8d727d1f13ababbdc3f714c6b065a686e86" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "num_enum", + "solana-program", + "solana-zk-token-sdk", + "spl-memo", + "spl-pod 0.1.1", + "spl-token", + "spl-token-metadata-interface 0.2.1", + "spl-transfer-hook-interface 0.3.0", + "spl-type-length-value 0.3.1", + "thiserror", +] + +[[package]] +name = "spl-token-2022" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "309a3b7982b34879a196f263bdb53ef80f0341dfdf589084c0a15dc4c40418be" dependencies = [ "arrayref", "bytemuck", @@ -2414,26 +2488,40 @@ dependencies = [ "solana-security-txt", "solana-zk-token-sdk", "spl-memo", - "spl-pod", + "spl-pod 0.1.1", "spl-token", "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-transfer-hook-interface", - "spl-type-length-value", + "spl-token-metadata-interface 0.2.1", + "spl-transfer-hook-interface 0.5.1", + "spl-type-length-value 0.3.1", "thiserror", ] [[package]] name = "spl-token-group-interface" -version = "0.2.3" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" +checksum = "7eb67fbacd587377a400aba81718abe4424d0e9d5ea510034d3b7f130d102153" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", + "spl-discriminator 0.1.1", + "spl-pod 0.1.1", + "spl-program-error 0.3.1", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16aa8f64b6e0eaab3f5034e84d867c8435d8216497b4543a4978a31f4b6e8a8" +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]] @@ -2444,26 +2532,55 @@ checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" dependencies = [ "borsh 1.4.0", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", + "spl-discriminator 0.2.2", + "spl-pod 0.2.2", + "spl-program-error 0.4.0", + "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", ] [[package]] name = "spl-transfer-hook-interface" -version = "0.6.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" +checksum = "5f6dfe329fcff44cbe2eea994bd8f737f0b0a69faed39e56f9b6ee03badf7e14" dependencies = [ "arrayref", "bytemuck", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-tlv-account-resolution", - "spl-type-length-value", + "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-type-length-value" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.1.1", + "spl-pod 0.1.1", + "spl-program-error 0.3.1", ] [[package]] @@ -2474,9 +2591,9 @@ checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", + "spl-discriminator 0.2.2", + "spl-pod 0.2.2", + "spl-program-error 0.4.0", ] [[package]] @@ -2597,26 +2714,11 @@ dependencies = [ "serde", ] -[[package]] -name = "toml" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.22.9", -] - [[package]] name = "toml_datetime" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" -dependencies = [ - "serde", -] [[package]] name = "toml_edit" @@ -2626,20 +2728,7 @@ checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap", "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow 0.6.6", + "winnow", ] [[package]] @@ -2868,15 +2957,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winnow" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" -dependencies = [ - "memchr", -] - [[package]] name = "yansi" version = "0.5.1" diff --git a/anchor/Cargo.toml b/anchor/Cargo.toml index e8688935..00fe47bf 100644 --- a/anchor/Cargo.toml +++ b/anchor/Cargo.toml @@ -14,12 +14,12 @@ incremental = false codegen-units = 1 [workspace.dependencies] -anchor-lang = { version="0.30.0", features=["init-if-needed"] } -anchor-spl = "0.30.0" +anchor-lang = { version="0.29.0", features=["init-if-needed"] } +anchor-spl = "0.29.0" solana-program = "=1.18.11" anchor-gen = "0.3.1" -spl-token-2022 = "3.0.2" +spl-token-2022 = "=2.0.2" spl-token-metadata-interface = "0.3.3" spl-transfer-hook-interface = "0.6.3" pyth-sdk-solana = "0.10.1" diff --git a/anchor/package.json b/anchor/package.json index c3373aa3..0d0da33a 100644 --- a/anchor/package.json +++ b/anchor/package.json @@ -1,6 +1,6 @@ { - "name": "@glam/anchor", - "version": "0.0.1", + "name": "@glam/protocol", + "version": "0.2.0", "dependencies": {}, "type": "commonjs", "main": "./index.cjs", diff --git a/anchor/programs/glam/src/constants.rs b/anchor/programs/glam/src/constants.rs index fae45359..510ac534 100644 --- a/anchor/programs/glam/src/constants.rs +++ b/anchor/programs/glam/src/constants.rs @@ -1,4 +1,4 @@ use anchor_lang::prelude::*; -#[constant] -pub const SEED: &str = "anchor"; +// #[constant] +// pub const SEED: &str = "anchor"; diff --git a/anchor/programs/glam/src/instructions/manager.rs b/anchor/programs/glam/src/instructions/manager.rs index a246446d..7de2abc7 100644 --- a/anchor/programs/glam/src/instructions/manager.rs +++ b/anchor/programs/glam/src/instructions/manager.rs @@ -7,9 +7,9 @@ use crate::error::ManagerError; use crate::state::fund::*; #[derive(Accounts)] -#[instruction(name: String)] +#[instruction(fund_name: String)] pub struct InitializeFund<'info> { - #[account(init, seeds = [b"fund".as_ref(), manager.key().as_ref(), name.as_ref()], bump, payer = manager, space = 8 + Fund::INIT_SIZE + ShareClassMetadata::INIT_SIZE)] + #[account(init, seeds = [b"fund".as_ref(), manager.key().as_ref(), fund_name.as_ref()], bump, payer = manager, space = 8 + Fund::INIT_SIZE + ShareClassMetadata::INIT_SIZE)] pub fund: Box>, #[account(init, seeds = [b"treasury".as_ref(), fund.key().as_ref()], bump, payer = manager, space = 8 + Treasury::INIT_SIZE)] diff --git a/anchor/programs/glam/src/instructions/manager_v2.rs b/anchor/programs/glam/src/instructions/manager_v2.rs new file mode 100644 index 00000000..02d5f60a --- /dev/null +++ b/anchor/programs/glam/src/instructions/manager_v2.rs @@ -0,0 +1,116 @@ +use anchor_lang::{prelude::*, system_program}; +use anchor_spl::token_2022; +use anchor_spl::token_interface::{Mint, Token2022}; +use spl_token_2022::{extension::ExtensionType, state::Mint as StateMint}; + +use crate::error::ManagerError; +use crate::state::fund::*; + +#[derive(Accounts)] +#[instruction(fund_model: FundModel)] +pub struct InitializeFundV2<'info> { + #[account(init, seeds = [b"fund".as_ref(), manager.key().as_ref(), fund_model.created.as_ref().unwrap().key.as_ref()], bump, payer = manager, space = FundAccount::INIT_SIZE)] + pub fund: Box>, + + #[account(init, seeds = [b"openfund".as_ref(), fund.key().as_ref()], bump, payer = manager, space = FundMetadataAccount::INIT_SIZE)] + pub openfund: Box>, + + // #[account(seeds = [b"treasury".as_ref(), fund.key().as_ref()], bump, seeds::program = engine)] + #[account(mut, seeds = [b"treasury".as_ref(), fund.key().as_ref()], bump)] + pub treasury: SystemAccount<'info>, + + /// CHECK: we'll create the account later on with metadata + #[account(mut)] + pub share: AccountInfo<'info>, + + #[account(mut)] + pub manager: Signer<'info>, + + // pub engine: Program<'info, TODO>, + pub system_program: Program<'info, System>, + pub token_program: Program<'info, Token2022>, + pub rent: Sysvar<'info, Rent>, +} + +pub fn initialize_fund_v2_handler<'c: 'info, 'info>( + ctx: Context<'_, '_, 'c, 'info, InitializeFundV2<'info>>, + fund_model: FundModel, +) -> Result<()> { + // + // Validate the input + // + /* + require!( + fund.name.as_bytes().len() <= MAX_FUND_NAME, + ManagerError::InvalidFundName + ); + require!( + fund_symbol.as_bytes().len() <= MAX_FUND_SYMBOL, + ManagerError::InvalidFundSymbol + ); + require!( + fund_uri.as_bytes().len() <= MAX_FUND_URI, + ManagerError::InvalidFundUri + ); + + let assets_len = ctx.remaining_accounts.len(); + require!( + asset_weights.len() == assets_len, + ManagerError::InvalidAssetsLen + ); + */ + + // + // Initialize the fund + // + let fund = &mut ctx.accounts.fund; + let treasury = &mut ctx.accounts.treasury; + let share = &mut ctx.accounts.share; + let openfund = &mut ctx.accounts.openfund; + + // fund.name = fund_name; + // fund.uri = fund_uri; + fund.treasury = treasury.key(); + fund.share_class = vec![share.key()]; + fund.openfund = openfund.key(); + // fund.openfund_uri = openfund_uri; + fund.manager = ctx.accounts.manager.key(); + + fund.params = vec![vec![ + // GlamParam { + // key: OFKey::Symbol, + // val: OFValue::String { val: fund_symbol }, + // }, + // GlamParam { + // key: OFKey::TimeCreated, + // val: OFValue::Timestamp { + // val: Clock::get()?.unix_timestamp, + // }, + // }, + // GlamParam { + // key: OFKey::Active, + // val: OFValue::Boolean { val: activate }, + // }, + ]]; + // fund.symbol = fund_symbol; + // fund.bump_fund = ctx.bumps.fund; + // fund.bump_treasury = ctx.bumps.treasury; + // fund.time_created = Clock::get()?.unix_timestamp; + // fund.share_classes_len = 1; + // fund.share_classes[0] = ctx.accounts.share.key(); + // fund.share_classes_metadata[0] = share_class_metadata.clone(); + // fund.share_classes_bumps[0] = ctx.bumps.share; + + // fund.assets_len = assets_len as u8; + // for (i, account) in ctx.remaining_accounts.iter().enumerate() { + // let asset = InterfaceAccount::::try_from(account).expect("invalid asset"); + // fund.assets[i] = asset.key(); + // } + // for (i, &w) in asset_weights.iter().enumerate() { + // fund.assets_weights[i] = w; + // } + // fund.is_active = activate; + + msg!("Fund created: {}", ctx.accounts.fund.key()); + Ok(()) +} diff --git a/anchor/programs/glam/src/instructions/mod.rs b/anchor/programs/glam/src/instructions/mod.rs index 9a396c2d..08f665fb 100644 --- a/anchor/programs/glam/src/instructions/mod.rs +++ b/anchor/programs/glam/src/instructions/mod.rs @@ -1,7 +1,9 @@ pub mod drift; pub mod investor; pub mod manager; +pub mod manager_v2; pub use self::drift::*; pub use investor::*; pub use manager::*; +pub use manager_v2::*; diff --git a/anchor/programs/glam/src/lib.rs b/anchor/programs/glam/src/lib.rs index 8469ca04..35950942 100644 --- a/anchor/programs/glam/src/lib.rs +++ b/anchor/programs/glam/src/lib.rs @@ -15,6 +15,14 @@ declare_id!("Gco1pcjxCMYjKJjSNJ7mKV7qezeUTE7arXJgy7PAPNRc"); pub mod glam { use super::*; + // V2 + pub fn initialize_v2<'c: 'info, 'info>( + ctx: Context<'_, '_, 'c, 'info, InitializeFundV2<'info>>, + fund: FundModel, + ) -> Result<()> { + manager_v2::initialize_fund_v2_handler(ctx, fund) + } + // Manager pub fn initialize<'c: 'info, 'info>( diff --git a/anchor/programs/glam/src/state/fund.rs b/anchor/programs/glam/src/state/fund.rs index f583e103..5ffad8dd 100644 --- a/anchor/programs/glam/src/state/fund.rs +++ b/anchor/programs/glam/src/state/fund.rs @@ -1,11 +1,220 @@ use anchor_lang::prelude::*; +use super::openfund::*; + pub const MAX_ASSETS: usize = 5; pub const MAX_SHARE_CLASSES: usize = 3; pub const MAX_FUND_NAME: usize = 50; pub const MAX_FUND_SYMBOL: usize = 20; pub const MAX_FUND_URI: usize = 100; +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub enum OFKey { + Symbol, + TimeCreated, + Active, + Hello, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub enum OFValue { + // openfund + Boolean { val: bool }, + Date { val: String }, // YYYY-MM-DD + Double { val: i64 }, + Integer { val: i32 }, + String { val: String }, + Time { val: String }, // hh:mm (24 hour) + // more types + U8 { val: u8 }, + U64 { val: u64 }, + Pubkey { val: Pubkey }, + Percentage { val: u32 }, // 100% = 1_000_000 + URI { val: String }, + Timestamp { val: i64 }, + VecPubkey { val: Vec }, + VecU32 { val: Vec }, +} +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct GlamParam { + pub key: OFKey, + pub val: OFValue, +} + +// impl From for Map { +// fn from(of: OpenfundFund) -> Self { +// let mut v = vec![]; +// if of.FundDomicileAlpha2 != "" { +// v.push(KV( +// "Fund Domicile Alpha-2".to_string(), +// Value::String(of.FundDomicileAlpha2), +// )) +// } +// if of.FundDomicileAlpha3 != "" { +// v.push(KV( +// "Fund Domicile Alpha-3".to_string(), +// Value::String(of.FundDomicileAlpha3), +// )) +// } +// if of.LegalFundNameIncludingUmbrella != "" { +// v.push(KV( +// "Legal Fund Name Including Umbrella".to_string(), +// Value::String(of.LegalFundNameIncludingUmbrella), +// )) +// } +// v +// } +// } + +// impl From for OpenfundFund { +// fn from(m: Map) -> Self { +// let mut of = OpenfundFund::default(); +// for kv in m.iter() { +// match kv.clone().1 { +// Value::String(v) => match kv.0.as_str() { +// "Fund Domicile Alpha-2" => of.FundDomicileAlpha2 = v.to_string(), +// "Fund Domicile Alpha-3" => of.FundDomicileAlpha3 = v.to_string(), +// "Legal Fund Name Including Umbrella" => { +// of.LegalFundNameIncludingUmbrella = v.to_string() +// } +// _ => { /* do nothing */ } +// }, +// _ => { /* do nothing */ } +// } +// } +// of +// } +// } + +#[account] +pub struct FundAccount { + pub name: String, + pub uri: String, + pub treasury: Pubkey, + pub share_class: Vec, + pub openfund: Pubkey, + pub openfund_uri: String, + pub manager: Pubkey, + pub engine: Pubkey, + pub params: Vec>, // params[0]: EngineFundParams, ... +} +impl FundAccount { + pub const INIT_SIZE: usize = 1024; +} + +#[account] +pub struct FundMetadataAccount { + pub fund_pubkey: Pubkey, + pub company: Vec, + pub fund: Vec, + pub share_class: Vec>, + pub fund_manager: Vec>, +} +impl FundMetadataAccount { + pub const INIT_SIZE: usize = 1024; +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct ShareClassModel { + pub symbol: Option, + pub name: Option, + pub uri: Option, // metadata uri + pub asset: Option, // asset denom + pub asset_pubkey: Option, + pub isin: Option, + pub status: Option, + pub policy_distribution: Option, + pub extension: Option, + pub launch_date: Option, + pub lifecycle: Option, + pub image_uri: Option, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct CompanyModel { + pub name: Option, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub enum ManagerKind { + Wallet, + Squads, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct ManagerModel { + pub pubkey: Option, + pub name: Option, + pub kind: Option, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct CreatedModel { + pub key: [u8; 8], + pub manager: Option, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct FundModel { + // pub name: String, + // pub symbol: Option, + pub id: Option, + pub symbol: Option, + pub name: Option, + pub uri: Option, + pub uri_openfund: Option, + pub is_active: Option, + + // assets + pub assets: Vec, + pub assets_weights: Vec, + + // relationships + pub share_class: Vec, + pub company: Option, + pub manager: Option, + pub created: Option, +} + +pub enum EngineModule { + Drift, + Squads, + Marinade, + Orca, + Jupiter, +} + +pub struct EngineFundParams { + pub create_manager: Pubkey, + pub create_name: String, + pub create_bump: u8, + pub create_time: i64, + pub assets: Vec, + pub assets_weigths: Vec, + pub manager_kind: ManagerKind, + pub external_aum: u64, + pub external_aum_timestamp: i64, + pub mods_enabled: Vec, + pub mods_drift_delegated_account: Pubkey, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub enum ShareClassStatus { + Open, + SoftClosed, + HardClosed, + ClosedForRedemption, + ClosedForSubscriptionAndRedemption, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct EngineShareClassParams { + pub status: ShareClassStatus, + pub subscribe_filter: bool, + pub subscribe_allow_list: Vec, + pub subscribe_deny_list: Vec, +} + #[account] pub struct Fund { pub manager: Pubkey, // 32 @@ -63,3 +272,25 @@ impl ShareClassMetadata { // 2. for each KV pair in metadata, keys ("name" etc) also take up space pub const INIT_SIZE: usize = MAX_FUND_NAME + MAX_FUND_SYMBOL + MAX_FUND_URI + 500; } + +// #[cfg(test)] +// mod tests { +// use super::*; + +// #[test] +// fn from_conversion() { +// let of = OpenfundFund { +// FundDomicileAlpha2: "100 Some St., San Francisco, CA, 94100, US".to_string(), +// FundDomicileAlpha3: "".to_string(), +// LegalFundNameIncludingUmbrella: "Fund in SF".to_string(), +// }; + +// let m = Map::from(of.clone()); +// println!("map={:#?}", m); + +// let of2: OpenfundFund = m.into(); +// println!("of={:#?}", of2); + +// assert!(of == of2); +// } +// } diff --git a/anchor/programs/glam/src/state/mod.rs b/anchor/programs/glam/src/state/mod.rs index 0e83d9c0..aac12780 100644 --- a/anchor/programs/glam/src/state/mod.rs +++ b/anchor/programs/glam/src/state/mod.rs @@ -1,2 +1,5 @@ pub mod fund; +pub mod openfund; + pub use fund::*; +pub use openfund::*; diff --git a/anchor/programs/glam/src/state/openfund.rs b/anchor/programs/glam/src/state/openfund.rs new file mode 100644 index 00000000..3755e52f --- /dev/null +++ b/anchor/programs/glam/src/state/openfund.rs @@ -0,0 +1,258 @@ +use anchor_lang::prelude::*; + +/* + Openfund fields (key/value pairs), organized by kind: + Company, Fund, ShareClass, FundManager. + + Used by FundMetadataAccount. + + Each Field also has its corresponding FieldName enum. +*/ + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct CompanyField { + pub name: CompanyFieldName, + pub value: String, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct FundField { + pub name: FundFieldName, + pub value: String, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct ShareClassField { + pub name: ShareClassFieldName, + pub value: String, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub struct FundManagerField { + pub name: FundManagerFieldName, + pub value: String, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub enum CompanyFieldName { + // Essential + FundGroupName, + // Core + DomicileOfManCo, + ManCo, + // Additional + BICOfCustodian, + CollateralManagerName, + CustodianBankName, + DomicileOfCustodianBank, + FundAdministratorName, + FundAdvisorName, + FundPromoterName, + IsSelfManagedInvestmentCompany, + LEIOfCustodianBank, + LEIOfManCo, + PortfolioManagingCompanyName, + SecuritiesLendingCounterpartyName, + SwapCounterpartyName, + // Full + AddressofManCo, + AuditorName, + CityofManCo, + EmailAddressOfManCo, + FundWebsiteofManCo, + IsUNPRISignatory, + PhoneCountryCodeofManCo, + PhoneNumberofManCo, + SubInvestmentAdvisorName, + ZIPCodeofManCo, + // Umbrella + DomicileOfUmbrella, + HasUmbrella, + LEIOfUmbrella, + Umbrella, + GlobalIntermediaryIdentificationNumberOfUmbrella, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub enum FundFieldName { + // Essential + FundDomicileAlpha2, + FundDomicileAlpha3, + LegalFundNameIncludingUmbrella, + // Core + FiscalYearEnd, + FundCurrency, + FundLaunchDate, + InvestmentObjective, + IsETC, + IsEUDirectiveRelevant, + IsFundOfFunds, + IsPassiveFund, + IsREIT, + LegalForm, + LegalFundNameOnly, + OpenEndedOrClosedEndedFundStructure, + TypeOfEUDirective, + UCITSVersion, + // Additional + CurrencyHedgePortfolio, + DepositoryName, + FundValuationPoint, + FundValuationPointTimeZone, + FundValuationPointTimeZoneUsingTZDatabase, + HasCollateralManager, + HasEmbeddedDerivatives, + HasSecuritiesLending, + HasSwap, + IsLeveraged, + IsShariaCompliant, + IsShort, + LEIofDepositoryBank, + LEIOfFund, + LocationOfBearerShare, + LocationOfShareRegister, + MaximumLeverageInFund, + MiFIDSecuritiesClassification, + MoneyMarketTypeOfFund, + TrusteeName, + // Dynamic + AuMFund, + AuMFundDate, + NoSFund, + NoSFundDate, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub enum ShareClassFieldName { + // Essential + ISIN, + ShareClassCurrency, + // Core + AllInFeeApplied, + AllInFeeDate, + AllInFeeIncludesTransactionCosts, + AllInFeeMaximum, + AppliedSubscriptionFeeInFavourOfDistributor, + AppliedSubscriptionFeeInFavourOfDistributorReferenceDate, + Benchmark, + CountryLegalRegistration, + CountryMarketingDistribution, + CurrencyHedgeShareClass, + CurrencyofMinimalSubscription, + DistributionDeclarationFrequency, + FullShareClassName, + HasAllInFee, + HasOngoingCharges, + HasPerformanceFee, + HasSubscriptionFeeInFavourOfDistributor, + InvestmentStatus, + IsETF, + IsRDRCompliant, + IsTrailerFeeClean, + ManagementFeeApplied, + ManagementFeeAppliedReferenceDate, + ManagementFeeMaximum, + MaximumSubscriptionFeeInFavourOfDistributor, + MinimalInitialSubscriptionCategory, + MinimalInitialSubscriptionInAmount, + MinimalInitialSubscriptionInShares, + MinimalSubsequentSubscriptionCategory, + MinimalSubsequentSubscriptionInAmount, + MinimalSubsequentSubscriptionInShares, + MinimumSubscriptionFeeInFavourOfDistributor, + OngoingCharges, + OngoingChargesDate, + PerformanceFeeApplied, + PerformanceFeeAppliedReferenceDate, + PerformanceFeeInProspectus, + PerformanceFeeInProspectusReferenceDate, + RecordDateForSRRI, + ShareClassDistributionPolicy, + ShareClassExtension, + ShareClassLaunchDate, + ShareClassLifecycle, + SRRI, + TERExcludingPerformanceFee, + TERExcludingPerformanceFeeDate, + TERIncludingPerformanceFee, + TERIncludingPerformanceFeeDate, + // Additional + AbbreviatedShareClassName, + BICOfTransferAgent, + BloombergCode, + CurrencyOfMinimumRemainingAmount, + DistributionFeeMaximum, + DomicileofTransferAgent, + EFAMAActiveEFCClassification, + EFAMAEFCClassificationType, + EFAMAEFCInvestmentTheme, + EFAMAMainEFCCategory, + FIGICode, + FormOfShare, + HasDurationHedge, + IASector, + InvestmentStatusDate, + IsShareClassEligibleForUCITS, + LaunchPrice, + LaunchPriceCurrency, + LaunchPriceDate, + NAVPublicationTime, + PricingMethodology, + SinglePricingType, + StandardMinimumRemainingAmount, + StandardMinimumRemainingCategory, + StandardMinimumRemainingShares, + SwingFactor, + TransferAgentName, + ValuationFrequency, + // Dynamic + AskNAV, + AskNAVDate, + AuMShareClass, + AuMShareClassDate, + BidNAV, + BidNAVDate, + DividendAnnouncementDate, + DividendCurrency, + DividendExDate, + DividendGross, + DividendNet, + DividendPaymentDate, + DividendRecordDate, + DynamicCurrency, + DynamicDataType, + DynamicValue, + EqualisationRate, + GeneralReferenceDate, + IsDividendFinal, + NoSShareClass, + NoSShareClassDate, + SplitRatio, + SplitReferenceDate, + TaxDeductedReinvestedAmount, + TaxDeductedReinvestedAmountReferenceDate, + TaxableIncomeperDividend, + TaxableIncomeperShareEU, + TransactionNAV, + TransactionNAVDate, + ValuationNAV, + ValuationNAVDate, + YieldOneDayGross, + YieldOneDayNet, + YieldSevenDayGross, + YieldSevenDayNet, + YieldThirtyDayGross, + YieldThirtyDayNet, +} + +#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)] +pub enum FundManagerFieldName { + PortfolioManagerForename, + PortfolioManagerName, + PortfolioManagerYearOfBirth, + PortfolioManagerYearOfExperienceStart, + PortfolioManagerBriefBiography, + PortfolioManagerType, + PortfolioManagerRoleStartingDate, + PortfolioManagerRoleEndDate, +} diff --git a/anchor/src/client.ts b/anchor/src/client.ts new file mode 100644 index 00000000..e50ba4cc --- /dev/null +++ b/anchor/src/client.ts @@ -0,0 +1,145 @@ +import * as anchor from "@coral-xyz/anchor"; +import { BN, Program, IdlTypes } from "@coral-xyz/anchor"; +import { ComputeBudgetProgram, PublicKey, TransactionSignature } from "@solana/web3.js"; +import { + getMint, + ASSOCIATED_TOKEN_PROGRAM_ID, + TOKEN_2022_PROGRAM_ID, + TOKEN_PROGRAM_ID, + getAssociatedTokenAddressSync +} from "@solana/spl-token"; + +import { Glam, GlamIDL, GlamProgram, getGlamProgramId } from "./glamExports"; +import { GlamClientConfig } from "./clientConfig"; + +type FundModel = IdlTypes["FundModel"]; + +export class GlamClient { + provider: anchor.Provider; + program: GlamProgram; + programId: PublicKey; + + public constructor(config?: GlamClientConfig) { + this.programId = getGlamProgramId(config.cluster || "devnet"); + if (config?.provider) { + this.provider = config.provider; + this.program = new Program(GlamIDL, this.programId, this.provider) as GlamProgram; + } else { + this.provider = anchor.AnchorProvider.env(); + anchor.setProvider(this.provider); + this.program = anchor.workspace.Glam as GlamProgram; + } + } + + getManager(): PublicKey { + return this.provider.publicKey; + } + + getFundModel(fund: any): FundModel { + const defaultFundModel = { + id: null, + name: null, + symbol: null, + uri: null, + uriOpenfund: null, + isActive: null, + assets: [], + assetsWeights: [], + shareClass: [], + company: null, + manager: null, + created: null, + }; + return { + ...defaultFundModel, + ...fund, + }; + } + + getFundPDA(fundModel: FundModel): PublicKey { + const manager = this.getManager(); + const [fundPDA, fundBump] = PublicKey.findProgramAddressSync( + [ + anchor.utils.bytes.utf8.encode("fund"), + manager.toBuffer(), + Uint8Array.from(fundModel.created.key), + ], + this.programId + ); + return fundPDA; + } + + getTreasuryPDA(fundPDA: PublicKey): PublicKey { + const [pda, bump] = PublicKey.findProgramAddressSync( + [anchor.utils.bytes.utf8.encode("treasury"), fundPDA.toBuffer()], + this.programId + ); + return pda; + } + + getOpenfundPDA(fundPDA: PublicKey): PublicKey { + const [pda, bump] = PublicKey.findProgramAddressSync( + [anchor.utils.bytes.utf8.encode("openfund"), fundPDA.toBuffer()], + this.programId + ); + return pda; + } + + enrichFundModelInitialize(fundModel: FundModel): FundModel { + let { + name, + symbol + } = fundModel; + + if (fundModel.shareClass.length == 1) { + // fund with a single share class + const shareClass = fundModel.shareClass[0]; + name = fundModel.name || shareClass.name; + symbol = fundModel.symbol || shareClass.symbol; + } else { + // fund with multiple share classes + // TODO + } + + // createdKey = hash fund name and get first 8 bytes + const createdKey = anchor.utils.sha256.hash(fundModel.name) + .substring(0, 8) + .split("").map((c) => c.charCodeAt(0)); + + return { + ...fundModel, + name, + symbol, + created: { + key: createdKey, + manager: null, + } + }; + } + + public async createFund(fund: any): Promise { + const fundModel = this.enrichFundModelInitialize( + this.getFundModel(fund) + ); + const fundPDA = this.getFundPDA(fundModel); + const treasury = this.getTreasuryPDA(fundPDA); + const openfund = this.getOpenfundPDA(fundPDA); + const manager = this.getManager(); + + //TODO: add instructions to "addShareClass" in the same tx + return this.program.methods + .initializeV2(fundModel) + .accounts({ + fund: fundPDA, + treasury, + openfund, + // share: sharePDA, + manager, + tokenProgram: TOKEN_2022_PROGRAM_ID + }) + .preInstructions([ + ComputeBudgetProgram.setComputeUnitLimit({ units: 500_000 }) + ]) + .rpc(); + } +} diff --git a/anchor/src/clientConfig.ts b/anchor/src/clientConfig.ts new file mode 100644 index 00000000..c257b652 --- /dev/null +++ b/anchor/src/clientConfig.ts @@ -0,0 +1,7 @@ +import { Provider } from "@coral-xyz/anchor"; +import { Cluster } from "@solana/web3.js"; + +export type GlamClientConfig = { + provider?: Provider; + cluster?: Cluster; +} diff --git a/anchor/src/glam-exports.ts b/anchor/src/glamExports.ts similarity index 84% rename from anchor/src/glam-exports.ts rename to anchor/src/glamExports.ts index 8e19adb5..94e345ed 100644 --- a/anchor/src/glam-exports.ts +++ b/anchor/src/glamExports.ts @@ -1,11 +1,13 @@ // Here we export some useful types and functions for interacting with the Anchor program. import { Cluster, PublicKey } from '@solana/web3.js'; import { Program } from '@coral-xyz/anchor'; -import GlamIDLUntyped from '../target/idl/glam.json'; +import { IDL as GlamIDL } from '../target/types/glam'; import type { Glam } from '../target/types/glam'; -// Re-export the generated IDL and type -const GlamIDL = GlamIDLUntyped as Glam; +// anchor 0.30 +// import GlamIDLUntyped from '../target/idl/glam.json'; +// const GlamIDL = GlamIDLUntyped as Glam; + export { Glam, GlamIDL }; export type GlamProgram = Program; diff --git a/anchor/src/index.ts b/anchor/src/index.ts index 8db5421b..43dc1fe7 100644 --- a/anchor/src/index.ts +++ b/anchor/src/index.ts @@ -1 +1 @@ -export * from './glam-exports'; +export * from './glamExports'; diff --git a/anchor/target/idl/glam.json b/anchor/target/idl/glam.json index c214f916..734b4481 100644 --- a/anchor/target/idl/glam.json +++ b/anchor/target/idl/glam.json @@ -1,796 +1,702 @@ { - "address": "Gco1pcjxCMYjKJjSNJ7mKV7qezeUTE7arXJgy7PAPNRc", - "metadata": { - "name": "glam", - "version": "0.2.0", - "spec": "0.1.0", - "description": "Glam Protocol" - }, + "version": "0.2.0", + "name": "glam", "instructions": [ { - "name": "close", - "discriminator": [ - 98, - 165, - 201, - 177, - 108, - 65, - 206, - 96 - ], + "name": "initializeV2", "accounts": [ { "name": "fund", - "writable": true + "isMut": true, + "isSigner": false + }, + { + "name": "openfund", + "isMut": true, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, + { + "name": "share", + "isMut": true, + "isSigner": false }, { "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "isMut": true, + "isSigner": true + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false } ], - "args": [] + "args": [ + { + "name": "fund", + "type": { + "defined": "FundModel" + } + } + ] }, { - "name": "drift_close", - "discriminator": [ - 23, - 133, - 219, - 157, - 137, - 34, - 93, - 58 - ], + "name": "initialize", "accounts": [ { - "name": "fund" - }, - { - "name": "treasury" + "name": "fund", + "isMut": true, + "isSigner": false }, { - "name": "user_stats", - "writable": true + "name": "treasury", + "isMut": true, + "isSigner": false }, { - "name": "user", - "writable": true + "name": "share", + "isMut": true, + "isSigner": false }, { - "name": "state", - "writable": true + "name": "manager", + "isMut": true, + "isSigner": true }, { - "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "name": "systemProgram", + "isMut": false, + "isSigner": false }, { - "name": "drift_program", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "name": "tokenProgram", + "isMut": false, + "isSigner": false }, { - "name": "system_program", - "address": "11111111111111111111111111111111" + "name": "rent", + "isMut": false, + "isSigner": false } ], - "args": [] - }, - { - "name": "drift_deposit", - "discriminator": [ - 252, - 63, - 250, - 201, - 98, - 55, - 130, - 12 - ], - "accounts": [ + "args": [ { - "name": "fund" + "name": "fundName", + "type": "string" }, { - "name": "treasury" + "name": "fundSymbol", + "type": "string" }, { - "name": "user_stats", - "writable": true + "name": "fundUri", + "type": "string" }, { - "name": "user", - "writable": true + "name": "assetWeights", + "type": { + "vec": "u32" + } }, { - "name": "state", - "writable": true + "name": "activate", + "type": "bool" }, { - "name": "treasury_ata", - "writable": true - }, + "name": "shareClassMetadata", + "type": { + "defined": "ShareClassMetadata" + } + } + ] + }, + { + "name": "update", + "accounts": [ { - "name": "drift_ata", - "writable": true + "name": "fund", + "isMut": true, + "isSigner": false }, { "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "isMut": true, + "isSigner": true + } + ], + "args": [ + { + "name": "name", + "type": { + "option": "string" + } }, { - "name": "drift_program", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "name": "uri", + "type": { + "option": "string" + } }, { - "name": "token_program", - "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - } - ], - "args": [ + "name": "assetWeights", + "type": { + "option": { + "vec": "u32" + } + } + }, { - "name": "amount", - "type": "u64" + "name": "activate", + "type": { + "option": "bool" + } } ] }, { - "name": "drift_initialize", - "discriminator": [ - 21, - 21, - 69, - 55, - 41, - 129, - 44, - 198 + "name": "close", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + } ], + "args": [] + }, + { + "name": "subscribe", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false }, { - "name": "treasury" + "name": "signerShareAta", + "isMut": true, + "isSigner": false }, { - "name": "user_stats", - "writable": true + "name": "asset", + "isMut": true, + "isSigner": false }, { - "name": "user", - "writable": true + "name": "treasuryAta", + "isMut": true, + "isSigner": false }, { - "name": "state", - "writable": true + "name": "signerAssetAta", + "isMut": true, + "isSigner": false }, { - "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "name": "signer", + "isMut": true, + "isSigner": true }, { - "name": "drift_program", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "name": "systemProgram", + "isMut": false, + "isSigner": false }, { - "name": "rent", - "address": "SysvarRent111111111111111111111111111111111" + "name": "associatedTokenProgram", + "isMut": false, + "isSigner": false }, { - "name": "system_program", - "address": "11111111111111111111111111111111" + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false } ], "args": [ { - "name": "trader", - "type": { - "option": "pubkey" - } + "name": "amount", + "type": "u64" + }, + { + "name": "skipState", + "type": "bool" } ] }, { - "name": "drift_update_delegated_trader", - "discriminator": [ - 98, - 66, - 206, - 146, - 109, - 215, - 206, - 57 - ], + "name": "redeem", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false }, { - "name": "treasury" + "name": "shareClass", + "isMut": true, + "isSigner": false }, { - "name": "user", - "writable": true + "name": "signerShareAta", + "isMut": true, + "isSigner": false }, { - "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "name": "signer", + "isMut": true, + "isSigner": true }, { - "name": "drift_program", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false } ], "args": [ { - "name": "trader", - "type": { - "option": "pubkey" - } + "name": "amount", + "type": "u64" + }, + { + "name": "inKind", + "type": "bool" + }, + { + "name": "skipState", + "type": "bool" } ] }, { - "name": "drift_withdraw", - "discriminator": [ - 86, - 59, - 186, - 123, - 183, - 181, - 234, - 137 - ], + "name": "driftInitialize", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false }, { - "name": "treasury" + "name": "treasury", + "isMut": false, + "isSigner": false }, { - "name": "user_stats", - "writable": true + "name": "userStats", + "isMut": true, + "isSigner": false }, { "name": "user", - "writable": true + "isMut": true, + "isSigner": false }, { "name": "state", - "writable": true - }, - { - "name": "drift_signer" - }, - { - "name": "treasury_ata", - "writable": true + "isMut": true, + "isSigner": false }, { - "name": "drift_ata", - "writable": true + "name": "manager", + "isMut": true, + "isSigner": true }, { - "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "name": "driftProgram", + "isMut": false, + "isSigner": false }, { - "name": "drift_program", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "name": "rent", + "isMut": false, + "isSigner": false }, { - "name": "token_program", - "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + "name": "systemProgram", + "isMut": false, + "isSigner": false } ], "args": [ { - "name": "amount", - "type": "u64" + "name": "trader", + "type": { + "option": "publicKey" + } } ] }, { - "name": "initialize", - "discriminator": [ - 175, - 175, - 109, - 31, - 13, - 152, - 155, - 237 - ], + "name": "driftUpdateDelegatedTrader", "accounts": [ { "name": "fund", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 102, - 117, - 110, - 100 - ] - }, - { - "kind": "account", - "path": "manager" - }, - { - "kind": "arg", - "path": "name" - } - ] - } + "isMut": false, + "isSigner": false }, { "name": "treasury", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 116, - 114, - 101, - 97, - 115, - 117, - 114, - 121 - ] - }, - { - "kind": "account", - "path": "fund" - } - ] - } + "isMut": false, + "isSigner": false }, { - "name": "share", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 115, - 104, - 97, - 114, - 101, - 45, - 48 - ] - }, - { - "kind": "account", - "path": "fund" - } - ] - } + "name": "user", + "isMut": true, + "isSigner": false }, { "name": "manager", - "writable": true, - "signer": true - }, - { - "name": "system_program", - "address": "11111111111111111111111111111111" - }, - { - "name": "token_program", - "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + "isMut": true, + "isSigner": true }, { - "name": "rent", - "address": "SysvarRent111111111111111111111111111111111" + "name": "driftProgram", + "isMut": false, + "isSigner": false } ], "args": [ { - "name": "fund_name", - "type": "string" - }, - { - "name": "fund_symbol", - "type": "string" - }, - { - "name": "fund_uri", - "type": "string" - }, - { - "name": "asset_weights", - "type": { - "vec": "u32" - } - }, - { - "name": "activate", - "type": "bool" - }, - { - "name": "share_class_metadata", + "name": "trader", "type": { - "defined": { - "name": "ShareClassMetadata" - } + "option": "publicKey" } } ] }, { - "name": "redeem", - "discriminator": [ - 184, - 12, - 86, - 149, - 70, - 196, - 97, - 225 - ], + "name": "driftDeposit", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false }, { - "name": "share_class", - "writable": true + "name": "userStats", + "isMut": true, + "isSigner": false }, { - "name": "signer_share_ata", - "writable": true + "name": "user", + "isMut": true, + "isSigner": false }, { - "name": "signer", - "writable": true, - "signer": true + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "driftAta", + "isMut": true, + "isSigner": false }, { - "name": "treasury" + "name": "manager", + "isMut": true, + "isSigner": true }, { - "name": "token_program", - "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + "name": "driftProgram", + "isMut": false, + "isSigner": false }, { - "name": "token_2022_program", - "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + "name": "tokenProgram", + "isMut": false, + "isSigner": false } ], "args": [ { "name": "amount", "type": "u64" - }, - { - "name": "in_kind", - "type": "bool" - }, - { - "name": "skip_state", - "type": "bool" } ] }, { - "name": "subscribe", - "discriminator": [ - 254, - 28, - 191, - 138, - 156, - 179, - 183, - 53 - ], + "name": "driftWithdraw", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false }, { - "name": "share_class", - "writable": true + "name": "treasury", + "isMut": false, + "isSigner": false }, { - "name": "signer_share_ata", - "writable": true + "name": "userStats", + "isMut": true, + "isSigner": false }, { - "name": "asset", - "writable": true + "name": "user", + "isMut": true, + "isSigner": false }, { - "name": "treasury_ata", - "writable": true + "name": "state", + "isMut": true, + "isSigner": false }, { - "name": "signer_asset_ata", - "writable": true + "name": "driftSigner", + "isMut": false, + "isSigner": false }, { - "name": "signer", - "writable": true, - "signer": true + "name": "treasuryAta", + "isMut": true, + "isSigner": false }, { - "name": "system_program", - "address": "11111111111111111111111111111111" + "name": "driftAta", + "isMut": true, + "isSigner": false }, { - "name": "associated_token_program", - "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + "name": "manager", + "isMut": true, + "isSigner": true }, { - "name": "token_program", - "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + "name": "driftProgram", + "isMut": false, + "isSigner": false }, { - "name": "token_2022_program", - "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + "name": "tokenProgram", + "isMut": false, + "isSigner": false } ], "args": [ { "name": "amount", "type": "u64" - }, - { - "name": "skip_state", - "type": "bool" } ] }, { - "name": "update", - "discriminator": [ - 219, - 200, - 88, - 176, - 158, - 63, - 253, - 127 - ], + "name": "driftClose", "accounts": [ { "name": "fund", - "writable": true + "isMut": false, + "isSigner": false }, { - "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] - } - ], - "args": [ + "name": "treasury", + "isMut": false, + "isSigner": false + }, { - "name": "name", - "type": { - "option": "string" - } + "name": "userStats", + "isMut": true, + "isSigner": false }, { - "name": "uri", - "type": { - "option": "string" - } + "name": "user", + "isMut": true, + "isSigner": false }, { - "name": "asset_weights", - "type": { - "option": { - "vec": "u32" - } - } + "name": "state", + "isMut": true, + "isSigner": false }, { - "name": "activate", - "type": { - "option": "bool" - } + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false } - ] + ], + "args": [] } ], "accounts": [ - { - "name": "Fund", - "discriminator": [ - 62, - 128, - 183, - 208, - 91, - 31, - 212, - 209 - ] - }, { "name": "State", - "discriminator": [ - 216, - 146, - 107, - 94, - 104, - 75, - 182, - 177 - ] - }, - { - "name": "Treasury", - "discriminator": [ - 238, - 239, - 123, - 238, - 89, - 1, - 168, - 253 - ] - } - ], - "errors": [ - { - "code": 6000, - "name": "CloseNotEmptyError", - "msg": "Error closing account: not empty" - }, - { - "code": 6001, - "name": "NotAuthorizedError", - "msg": "Error: not authorized" - }, - { - "code": 6002, - "name": "InvalidFundName", - "msg": "Invalid fund name: max 30 chars" - }, - { - "code": 6003, - "name": "InvalidFundSymbol", - "msg": "Too many assets: max 50" - }, - { - "code": 6004, - "name": "InvalidFundUri", - "msg": "Too many assets: max 20" - }, - { - "code": 6005, - "name": "InvalidAssetsLen", - "msg": "Too many assets: max 100" - }, - { - "code": 6006, - "name": "InvalidAssetsWeights", - "msg": "Number of weights should match number of assets" - } - ], - "types": [ - { - "name": "FeeStructure", + "docs": [ + "Account: State" + ], "type": { "kind": "struct", "fields": [ { - "name": "fee_tiers", + "name": "admin", + "type": "publicKey" + }, + { + "name": "whitelistMint", + "type": "publicKey" + }, + { + "name": "discountMint", + "type": "publicKey" + }, + { + "name": "signer", + "type": "publicKey" + }, + { + "name": "srmVault", + "type": "publicKey" + }, + { + "name": "perpFeeStructure", "type": { - "array": [ - { - "defined": { - "name": "FeeTier" - } - }, - 10 - ] + "defined": "FeeStructure" } }, { - "name": "filler_reward_structure", + "name": "spotFeeStructure", "type": { - "defined": { - "name": "OrderFillerRewardStructure" - } + "defined": "FeeStructure" } }, { - "name": "referrer_reward_epoch_upper_bound", + "name": "oracleGuardRails", + "type": { + "defined": "OracleGuardRails" + } + }, + { + "name": "numberOfAuthorities", "type": "u64" }, { - "name": "flat_filler_fee", + "name": "numberOfSubAccounts", "type": "u64" - } - ] - } - }, - { - "name": "FeeTier", - "type": { - "kind": "struct", - "fields": [ + }, { - "name": "fee_numerator", - "type": "u32" + "name": "lpCooldownTime", + "type": "u64" }, { - "name": "fee_denominator", + "name": "liquidationMarginBufferRatio", "type": "u32" }, { - "name": "maker_rebate_numerator", - "type": "u32" + "name": "settlementDuration", + "type": "u16" }, { - "name": "maker_rebate_denominator", - "type": "u32" + "name": "numberOfMarkets", + "type": "u16" }, { - "name": "referrer_reward_numerator", - "type": "u32" + "name": "numberOfSpotMarkets", + "type": "u16" }, { - "name": "referrer_reward_denominator", - "type": "u32" + "name": "signerNonce", + "type": "u8" }, { - "name": "referee_fee_numerator", - "type": "u32" + "name": "minPerpAuctionDuration", + "type": "u8" }, { - "name": "referee_fee_denominator", - "type": "u32" + "name": "defaultMarketOrderTimeInForce", + "type": "u8" + }, + { + "name": "defaultSpotAuctionDuration", + "type": "u8" + }, + { + "name": "exchangeStatus", + "type": "u8" + }, + { + "name": "liquidationDuration", + "type": "u8" + }, + { + "name": "initialPctToLiquidate", + "type": "u16" + }, + { + "name": "maxNumberOfSubAccounts", + "type": "u16" + }, + { + "name": "maxInitializeUserFee", + "type": "u16" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 10 + ] + } } ] } @@ -802,27 +708,27 @@ "fields": [ { "name": "manager", - "type": "pubkey" + "type": "publicKey" }, { "name": "treasury", - "type": "pubkey" + "type": "publicKey" }, { - "name": "assets_len", + "name": "assetsLen", "type": "u8" }, { "name": "assets", "type": { "array": [ - "pubkey", + "publicKey", 5 ] } }, { - "name": "assets_weights", + "name": "assetsWeights", "type": { "array": [ "u32", @@ -831,33 +737,31 @@ } }, { - "name": "share_classes_len", + "name": "shareClassesLen", "type": "u8" }, { - "name": "share_classes", + "name": "shareClasses", "type": { "array": [ - "pubkey", + "publicKey", 3 ] } }, { - "name": "share_classes_metadata", + "name": "shareClassesMetadata", "type": { "array": [ { - "defined": { - "name": "ShareClassMetadata" - } + "defined": "ShareClassMetadata" }, 3 ] } }, { - "name": "share_classes_bumps", + "name": "shareClassesBumps", "type": { "array": [ "u8", @@ -866,15 +770,15 @@ } }, { - "name": "time_created", + "name": "timeCreated", "type": "i64" }, { - "name": "bump_fund", + "name": "bumpFund", "type": "u8" }, { - "name": "bump_treasury", + "name": "bumpTreasury", "type": "u8" }, { @@ -890,30 +794,58 @@ "type": "string" }, { - "name": "is_active", + "name": "isActive", "type": "bool" } ] } }, { - "name": "OracleGuardRails", + "name": "FundAccount", "type": { "kind": "struct", "fields": [ { - "name": "price_divergence", + "name": "name", + "type": "string" + }, + { + "name": "uri", + "type": "string" + }, + { + "name": "treasury", + "type": "publicKey" + }, + { + "name": "shareClass", "type": { - "defined": { - "name": "PriceDivergenceGuardRails" - } + "vec": "publicKey" } }, { - "name": "validity", + "name": "openfund", + "type": "publicKey" + }, + { + "name": "openfundUri", + "type": "string" + }, + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "engine", + "type": "publicKey" + }, + { + "name": "params", "type": { - "defined": { - "name": "ValidityGuardRails" + "vec": { + "vec": { + "defined": "GlamParam" + } } } } @@ -921,283 +853,1465 @@ } }, { - "name": "OrderFillerRewardStructure", + "name": "FundMetadataAccount", "type": { "kind": "struct", "fields": [ { - "name": "reward_numerator", - "type": "u32" + "name": "fundPubkey", + "type": "publicKey" }, { - "name": "reward_denominator", - "type": "u32" + "name": "company", + "type": { + "vec": { + "defined": "CompanyField" + } + } }, { - "name": "time_based_reward_lower_bound", - "type": "u128" + "name": "fund", + "type": { + "vec": { + "defined": "FundField" + } + } + }, + { + "name": "shareClass", + "type": { + "vec": { + "vec": { + "defined": "ShareClassField" + } + } + } + }, + { + "name": "fundManager", + "type": { + "vec": { + "vec": { + "defined": "FundManagerField" + } + } + } } ] } }, { - "name": "PriceDivergenceGuardRails", + "name": "Treasury", "type": { "kind": "struct", "fields": [ { - "name": "mark_oracle_percent_divergence", - "type": "u64" + "name": "manager", + "type": "publicKey" }, { - "name": "oracle_twap5min_percent_divergence", - "type": "u64" + "name": "fund", + "type": "publicKey" + }, + { + "name": "bump", + "type": "u8" } ] } - }, + } + ], + "types": [ { - "name": "ShareClassMetadata", + "name": "FeeStructure", "type": { "kind": "struct", "fields": [ { - "name": "name", - "type": "string" - }, - { - "name": "symbol", - "type": "string" - }, - { - "name": "uri", - "type": "string" + "name": "feeTiers", + "type": { + "array": [ + { + "defined": "FeeTier" + }, + 10 + ] + } }, { - "name": "share_class_asset", - "type": "string" + "name": "fillerRewardStructure", + "type": { + "defined": "OrderFillerRewardStructure" + } }, { - "name": "share_class_asset_id", - "type": "pubkey" + "name": "referrerRewardEpochUpperBound", + "type": "u64" }, { - "name": "isin", - "type": "string" - }, + "name": "flatFillerFee", + "type": "u64" + } + ] + } + }, + { + "name": "FeeTier", + "type": { + "kind": "struct", + "fields": [ { - "name": "status", - "type": "string" + "name": "feeNumerator", + "type": "u32" }, { - "name": "fee_management", - "type": "i32" + "name": "feeDenominator", + "type": "u32" }, { - "name": "fee_performance", - "type": "i32" + "name": "makerRebateNumerator", + "type": "u32" }, { - "name": "policy_distribution", - "type": "string" + "name": "makerRebateDenominator", + "type": "u32" }, { - "name": "extension", - "type": "string" + "name": "referrerRewardNumerator", + "type": "u32" }, { - "name": "launch_date", - "type": "string" + "name": "referrerRewardDenominator", + "type": "u32" }, { - "name": "lifecycle", - "type": "string" + "name": "refereeFeeNumerator", + "type": "u32" }, { - "name": "image_uri", - "type": "string" + "name": "refereeFeeDenominator", + "type": "u32" } ] } }, { - "name": "State", - "docs": [ - "Account: State" - ], + "name": "OracleGuardRails", "type": { "kind": "struct", "fields": [ { - "name": "admin", - "type": "pubkey" - }, - { - "name": "whitelist_mint", - "type": "pubkey" - }, - { - "name": "discount_mint", - "type": "pubkey" - }, - { - "name": "signer", - "type": "pubkey" + "name": "priceDivergence", + "type": { + "defined": "PriceDivergenceGuardRails" + } }, { - "name": "srm_vault", - "type": "pubkey" - }, - { - "name": "perp_fee_structure", + "name": "validity", "type": { - "defined": { - "name": "FeeStructure" - } + "defined": "ValidityGuardRails" } - }, + } + ] + } + }, + { + "name": "OrderFillerRewardStructure", + "type": { + "kind": "struct", + "fields": [ { - "name": "spot_fee_structure", - "type": { - "defined": { - "name": "FeeStructure" - } - } + "name": "rewardNumerator", + "type": "u32" }, { - "name": "oracle_guard_rails", - "type": { - "defined": { - "name": "OracleGuardRails" - } - } + "name": "rewardDenominator", + "type": "u32" }, { - "name": "number_of_authorities", + "name": "timeBasedRewardLowerBound", + "type": "u128" + } + ] + } + }, + { + "name": "PriceDivergenceGuardRails", + "type": { + "kind": "struct", + "fields": [ + { + "name": "markOraclePercentDivergence", "type": "u64" }, { - "name": "number_of_sub_accounts", + "name": "oracleTwap5minPercentDivergence", "type": "u64" + } + ] + } + }, + { + "name": "ValidityGuardRails", + "type": { + "kind": "struct", + "fields": [ + { + "name": "slotsBeforeStaleForAmm", + "type": "i64" }, { - "name": "lp_cooldown_time", - "type": "u64" + "name": "slotsBeforeStaleForMargin", + "type": "i64" }, { - "name": "liquidation_margin_buffer_ratio", - "type": "u32" + "name": "confidenceIntervalMaxSize", + "type": "u64" }, { - "name": "settlement_duration", - "type": "u16" + "name": "tooVolatileRatio", + "type": "i64" + } + ] + } + }, + { + "name": "CompanyModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "option": "string" + } + } + ] + } + }, + { + "name": "CreatedModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "key", + "type": { + "array": [ + "u8", + 8 + ] + } }, { - "name": "number_of_markets", - "type": "u16" + "name": "manager", + "type": { + "option": "publicKey" + } + } + ] + } + }, + { + "name": "FundModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "id", + "type": { + "option": "string" + } }, { - "name": "number_of_spot_markets", - "type": "u16" + "name": "symbol", + "type": { + "option": "string" + } }, { - "name": "signer_nonce", - "type": "u8" + "name": "name", + "type": { + "option": "string" + } }, { - "name": "min_perp_auction_duration", - "type": "u8" + "name": "uri", + "type": { + "option": "string" + } }, { - "name": "default_market_order_time_in_force", - "type": "u8" + "name": "uriOpenfund", + "type": { + "option": "string" + } }, { - "name": "default_spot_auction_duration", - "type": "u8" + "name": "isActive", + "type": { + "option": "bool" + } }, { - "name": "exchange_status", - "type": "u8" + "name": "assets", + "type": { + "vec": "publicKey" + } }, { - "name": "liquidation_duration", - "type": "u8" + "name": "assetsWeights", + "type": { + "vec": "u32" + } }, { - "name": "initial_pct_to_liquidate", - "type": "u16" + "name": "shareClass", + "type": { + "vec": { + "defined": "ShareClassModel" + } + } }, { - "name": "max_number_of_sub_accounts", - "type": "u16" + "name": "company", + "type": { + "option": { + "defined": "CompanyModel" + } + } }, { - "name": "max_initialize_user_fee", - "type": "u16" + "name": "manager", + "type": { + "option": { + "defined": "ManagerModel" + } + } }, { - "name": "padding", + "name": "created", "type": { - "array": [ - "u8", - 10 - ] + "option": { + "defined": "CreatedModel" + } } } ] } }, { - "name": "Treasury", + "name": "GlamParam", "type": { "kind": "struct", "fields": [ { - "name": "manager", - "type": "pubkey" + "name": "key", + "type": { + "defined": "OFKey" + } }, { - "name": "fund", - "type": "pubkey" + "name": "val", + "type": { + "defined": "OFValue" + } + } + ] + } + }, + { + "name": "ManagerKind", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Wallet" }, { - "name": "bump", - "type": "u8" + "name": "Squads" } ] } }, { - "name": "ValidityGuardRails", + "name": "ManagerModel", "type": { "kind": "struct", "fields": [ { - "name": "slots_before_stale_for_amm", - "type": "i64" + "name": "pubkey", + "type": { + "option": "publicKey" + } }, { - "name": "slots_before_stale_for_margin", - "type": "i64" + "name": "name", + "type": { + "option": "string" + } }, { - "name": "confidence_interval_max_size", - "type": "u64" + "name": "kind", + "type": { + "option": { + "defined": "ManagerKind" + } + } + } + ] + } + }, + { + "name": "OFKey", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Symbol" }, { - "name": "too_volatile_ratio", - "type": "i64" + "name": "TimeCreated" + }, + { + "name": "Active" + }, + { + "name": "Hello" } ] } - } - ], - "constants": [ + }, { - "name": "SEED", - "type": "string", - "value": "\"anchor\"" - } - ] + "name": "OFValue", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Boolean", + "fields": [ + { + "name": "val", + "type": "bool" + } + ] + }, + { + "name": "Date", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "Double", + "fields": [ + { + "name": "val", + "type": "i64" + } + ] + }, + { + "name": "Integer", + "fields": [ + { + "name": "val", + "type": "i32" + } + ] + }, + { + "name": "String", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "Time", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "U8", + "fields": [ + { + "name": "val", + "type": "u8" + } + ] + }, + { + "name": "U64", + "fields": [ + { + "name": "val", + "type": "u64" + } + ] + }, + { + "name": "Pubkey", + "fields": [ + { + "name": "val", + "type": "publicKey" + } + ] + }, + { + "name": "Percentage", + "fields": [ + { + "name": "val", + "type": "u32" + } + ] + }, + { + "name": "URI", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "Timestamp", + "fields": [ + { + "name": "val", + "type": "i64" + } + ] + }, + { + "name": "VecPubkey", + "fields": [ + { + "name": "val", + "type": { + "vec": "publicKey" + } + } + ] + }, + { + "name": "VecU32", + "fields": [ + { + "name": "val", + "type": { + "vec": "u32" + } + } + ] + } + ] + } + }, + { + "name": "ShareClassMetadata", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "uri", + "type": "string" + }, + { + "name": "shareClassAsset", + "type": "string" + }, + { + "name": "shareClassAssetId", + "type": "publicKey" + }, + { + "name": "isin", + "type": "string" + }, + { + "name": "status", + "type": "string" + }, + { + "name": "feeManagement", + "type": "i32" + }, + { + "name": "feePerformance", + "type": "i32" + }, + { + "name": "policyDistribution", + "type": "string" + }, + { + "name": "extension", + "type": "string" + }, + { + "name": "launchDate", + "type": "string" + }, + { + "name": "lifecycle", + "type": "string" + }, + { + "name": "imageUri", + "type": "string" + } + ] + } + }, + { + "name": "ShareClassModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "symbol", + "type": { + "option": "string" + } + }, + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "uri", + "type": { + "option": "string" + } + }, + { + "name": "asset", + "type": { + "option": "string" + } + }, + { + "name": "assetPubkey", + "type": { + "option": "publicKey" + } + }, + { + "name": "isin", + "type": { + "option": "string" + } + }, + { + "name": "status", + "type": { + "option": { + "defined": "ShareClassStatus" + } + } + }, + { + "name": "policyDistribution", + "type": { + "option": "string" + } + }, + { + "name": "extension", + "type": { + "option": "string" + } + }, + { + "name": "launchDate", + "type": { + "option": "string" + } + }, + { + "name": "lifecycle", + "type": { + "option": "string" + } + }, + { + "name": "imageUri", + "type": { + "option": "string" + } + } + ] + } + }, + { + "name": "ShareClassStatus", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Open" + }, + { + "name": "SoftClosed" + }, + { + "name": "HardClosed" + }, + { + "name": "ClosedForRedemption" + }, + { + "name": "ClosedForSubscriptionAndRedemption" + } + ] + } + }, + { + "name": "CompanyField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "CompanyFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "CompanyFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "FundGroupName" + }, + { + "name": "DomicileOfManCo" + }, + { + "name": "ManCo" + }, + { + "name": "BICOfCustodian" + }, + { + "name": "CollateralManagerName" + }, + { + "name": "CustodianBankName" + }, + { + "name": "DomicileOfCustodianBank" + }, + { + "name": "FundAdministratorName" + }, + { + "name": "FundAdvisorName" + }, + { + "name": "FundPromoterName" + }, + { + "name": "IsSelfManagedInvestmentCompany" + }, + { + "name": "LEIOfCustodianBank" + }, + { + "name": "LEIOfManCo" + }, + { + "name": "PortfolioManagingCompanyName" + }, + { + "name": "SecuritiesLendingCounterpartyName" + }, + { + "name": "SwapCounterpartyName" + }, + { + "name": "AddressofManCo" + }, + { + "name": "AuditorName" + }, + { + "name": "CityofManCo" + }, + { + "name": "EmailAddressOfManCo" + }, + { + "name": "FundWebsiteofManCo" + }, + { + "name": "IsUNPRISignatory" + }, + { + "name": "PhoneCountryCodeofManCo" + }, + { + "name": "PhoneNumberofManCo" + }, + { + "name": "SubInvestmentAdvisorName" + }, + { + "name": "ZIPCodeofManCo" + }, + { + "name": "DomicileOfUmbrella" + }, + { + "name": "HasUmbrella" + }, + { + "name": "LEIOfUmbrella" + }, + { + "name": "Umbrella" + }, + { + "name": "GlobalIntermediaryIdentificationNumberOfUmbrella" + } + ] + } + }, + { + "name": "FundField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "FundFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "FundFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "FundDomicileAlpha2" + }, + { + "name": "FundDomicileAlpha3" + }, + { + "name": "LegalFundNameIncludingUmbrella" + }, + { + "name": "FiscalYearEnd" + }, + { + "name": "FundCurrency" + }, + { + "name": "FundLaunchDate" + }, + { + "name": "InvestmentObjective" + }, + { + "name": "IsETC" + }, + { + "name": "IsEUDirectiveRelevant" + }, + { + "name": "IsFundOfFunds" + }, + { + "name": "IsPassiveFund" + }, + { + "name": "IsREIT" + }, + { + "name": "LegalForm" + }, + { + "name": "LegalFundNameOnly" + }, + { + "name": "OpenEndedOrClosedEndedFundStructure" + }, + { + "name": "TypeOfEUDirective" + }, + { + "name": "UCITSVersion" + }, + { + "name": "CurrencyHedgePortfolio" + }, + { + "name": "DepositoryName" + }, + { + "name": "FundValuationPoint" + }, + { + "name": "FundValuationPointTimeZone" + }, + { + "name": "FundValuationPointTimeZoneUsingTZDatabase" + }, + { + "name": "HasCollateralManager" + }, + { + "name": "HasEmbeddedDerivatives" + }, + { + "name": "HasSecuritiesLending" + }, + { + "name": "HasSwap" + }, + { + "name": "IsLeveraged" + }, + { + "name": "IsShariaCompliant" + }, + { + "name": "IsShort" + }, + { + "name": "LEIofDepositoryBank" + }, + { + "name": "LEIOfFund" + }, + { + "name": "LocationOfBearerShare" + }, + { + "name": "LocationOfShareRegister" + }, + { + "name": "MaximumLeverageInFund" + }, + { + "name": "MiFIDSecuritiesClassification" + }, + { + "name": "MoneyMarketTypeOfFund" + }, + { + "name": "TrusteeName" + }, + { + "name": "AuMFund" + }, + { + "name": "AuMFundDate" + }, + { + "name": "NoSFund" + }, + { + "name": "NoSFundDate" + } + ] + } + }, + { + "name": "FundManagerField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "FundManagerFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "FundManagerFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "PortfolioManagerForename" + }, + { + "name": "PortfolioManagerName" + }, + { + "name": "PortfolioManagerYearOfBirth" + }, + { + "name": "PortfolioManagerYearOfExperienceStart" + }, + { + "name": "PortfolioManagerBriefBiography" + }, + { + "name": "PortfolioManagerType" + }, + { + "name": "PortfolioManagerRoleStartingDate" + }, + { + "name": "PortfolioManagerRoleEndDate" + } + ] + } + }, + { + "name": "ShareClassField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "ShareClassFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "ShareClassFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "ISIN" + }, + { + "name": "ShareClassCurrency" + }, + { + "name": "AllInFeeApplied" + }, + { + "name": "AllInFeeDate" + }, + { + "name": "AllInFeeIncludesTransactionCosts" + }, + { + "name": "AllInFeeMaximum" + }, + { + "name": "AppliedSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "AppliedSubscriptionFeeInFavourOfDistributorReferenceDate" + }, + { + "name": "Benchmark" + }, + { + "name": "CountryLegalRegistration" + }, + { + "name": "CountryMarketingDistribution" + }, + { + "name": "CurrencyHedgeShareClass" + }, + { + "name": "CurrencyofMinimalSubscription" + }, + { + "name": "DistributionDeclarationFrequency" + }, + { + "name": "FullShareClassName" + }, + { + "name": "HasAllInFee" + }, + { + "name": "HasOngoingCharges" + }, + { + "name": "HasPerformanceFee" + }, + { + "name": "HasSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "InvestmentStatus" + }, + { + "name": "IsETF" + }, + { + "name": "IsRDRCompliant" + }, + { + "name": "IsTrailerFeeClean" + }, + { + "name": "ManagementFeeApplied" + }, + { + "name": "ManagementFeeAppliedReferenceDate" + }, + { + "name": "ManagementFeeMaximum" + }, + { + "name": "MaximumSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "MinimalInitialSubscriptionCategory" + }, + { + "name": "MinimalInitialSubscriptionInAmount" + }, + { + "name": "MinimalInitialSubscriptionInShares" + }, + { + "name": "MinimalSubsequentSubscriptionCategory" + }, + { + "name": "MinimalSubsequentSubscriptionInAmount" + }, + { + "name": "MinimalSubsequentSubscriptionInShares" + }, + { + "name": "MinimumSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "OngoingCharges" + }, + { + "name": "OngoingChargesDate" + }, + { + "name": "PerformanceFeeApplied" + }, + { + "name": "PerformanceFeeAppliedReferenceDate" + }, + { + "name": "PerformanceFeeInProspectus" + }, + { + "name": "PerformanceFeeInProspectusReferenceDate" + }, + { + "name": "RecordDateForSRRI" + }, + { + "name": "ShareClassDistributionPolicy" + }, + { + "name": "ShareClassExtension" + }, + { + "name": "ShareClassLaunchDate" + }, + { + "name": "ShareClassLifecycle" + }, + { + "name": "SRRI" + }, + { + "name": "TERExcludingPerformanceFee" + }, + { + "name": "TERExcludingPerformanceFeeDate" + }, + { + "name": "TERIncludingPerformanceFee" + }, + { + "name": "TERIncludingPerformanceFeeDate" + }, + { + "name": "AbbreviatedShareClassName" + }, + { + "name": "BICOfTransferAgent" + }, + { + "name": "BloombergCode" + }, + { + "name": "CurrencyOfMinimumRemainingAmount" + }, + { + "name": "DistributionFeeMaximum" + }, + { + "name": "DomicileofTransferAgent" + }, + { + "name": "EFAMAActiveEFCClassification" + }, + { + "name": "EFAMAEFCClassificationType" + }, + { + "name": "EFAMAEFCInvestmentTheme" + }, + { + "name": "EFAMAMainEFCCategory" + }, + { + "name": "FIGICode" + }, + { + "name": "FormOfShare" + }, + { + "name": "HasDurationHedge" + }, + { + "name": "IASector" + }, + { + "name": "InvestmentStatusDate" + }, + { + "name": "IsShareClassEligibleForUCITS" + }, + { + "name": "LaunchPrice" + }, + { + "name": "LaunchPriceCurrency" + }, + { + "name": "LaunchPriceDate" + }, + { + "name": "NAVPublicationTime" + }, + { + "name": "PricingMethodology" + }, + { + "name": "SinglePricingType" + }, + { + "name": "StandardMinimumRemainingAmount" + }, + { + "name": "StandardMinimumRemainingCategory" + }, + { + "name": "StandardMinimumRemainingShares" + }, + { + "name": "SwingFactor" + }, + { + "name": "TransferAgentName" + }, + { + "name": "ValuationFrequency" + }, + { + "name": "AskNAV" + }, + { + "name": "AskNAVDate" + }, + { + "name": "AuMShareClass" + }, + { + "name": "AuMShareClassDate" + }, + { + "name": "BidNAV" + }, + { + "name": "BidNAVDate" + }, + { + "name": "DividendAnnouncementDate" + }, + { + "name": "DividendCurrency" + }, + { + "name": "DividendExDate" + }, + { + "name": "DividendGross" + }, + { + "name": "DividendNet" + }, + { + "name": "DividendPaymentDate" + }, + { + "name": "DividendRecordDate" + }, + { + "name": "DynamicCurrency" + }, + { + "name": "DynamicDataType" + }, + { + "name": "DynamicValue" + }, + { + "name": "EqualisationRate" + }, + { + "name": "GeneralReferenceDate" + }, + { + "name": "IsDividendFinal" + }, + { + "name": "NoSShareClass" + }, + { + "name": "NoSShareClassDate" + }, + { + "name": "SplitRatio" + }, + { + "name": "SplitReferenceDate" + }, + { + "name": "TaxDeductedReinvestedAmount" + }, + { + "name": "TaxDeductedReinvestedAmountReferenceDate" + }, + { + "name": "TaxableIncomeperDividend" + }, + { + "name": "TaxableIncomeperShareEU" + }, + { + "name": "TransactionNAV" + }, + { + "name": "TransactionNAVDate" + }, + { + "name": "ValuationNAV" + }, + { + "name": "ValuationNAVDate" + }, + { + "name": "YieldOneDayGross" + }, + { + "name": "YieldOneDayNet" + }, + { + "name": "YieldSevenDayGross" + }, + { + "name": "YieldSevenDayNet" + }, + { + "name": "YieldThirtyDayGross" + }, + { + "name": "YieldThirtyDayNet" + } + ] + } + } + ], + "errors": [ + { + "code": 6000, + "name": "FundNotActive", + "msg": "Fund is not active" + }, + { + "code": 6001, + "name": "InvalidShareClass", + "msg": "Share class not allowed to subscribe" + }, + { + "code": 6002, + "name": "InvalidAssetSubscribe", + "msg": "Asset not allowed to subscribe" + }, + { + "code": 6003, + "name": "InvalidPricingOracle", + "msg": "Invalid oracle for asset price" + }, + { + "code": 6004, + "name": "InvalidAssetsRedeem", + "msg": "Invalid assets in redeem" + }, + { + "code": 6005, + "name": "InvalidTreasuryAccount", + "msg": "Invalid treasury account" + } + ], + "metadata": { + "address": "Gco1pcjxCMYjKJjSNJ7mKV7qezeUTE7arXJgy7PAPNRc" + } } \ No newline at end of file diff --git a/anchor/target/types/glam.ts b/anchor/target/types/glam.ts index 84eff8be..44d8f3b0 100644 --- a/anchor/target/types/glam.ts +++ b/anchor/target/types/glam.ts @@ -1,322 +1,461 @@ -/** - * Program IDL in camelCase format in order to be used in JS/TS. - * - * Note that this is only a type helper and is not the actual IDL. The original - * IDL can be found at `target/idl/glam.json`. - */ export type Glam = { - "address": "Gco1pcjxCMYjKJjSNJ7mKV7qezeUTE7arXJgy7PAPNRc", - "metadata": { - "name": "glam", - "version": "0.2.0", - "spec": "0.1.0", - "description": "Glam Protocol" - }, + "version": "0.2.0", + "name": "glam", "instructions": [ { - "name": "close", - "discriminator": [ - 98, - 165, - 201, - 177, - 108, - 65, - 206, - 96 - ], + "name": "initializeV2", "accounts": [ { "name": "fund", - "writable": true + "isMut": true, + "isSigner": false + }, + { + "name": "openfund", + "isMut": true, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, + { + "name": "share", + "isMut": true, + "isSigner": false }, { "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "isMut": true, + "isSigner": true + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false } ], - "args": [] + "args": [ + { + "name": "fund", + "type": { + "defined": "FundModel" + } + } + ] }, { - "name": "driftClose", - "discriminator": [ - 23, - 133, - 219, - 157, - 137, - 34, - 93, - 58 - ], + "name": "initialize", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false }, { - "name": "treasury" + "name": "share", + "isMut": true, + "isSigner": false }, { - "name": "userStats", - "writable": true + "name": "manager", + "isMut": true, + "isSigner": true }, { - "name": "user", - "writable": true + "name": "systemProgram", + "isMut": false, + "isSigner": false }, { - "name": "state", - "writable": true + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "fundName", + "type": "string" + }, + { + "name": "fundSymbol", + "type": "string" + }, + { + "name": "fundUri", + "type": "string" + }, + { + "name": "assetWeights", + "type": { + "vec": "u32" + } + }, + { + "name": "activate", + "type": "bool" + }, + { + "name": "shareClassMetadata", + "type": { + "defined": "ShareClassMetadata" + } + } + ] + }, + { + "name": "update", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false }, { "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "isMut": true, + "isSigner": true + } + ], + "args": [ + { + "name": "name", + "type": { + "option": "string" + } }, { - "name": "driftProgram", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "name": "uri", + "type": { + "option": "string" + } }, { - "name": "systemProgram", - "address": "11111111111111111111111111111111" + "name": "assetWeights", + "type": { + "option": { + "vec": "u32" + } + } + }, + { + "name": "activate", + "type": { + "option": "bool" + } + } + ] + }, + { + "name": "close", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true } ], "args": [] }, { - "name": "driftDeposit", - "discriminator": [ - 252, - 63, - 250, - 201, - 98, - 55, - 130, - 12 - ], + "name": "subscribe", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false }, { - "name": "treasury" + "name": "shareClass", + "isMut": true, + "isSigner": false }, { - "name": "userStats", - "writable": true + "name": "signerShareAta", + "isMut": true, + "isSigner": false }, { - "name": "user", - "writable": true + "name": "asset", + "isMut": true, + "isSigner": false }, { - "name": "state", - "writable": true + "name": "treasuryAta", + "isMut": true, + "isSigner": false }, { - "name": "treasuryAta", - "writable": true + "name": "signerAssetAta", + "isMut": true, + "isSigner": false }, { - "name": "driftAta", - "writable": true + "name": "signer", + "isMut": true, + "isSigner": true }, { - "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "name": "systemProgram", + "isMut": false, + "isSigner": false }, { - "name": "driftProgram", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "name": "associatedTokenProgram", + "isMut": false, + "isSigner": false }, { "name": "tokenProgram", - "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false } ], "args": [ { "name": "amount", "type": "u64" + }, + { + "name": "skipState", + "type": "bool" } ] }, { - "name": "driftInitialize", - "discriminator": [ - 21, - 21, - 69, - 55, - 41, - 129, - 44, - 198 + "name": "redeem", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false + }, + { + "name": "signerShareAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signer", + "isMut": true, + "isSigner": true + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false + } ], + "args": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "inKind", + "type": "bool" + }, + { + "name": "skipState", + "type": "bool" + } + ] + }, + { + "name": "driftInitialize", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false }, { - "name": "treasury" + "name": "treasury", + "isMut": false, + "isSigner": false }, { "name": "userStats", - "writable": true + "isMut": true, + "isSigner": false }, { "name": "user", - "writable": true + "isMut": true, + "isSigner": false }, { "name": "state", - "writable": true + "isMut": true, + "isSigner": false }, { "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "isMut": true, + "isSigner": true }, { "name": "driftProgram", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "isMut": false, + "isSigner": false }, { "name": "rent", - "address": "SysvarRent111111111111111111111111111111111" + "isMut": false, + "isSigner": false }, { "name": "systemProgram", - "address": "11111111111111111111111111111111" + "isMut": false, + "isSigner": false } ], "args": [ { "name": "trader", "type": { - "option": "pubkey" + "option": "publicKey" } } ] }, { "name": "driftUpdateDelegatedTrader", - "discriminator": [ - 98, - 66, - 206, - 146, - 109, - 215, - 206, - 57 - ], "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false }, { - "name": "treasury" + "name": "treasury", + "isMut": false, + "isSigner": false }, { "name": "user", - "writable": true + "isMut": true, + "isSigner": false }, { "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "isMut": true, + "isSigner": true }, { "name": "driftProgram", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "isMut": false, + "isSigner": false } ], "args": [ { "name": "trader", "type": { - "option": "pubkey" + "option": "publicKey" } } ] }, { - "name": "driftWithdraw", - "discriminator": [ - 86, - 59, - 186, - 123, - 183, - 181, - 234, - 137 - ], + "name": "driftDeposit", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false }, { - "name": "treasury" + "name": "treasury", + "isMut": false, + "isSigner": false }, { "name": "userStats", - "writable": true + "isMut": true, + "isSigner": false }, { "name": "user", - "writable": true + "isMut": true, + "isSigner": false }, { "name": "state", - "writable": true - }, - { - "name": "driftSigner" + "isMut": true, + "isSigner": false }, { "name": "treasuryAta", - "writable": true + "isMut": true, + "isSigner": false }, { "name": "driftAta", - "writable": true + "isMut": true, + "isSigner": false }, { "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "isMut": true, + "isSigner": true }, { "name": "driftProgram", - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + "isMut": false, + "isSigner": false }, { "name": "tokenProgram", - "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + "isMut": false, + "isSigner": false } ], "args": [ @@ -327,883 +466,4164 @@ export type Glam = { ] }, { - "name": "initialize", - "discriminator": [ - 175, - 175, - 109, - 31, - 13, - 152, - 155, - 237 - ], + "name": "driftWithdraw", "accounts": [ { "name": "fund", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 102, - 117, - 110, - 100 - ] - }, - { - "kind": "account", - "path": "manager" - }, - { - "kind": "arg", - "path": "name" - } - ] - } + "isMut": false, + "isSigner": false }, { "name": "treasury", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 116, - 114, - 101, - 97, - 115, - 117, - 114, - 121 - ] - }, - { - "kind": "account", - "path": "fund" - } - ] - } + "isMut": false, + "isSigner": false }, { - "name": "share", - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 115, - 104, - 97, - 114, - 101, - 45, - 48 - ] - }, - { - "kind": "account", - "path": "fund" - } - ] - } + "name": "userStats", + "isMut": true, + "isSigner": false }, { - "name": "manager", - "writable": true, - "signer": true + "name": "user", + "isMut": true, + "isSigner": false }, { - "name": "systemProgram", - "address": "11111111111111111111111111111111" + "name": "state", + "isMut": true, + "isSigner": false }, { - "name": "tokenProgram", - "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" + "name": "driftSigner", + "isMut": false, + "isSigner": false }, { - "name": "rent", - "address": "SysvarRent111111111111111111111111111111111" - } - ], - "args": [ - { - "name": "fundName", - "type": "string" + "name": "treasuryAta", + "isMut": true, + "isSigner": false }, { - "name": "fundSymbol", - "type": "string" + "name": "driftAta", + "isMut": true, + "isSigner": false }, { - "name": "fundUri", - "type": "string" + "name": "manager", + "isMut": true, + "isSigner": true }, { - "name": "assetWeights", - "type": { - "vec": "u32" - } + "name": "driftProgram", + "isMut": false, + "isSigner": false }, { - "name": "activate", - "type": "bool" - }, + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ { - "name": "shareClassMetadata", - "type": { - "defined": { - "name": "shareClassMetadata" - } - } + "name": "amount", + "type": "u64" } ] }, { - "name": "redeem", - "discriminator": [ - 184, - 12, - 86, - 149, - 70, - 196, - 97, - 225 - ], - "accounts": [ - { - "name": "fund" - }, - { - "name": "shareClass", - "writable": true - }, - { - "name": "signerShareAta", - "writable": true - }, - { - "name": "signer", - "writable": true, - "signer": true - }, - { - "name": "treasury" - }, - { - "name": "tokenProgram", - "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - }, - { - "name": "token2022Program", - "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - }, - { - "name": "inKind", - "type": "bool" - }, - { - "name": "skipState", - "type": "bool" - } - ] - }, - { - "name": "subscribe", - "discriminator": [ - 254, - 28, - 191, - 138, - 156, - 179, - 183, - 53 - ], + "name": "driftClose", "accounts": [ { - "name": "fund" + "name": "fund", + "isMut": false, + "isSigner": false }, { - "name": "shareClass", - "writable": true + "name": "treasury", + "isMut": false, + "isSigner": false }, { - "name": "signerShareAta", - "writable": true + "name": "userStats", + "isMut": true, + "isSigner": false }, { - "name": "asset", - "writable": true + "name": "user", + "isMut": true, + "isSigner": false }, { - "name": "treasuryAta", - "writable": true + "name": "state", + "isMut": true, + "isSigner": false }, { - "name": "signerAssetAta", - "writable": true + "name": "manager", + "isMut": true, + "isSigner": true }, { - "name": "signer", - "writable": true, - "signer": true + "name": "driftProgram", + "isMut": false, + "isSigner": false }, { "name": "systemProgram", - "address": "11111111111111111111111111111111" - }, - { - "name": "associatedTokenProgram", - "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" - }, - { - "name": "tokenProgram", - "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - }, - { - "name": "token2022Program", - "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - }, - { - "name": "skipState", - "type": "bool" - } - ] - }, - { - "name": "update", - "discriminator": [ - 219, - 200, - 88, - 176, - 158, - 63, - 253, - 127 - ], - "accounts": [ - { - "name": "fund", - "writable": true - }, - { - "name": "manager", - "writable": true, - "signer": true, - "relations": [ - "fund" - ] + "isMut": false, + "isSigner": false } ], - "args": [ - { - "name": "name", - "type": { - "option": "string" - } - }, - { - "name": "uri", - "type": { - "option": "string" - } - }, - { - "name": "assetWeights", - "type": { - "option": { - "vec": "u32" - } - } - }, - { - "name": "activate", - "type": { - "option": "bool" - } - } - ] + "args": [] } ], "accounts": [ - { - "name": "fund", - "discriminator": [ - 62, - 128, - 183, - 208, - 91, - 31, - 212, - 209 - ] - }, { "name": "state", - "discriminator": [ - 216, - 146, - 107, - 94, - 104, - 75, - 182, - 177 - ] - }, - { - "name": "treasury", - "discriminator": [ - 238, - 239, - 123, - 238, - 89, - 1, - 168, - 253 - ] - } - ], - "errors": [ - { - "code": 6000, - "name": "closeNotEmptyError", - "msg": "Error closing account: not empty" - }, - { - "code": 6001, - "name": "notAuthorizedError", - "msg": "Error: not authorized" - }, - { - "code": 6002, - "name": "invalidFundName", - "msg": "Invalid fund name: max 30 chars" - }, - { - "code": 6003, - "name": "invalidFundSymbol", - "msg": "Too many assets: max 50" - }, - { - "code": 6004, - "name": "invalidFundUri", - "msg": "Too many assets: max 20" - }, - { - "code": 6005, - "name": "invalidAssetsLen", - "msg": "Too many assets: max 100" - }, - { - "code": 6006, - "name": "invalidAssetsWeights", - "msg": "Number of weights should match number of assets" - } - ], - "types": [ - { - "name": "feeStructure", + "docs": [ + "Account: State" + ], "type": { "kind": "struct", "fields": [ { - "name": "feeTiers", + "name": "admin", + "type": "publicKey" + }, + { + "name": "whitelistMint", + "type": "publicKey" + }, + { + "name": "discountMint", + "type": "publicKey" + }, + { + "name": "signer", + "type": "publicKey" + }, + { + "name": "srmVault", + "type": "publicKey" + }, + { + "name": "perpFeeStructure", "type": { - "array": [ - { - "defined": { - "name": "feeTier" - } - }, - 10 - ] + "defined": "FeeStructure" } }, { - "name": "fillerRewardStructure", + "name": "spotFeeStructure", "type": { - "defined": { - "name": "orderFillerRewardStructure" - } + "defined": "FeeStructure" } }, { - "name": "referrerRewardEpochUpperBound", + "name": "oracleGuardRails", + "type": { + "defined": "OracleGuardRails" + } + }, + { + "name": "numberOfAuthorities", "type": "u64" }, { - "name": "flatFillerFee", + "name": "numberOfSubAccounts", "type": "u64" - } - ] - } - }, - { - "name": "feeTier", - "type": { - "kind": "struct", - "fields": [ + }, { - "name": "feeNumerator", - "type": "u32" + "name": "lpCooldownTime", + "type": "u64" }, { - "name": "feeDenominator", + "name": "liquidationMarginBufferRatio", "type": "u32" }, { - "name": "makerRebateNumerator", - "type": "u32" + "name": "settlementDuration", + "type": "u16" }, { - "name": "makerRebateDenominator", - "type": "u32" + "name": "numberOfMarkets", + "type": "u16" }, { - "name": "referrerRewardNumerator", - "type": "u32" + "name": "numberOfSpotMarkets", + "type": "u16" }, { - "name": "referrerRewardDenominator", - "type": "u32" + "name": "signerNonce", + "type": "u8" }, { - "name": "refereeFeeNumerator", - "type": "u32" + "name": "minPerpAuctionDuration", + "type": "u8" }, { - "name": "refereeFeeDenominator", - "type": "u32" - } - ] - } - }, - { - "name": "fund", - "type": { - "kind": "struct", - "fields": [ + "name": "defaultMarketOrderTimeInForce", + "type": "u8" + }, + { + "name": "defaultSpotAuctionDuration", + "type": "u8" + }, + { + "name": "exchangeStatus", + "type": "u8" + }, + { + "name": "liquidationDuration", + "type": "u8" + }, + { + "name": "initialPctToLiquidate", + "type": "u16" + }, + { + "name": "maxNumberOfSubAccounts", + "type": "u16" + }, + { + "name": "maxInitializeUserFee", + "type": "u16" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 10 + ] + } + } + ] + } + }, + { + "name": "fund", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "treasury", + "type": "publicKey" + }, + { + "name": "assetsLen", + "type": "u8" + }, + { + "name": "assets", + "type": { + "array": [ + "publicKey", + 5 + ] + } + }, + { + "name": "assetsWeights", + "type": { + "array": [ + "u32", + 5 + ] + } + }, + { + "name": "shareClassesLen", + "type": "u8" + }, + { + "name": "shareClasses", + "type": { + "array": [ + "publicKey", + 3 + ] + } + }, + { + "name": "shareClassesMetadata", + "type": { + "array": [ + { + "defined": "ShareClassMetadata" + }, + 3 + ] + } + }, + { + "name": "shareClassesBumps", + "type": { + "array": [ + "u8", + 3 + ] + } + }, + { + "name": "timeCreated", + "type": "i64" + }, + { + "name": "bumpFund", + "type": "u8" + }, + { + "name": "bumpTreasury", + "type": "u8" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "uri", + "type": "string" + }, + { + "name": "isActive", + "type": "bool" + } + ] + } + }, + { + "name": "fundAccount", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": "string" + }, + { + "name": "uri", + "type": "string" + }, + { + "name": "treasury", + "type": "publicKey" + }, + { + "name": "shareClass", + "type": { + "vec": "publicKey" + } + }, + { + "name": "openfund", + "type": "publicKey" + }, + { + "name": "openfundUri", + "type": "string" + }, + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "engine", + "type": "publicKey" + }, + { + "name": "params", + "type": { + "vec": { + "vec": { + "defined": "GlamParam" + } + } + } + } + ] + } + }, + { + "name": "fundMetadataAccount", + "type": { + "kind": "struct", + "fields": [ + { + "name": "fundPubkey", + "type": "publicKey" + }, + { + "name": "company", + "type": { + "vec": { + "defined": "CompanyField" + } + } + }, + { + "name": "fund", + "type": { + "vec": { + "defined": "FundField" + } + } + }, + { + "name": "shareClass", + "type": { + "vec": { + "vec": { + "defined": "ShareClassField" + } + } + } + }, + { + "name": "fundManager", + "type": { + "vec": { + "vec": { + "defined": "FundManagerField" + } + } + } + } + ] + } + }, + { + "name": "treasury", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "fund", + "type": "publicKey" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + } + ], + "types": [ + { + "name": "FeeStructure", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feeTiers", + "type": { + "array": [ + { + "defined": "FeeTier" + }, + 10 + ] + } + }, + { + "name": "fillerRewardStructure", + "type": { + "defined": "OrderFillerRewardStructure" + } + }, + { + "name": "referrerRewardEpochUpperBound", + "type": "u64" + }, + { + "name": "flatFillerFee", + "type": "u64" + } + ] + } + }, + { + "name": "FeeTier", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feeNumerator", + "type": "u32" + }, + { + "name": "feeDenominator", + "type": "u32" + }, + { + "name": "makerRebateNumerator", + "type": "u32" + }, + { + "name": "makerRebateDenominator", + "type": "u32" + }, + { + "name": "referrerRewardNumerator", + "type": "u32" + }, + { + "name": "referrerRewardDenominator", + "type": "u32" + }, + { + "name": "refereeFeeNumerator", + "type": "u32" + }, + { + "name": "refereeFeeDenominator", + "type": "u32" + } + ] + } + }, + { + "name": "OracleGuardRails", + "type": { + "kind": "struct", + "fields": [ + { + "name": "priceDivergence", + "type": { + "defined": "PriceDivergenceGuardRails" + } + }, + { + "name": "validity", + "type": { + "defined": "ValidityGuardRails" + } + } + ] + } + }, + { + "name": "OrderFillerRewardStructure", + "type": { + "kind": "struct", + "fields": [ + { + "name": "rewardNumerator", + "type": "u32" + }, + { + "name": "rewardDenominator", + "type": "u32" + }, + { + "name": "timeBasedRewardLowerBound", + "type": "u128" + } + ] + } + }, + { + "name": "PriceDivergenceGuardRails", + "type": { + "kind": "struct", + "fields": [ + { + "name": "markOraclePercentDivergence", + "type": "u64" + }, + { + "name": "oracleTwap5minPercentDivergence", + "type": "u64" + } + ] + } + }, + { + "name": "ValidityGuardRails", + "type": { + "kind": "struct", + "fields": [ + { + "name": "slotsBeforeStaleForAmm", + "type": "i64" + }, + { + "name": "slotsBeforeStaleForMargin", + "type": "i64" + }, + { + "name": "confidenceIntervalMaxSize", + "type": "u64" + }, + { + "name": "tooVolatileRatio", + "type": "i64" + } + ] + } + }, + { + "name": "CompanyModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "option": "string" + } + } + ] + } + }, + { + "name": "CreatedModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "key", + "type": { + "array": [ + "u8", + 8 + ] + } + }, + { + "name": "manager", + "type": { + "option": "publicKey" + } + } + ] + } + }, + { + "name": "FundModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "id", + "type": { + "option": "string" + } + }, + { + "name": "symbol", + "type": { + "option": "string" + } + }, + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "uri", + "type": { + "option": "string" + } + }, + { + "name": "uriOpenfund", + "type": { + "option": "string" + } + }, + { + "name": "isActive", + "type": { + "option": "bool" + } + }, + { + "name": "assets", + "type": { + "vec": "publicKey" + } + }, + { + "name": "assetsWeights", + "type": { + "vec": "u32" + } + }, + { + "name": "shareClass", + "type": { + "vec": { + "defined": "ShareClassModel" + } + } + }, + { + "name": "company", + "type": { + "option": { + "defined": "CompanyModel" + } + } + }, + { + "name": "manager", + "type": { + "option": { + "defined": "ManagerModel" + } + } + }, + { + "name": "created", + "type": { + "option": { + "defined": "CreatedModel" + } + } + } + ] + } + }, + { + "name": "GlamParam", + "type": { + "kind": "struct", + "fields": [ + { + "name": "key", + "type": { + "defined": "OFKey" + } + }, + { + "name": "val", + "type": { + "defined": "OFValue" + } + } + ] + } + }, + { + "name": "ManagerKind", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Wallet" + }, + { + "name": "Squads" + } + ] + } + }, + { + "name": "ManagerModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "pubkey", + "type": { + "option": "publicKey" + } + }, + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "kind", + "type": { + "option": { + "defined": "ManagerKind" + } + } + } + ] + } + }, + { + "name": "OFKey", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Symbol" + }, + { + "name": "TimeCreated" + }, + { + "name": "Active" + }, + { + "name": "Hello" + } + ] + } + }, + { + "name": "OFValue", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Boolean", + "fields": [ + { + "name": "val", + "type": "bool" + } + ] + }, + { + "name": "Date", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "Double", + "fields": [ + { + "name": "val", + "type": "i64" + } + ] + }, + { + "name": "Integer", + "fields": [ + { + "name": "val", + "type": "i32" + } + ] + }, + { + "name": "String", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "Time", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "U8", + "fields": [ + { + "name": "val", + "type": "u8" + } + ] + }, + { + "name": "U64", + "fields": [ + { + "name": "val", + "type": "u64" + } + ] + }, + { + "name": "Pubkey", + "fields": [ + { + "name": "val", + "type": "publicKey" + } + ] + }, + { + "name": "Percentage", + "fields": [ + { + "name": "val", + "type": "u32" + } + ] + }, + { + "name": "URI", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "Timestamp", + "fields": [ + { + "name": "val", + "type": "i64" + } + ] + }, + { + "name": "VecPubkey", + "fields": [ + { + "name": "val", + "type": { + "vec": "publicKey" + } + } + ] + }, + { + "name": "VecU32", + "fields": [ + { + "name": "val", + "type": { + "vec": "u32" + } + } + ] + } + ] + } + }, + { + "name": "ShareClassMetadata", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "uri", + "type": "string" + }, + { + "name": "shareClassAsset", + "type": "string" + }, + { + "name": "shareClassAssetId", + "type": "publicKey" + }, + { + "name": "isin", + "type": "string" + }, + { + "name": "status", + "type": "string" + }, + { + "name": "feeManagement", + "type": "i32" + }, + { + "name": "feePerformance", + "type": "i32" + }, + { + "name": "policyDistribution", + "type": "string" + }, + { + "name": "extension", + "type": "string" + }, + { + "name": "launchDate", + "type": "string" + }, + { + "name": "lifecycle", + "type": "string" + }, + { + "name": "imageUri", + "type": "string" + } + ] + } + }, + { + "name": "ShareClassModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "symbol", + "type": { + "option": "string" + } + }, + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "uri", + "type": { + "option": "string" + } + }, + { + "name": "asset", + "type": { + "option": "string" + } + }, + { + "name": "assetPubkey", + "type": { + "option": "publicKey" + } + }, + { + "name": "isin", + "type": { + "option": "string" + } + }, + { + "name": "status", + "type": { + "option": { + "defined": "ShareClassStatus" + } + } + }, + { + "name": "policyDistribution", + "type": { + "option": "string" + } + }, + { + "name": "extension", + "type": { + "option": "string" + } + }, + { + "name": "launchDate", + "type": { + "option": "string" + } + }, + { + "name": "lifecycle", + "type": { + "option": "string" + } + }, + { + "name": "imageUri", + "type": { + "option": "string" + } + } + ] + } + }, + { + "name": "ShareClassStatus", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Open" + }, + { + "name": "SoftClosed" + }, + { + "name": "HardClosed" + }, + { + "name": "ClosedForRedemption" + }, + { + "name": "ClosedForSubscriptionAndRedemption" + } + ] + } + }, + { + "name": "CompanyField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "CompanyFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "CompanyFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "FundGroupName" + }, + { + "name": "DomicileOfManCo" + }, + { + "name": "ManCo" + }, + { + "name": "BICOfCustodian" + }, + { + "name": "CollateralManagerName" + }, + { + "name": "CustodianBankName" + }, + { + "name": "DomicileOfCustodianBank" + }, + { + "name": "FundAdministratorName" + }, + { + "name": "FundAdvisorName" + }, + { + "name": "FundPromoterName" + }, + { + "name": "IsSelfManagedInvestmentCompany" + }, + { + "name": "LEIOfCustodianBank" + }, + { + "name": "LEIOfManCo" + }, + { + "name": "PortfolioManagingCompanyName" + }, + { + "name": "SecuritiesLendingCounterpartyName" + }, + { + "name": "SwapCounterpartyName" + }, + { + "name": "AddressofManCo" + }, + { + "name": "AuditorName" + }, + { + "name": "CityofManCo" + }, + { + "name": "EmailAddressOfManCo" + }, + { + "name": "FundWebsiteofManCo" + }, + { + "name": "IsUNPRISignatory" + }, + { + "name": "PhoneCountryCodeofManCo" + }, + { + "name": "PhoneNumberofManCo" + }, + { + "name": "SubInvestmentAdvisorName" + }, + { + "name": "ZIPCodeofManCo" + }, + { + "name": "DomicileOfUmbrella" + }, + { + "name": "HasUmbrella" + }, + { + "name": "LEIOfUmbrella" + }, + { + "name": "Umbrella" + }, + { + "name": "GlobalIntermediaryIdentificationNumberOfUmbrella" + } + ] + } + }, + { + "name": "FundField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "FundFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "FundFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "FundDomicileAlpha2" + }, + { + "name": "FundDomicileAlpha3" + }, + { + "name": "LegalFundNameIncludingUmbrella" + }, + { + "name": "FiscalYearEnd" + }, + { + "name": "FundCurrency" + }, + { + "name": "FundLaunchDate" + }, + { + "name": "InvestmentObjective" + }, + { + "name": "IsETC" + }, + { + "name": "IsEUDirectiveRelevant" + }, + { + "name": "IsFundOfFunds" + }, + { + "name": "IsPassiveFund" + }, + { + "name": "IsREIT" + }, + { + "name": "LegalForm" + }, + { + "name": "LegalFundNameOnly" + }, + { + "name": "OpenEndedOrClosedEndedFundStructure" + }, + { + "name": "TypeOfEUDirective" + }, + { + "name": "UCITSVersion" + }, + { + "name": "CurrencyHedgePortfolio" + }, + { + "name": "DepositoryName" + }, + { + "name": "FundValuationPoint" + }, + { + "name": "FundValuationPointTimeZone" + }, + { + "name": "FundValuationPointTimeZoneUsingTZDatabase" + }, + { + "name": "HasCollateralManager" + }, + { + "name": "HasEmbeddedDerivatives" + }, + { + "name": "HasSecuritiesLending" + }, + { + "name": "HasSwap" + }, + { + "name": "IsLeveraged" + }, + { + "name": "IsShariaCompliant" + }, + { + "name": "IsShort" + }, + { + "name": "LEIofDepositoryBank" + }, + { + "name": "LEIOfFund" + }, + { + "name": "LocationOfBearerShare" + }, + { + "name": "LocationOfShareRegister" + }, + { + "name": "MaximumLeverageInFund" + }, + { + "name": "MiFIDSecuritiesClassification" + }, + { + "name": "MoneyMarketTypeOfFund" + }, + { + "name": "TrusteeName" + }, + { + "name": "AuMFund" + }, + { + "name": "AuMFundDate" + }, + { + "name": "NoSFund" + }, + { + "name": "NoSFundDate" + } + ] + } + }, + { + "name": "FundManagerField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "FundManagerFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "FundManagerFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "PortfolioManagerForename" + }, + { + "name": "PortfolioManagerName" + }, + { + "name": "PortfolioManagerYearOfBirth" + }, + { + "name": "PortfolioManagerYearOfExperienceStart" + }, + { + "name": "PortfolioManagerBriefBiography" + }, + { + "name": "PortfolioManagerType" + }, + { + "name": "PortfolioManagerRoleStartingDate" + }, + { + "name": "PortfolioManagerRoleEndDate" + } + ] + } + }, + { + "name": "ShareClassField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "ShareClassFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "ShareClassFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "ISIN" + }, + { + "name": "ShareClassCurrency" + }, + { + "name": "AllInFeeApplied" + }, + { + "name": "AllInFeeDate" + }, + { + "name": "AllInFeeIncludesTransactionCosts" + }, + { + "name": "AllInFeeMaximum" + }, + { + "name": "AppliedSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "AppliedSubscriptionFeeInFavourOfDistributorReferenceDate" + }, + { + "name": "Benchmark" + }, + { + "name": "CountryLegalRegistration" + }, + { + "name": "CountryMarketingDistribution" + }, + { + "name": "CurrencyHedgeShareClass" + }, + { + "name": "CurrencyofMinimalSubscription" + }, + { + "name": "DistributionDeclarationFrequency" + }, + { + "name": "FullShareClassName" + }, + { + "name": "HasAllInFee" + }, + { + "name": "HasOngoingCharges" + }, + { + "name": "HasPerformanceFee" + }, + { + "name": "HasSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "InvestmentStatus" + }, + { + "name": "IsETF" + }, + { + "name": "IsRDRCompliant" + }, + { + "name": "IsTrailerFeeClean" + }, + { + "name": "ManagementFeeApplied" + }, + { + "name": "ManagementFeeAppliedReferenceDate" + }, + { + "name": "ManagementFeeMaximum" + }, + { + "name": "MaximumSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "MinimalInitialSubscriptionCategory" + }, + { + "name": "MinimalInitialSubscriptionInAmount" + }, + { + "name": "MinimalInitialSubscriptionInShares" + }, + { + "name": "MinimalSubsequentSubscriptionCategory" + }, + { + "name": "MinimalSubsequentSubscriptionInAmount" + }, + { + "name": "MinimalSubsequentSubscriptionInShares" + }, + { + "name": "MinimumSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "OngoingCharges" + }, + { + "name": "OngoingChargesDate" + }, + { + "name": "PerformanceFeeApplied" + }, + { + "name": "PerformanceFeeAppliedReferenceDate" + }, + { + "name": "PerformanceFeeInProspectus" + }, + { + "name": "PerformanceFeeInProspectusReferenceDate" + }, + { + "name": "RecordDateForSRRI" + }, + { + "name": "ShareClassDistributionPolicy" + }, + { + "name": "ShareClassExtension" + }, + { + "name": "ShareClassLaunchDate" + }, + { + "name": "ShareClassLifecycle" + }, + { + "name": "SRRI" + }, + { + "name": "TERExcludingPerformanceFee" + }, + { + "name": "TERExcludingPerformanceFeeDate" + }, + { + "name": "TERIncludingPerformanceFee" + }, + { + "name": "TERIncludingPerformanceFeeDate" + }, + { + "name": "AbbreviatedShareClassName" + }, + { + "name": "BICOfTransferAgent" + }, + { + "name": "BloombergCode" + }, + { + "name": "CurrencyOfMinimumRemainingAmount" + }, + { + "name": "DistributionFeeMaximum" + }, + { + "name": "DomicileofTransferAgent" + }, + { + "name": "EFAMAActiveEFCClassification" + }, + { + "name": "EFAMAEFCClassificationType" + }, + { + "name": "EFAMAEFCInvestmentTheme" + }, + { + "name": "EFAMAMainEFCCategory" + }, + { + "name": "FIGICode" + }, + { + "name": "FormOfShare" + }, + { + "name": "HasDurationHedge" + }, + { + "name": "IASector" + }, + { + "name": "InvestmentStatusDate" + }, + { + "name": "IsShareClassEligibleForUCITS" + }, + { + "name": "LaunchPrice" + }, + { + "name": "LaunchPriceCurrency" + }, + { + "name": "LaunchPriceDate" + }, + { + "name": "NAVPublicationTime" + }, + { + "name": "PricingMethodology" + }, + { + "name": "SinglePricingType" + }, + { + "name": "StandardMinimumRemainingAmount" + }, + { + "name": "StandardMinimumRemainingCategory" + }, + { + "name": "StandardMinimumRemainingShares" + }, + { + "name": "SwingFactor" + }, + { + "name": "TransferAgentName" + }, + { + "name": "ValuationFrequency" + }, + { + "name": "AskNAV" + }, + { + "name": "AskNAVDate" + }, + { + "name": "AuMShareClass" + }, + { + "name": "AuMShareClassDate" + }, + { + "name": "BidNAV" + }, + { + "name": "BidNAVDate" + }, + { + "name": "DividendAnnouncementDate" + }, + { + "name": "DividendCurrency" + }, + { + "name": "DividendExDate" + }, + { + "name": "DividendGross" + }, + { + "name": "DividendNet" + }, + { + "name": "DividendPaymentDate" + }, + { + "name": "DividendRecordDate" + }, + { + "name": "DynamicCurrency" + }, + { + "name": "DynamicDataType" + }, + { + "name": "DynamicValue" + }, + { + "name": "EqualisationRate" + }, + { + "name": "GeneralReferenceDate" + }, + { + "name": "IsDividendFinal" + }, + { + "name": "NoSShareClass" + }, + { + "name": "NoSShareClassDate" + }, + { + "name": "SplitRatio" + }, + { + "name": "SplitReferenceDate" + }, + { + "name": "TaxDeductedReinvestedAmount" + }, + { + "name": "TaxDeductedReinvestedAmountReferenceDate" + }, + { + "name": "TaxableIncomeperDividend" + }, + { + "name": "TaxableIncomeperShareEU" + }, + { + "name": "TransactionNAV" + }, + { + "name": "TransactionNAVDate" + }, + { + "name": "ValuationNAV" + }, + { + "name": "ValuationNAVDate" + }, + { + "name": "YieldOneDayGross" + }, + { + "name": "YieldOneDayNet" + }, + { + "name": "YieldSevenDayGross" + }, + { + "name": "YieldSevenDayNet" + }, + { + "name": "YieldThirtyDayGross" + }, + { + "name": "YieldThirtyDayNet" + } + ] + } + } + ], + "errors": [ + { + "code": 6000, + "name": "FundNotActive", + "msg": "Fund is not active" + }, + { + "code": 6001, + "name": "InvalidShareClass", + "msg": "Share class not allowed to subscribe" + }, + { + "code": 6002, + "name": "InvalidAssetSubscribe", + "msg": "Asset not allowed to subscribe" + }, + { + "code": 6003, + "name": "InvalidPricingOracle", + "msg": "Invalid oracle for asset price" + }, + { + "code": 6004, + "name": "InvalidAssetsRedeem", + "msg": "Invalid assets in redeem" + }, + { + "code": 6005, + "name": "InvalidTreasuryAccount", + "msg": "Invalid treasury account" + } + ] +}; + +export const IDL: Glam = { + "version": "0.2.0", + "name": "glam", + "instructions": [ + { + "name": "initializeV2", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "openfund", + "isMut": true, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, + { + "name": "share", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "fund", + "type": { + "defined": "FundModel" + } + } + ] + }, + { + "name": "initialize", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "treasury", + "isMut": true, + "isSigner": false + }, + { + "name": "share", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "fundName", + "type": "string" + }, + { + "name": "fundSymbol", + "type": "string" + }, + { + "name": "fundUri", + "type": "string" + }, + { + "name": "assetWeights", + "type": { + "vec": "u32" + } + }, + { + "name": "activate", + "type": "bool" + }, + { + "name": "shareClassMetadata", + "type": { + "defined": "ShareClassMetadata" + } + } + ] + }, + { + "name": "update", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + } + ], + "args": [ + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "uri", + "type": { + "option": "string" + } + }, + { + "name": "assetWeights", + "type": { + "option": { + "vec": "u32" + } + } + }, + { + "name": "activate", + "type": { + "option": "bool" + } + } + ] + }, + { + "name": "close", + "accounts": [ + { + "name": "fund", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + } + ], + "args": [] + }, + { + "name": "subscribe", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false + }, + { + "name": "signerShareAta", + "isMut": true, + "isSigner": false + }, + { + "name": "asset", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signerAssetAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signer", + "isMut": true, + "isSigner": true + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "associatedTokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "skipState", + "type": "bool" + } + ] + }, + { + "name": "redeem", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "shareClass", + "isMut": true, + "isSigner": false + }, + { + "name": "signerShareAta", + "isMut": true, + "isSigner": false + }, + { + "name": "signer", + "isMut": true, + "isSigner": true + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "token2022Program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "inKind", + "type": "bool" + }, + { + "name": "skipState", + "type": "bool" + } + ] + }, + { + "name": "driftInitialize", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "rent", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "trader", + "type": { + "option": "publicKey" + } + } + ] + }, + { + "name": "driftUpdateDelegatedTrader", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "trader", + "type": { + "option": "publicKey" + } + } + ] + }, + { + "name": "driftDeposit", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "driftAta", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "driftWithdraw", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "driftSigner", + "isMut": false, + "isSigner": false + }, + { + "name": "treasuryAta", + "isMut": true, + "isSigner": false + }, + { + "name": "driftAta", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "amount", + "type": "u64" + } + ] + }, + { + "name": "driftClose", + "accounts": [ + { + "name": "fund", + "isMut": false, + "isSigner": false + }, + { + "name": "treasury", + "isMut": false, + "isSigner": false + }, + { + "name": "userStats", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "state", + "isMut": true, + "isSigner": false + }, + { + "name": "manager", + "isMut": true, + "isSigner": true + }, + { + "name": "driftProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [] + } + ], + "accounts": [ + { + "name": "state", + "docs": [ + "Account: State" + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "admin", + "type": "publicKey" + }, + { + "name": "whitelistMint", + "type": "publicKey" + }, + { + "name": "discountMint", + "type": "publicKey" + }, + { + "name": "signer", + "type": "publicKey" + }, + { + "name": "srmVault", + "type": "publicKey" + }, + { + "name": "perpFeeStructure", + "type": { + "defined": "FeeStructure" + } + }, + { + "name": "spotFeeStructure", + "type": { + "defined": "FeeStructure" + } + }, + { + "name": "oracleGuardRails", + "type": { + "defined": "OracleGuardRails" + } + }, + { + "name": "numberOfAuthorities", + "type": "u64" + }, + { + "name": "numberOfSubAccounts", + "type": "u64" + }, + { + "name": "lpCooldownTime", + "type": "u64" + }, + { + "name": "liquidationMarginBufferRatio", + "type": "u32" + }, + { + "name": "settlementDuration", + "type": "u16" + }, + { + "name": "numberOfMarkets", + "type": "u16" + }, + { + "name": "numberOfSpotMarkets", + "type": "u16" + }, + { + "name": "signerNonce", + "type": "u8" + }, + { + "name": "minPerpAuctionDuration", + "type": "u8" + }, + { + "name": "defaultMarketOrderTimeInForce", + "type": "u8" + }, + { + "name": "defaultSpotAuctionDuration", + "type": "u8" + }, + { + "name": "exchangeStatus", + "type": "u8" + }, + { + "name": "liquidationDuration", + "type": "u8" + }, + { + "name": "initialPctToLiquidate", + "type": "u16" + }, + { + "name": "maxNumberOfSubAccounts", + "type": "u16" + }, + { + "name": "maxInitializeUserFee", + "type": "u16" + }, + { + "name": "padding", + "type": { + "array": [ + "u8", + 10 + ] + } + } + ] + } + }, + { + "name": "fund", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "treasury", + "type": "publicKey" + }, + { + "name": "assetsLen", + "type": "u8" + }, + { + "name": "assets", + "type": { + "array": [ + "publicKey", + 5 + ] + } + }, + { + "name": "assetsWeights", + "type": { + "array": [ + "u32", + 5 + ] + } + }, + { + "name": "shareClassesLen", + "type": "u8" + }, + { + "name": "shareClasses", + "type": { + "array": [ + "publicKey", + 3 + ] + } + }, + { + "name": "shareClassesMetadata", + "type": { + "array": [ + { + "defined": "ShareClassMetadata" + }, + 3 + ] + } + }, + { + "name": "shareClassesBumps", + "type": { + "array": [ + "u8", + 3 + ] + } + }, + { + "name": "timeCreated", + "type": "i64" + }, + { + "name": "bumpFund", + "type": "u8" + }, + { + "name": "bumpTreasury", + "type": "u8" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "uri", + "type": "string" + }, + { + "name": "isActive", + "type": "bool" + } + ] + } + }, + { + "name": "fundAccount", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": "string" + }, + { + "name": "uri", + "type": "string" + }, + { + "name": "treasury", + "type": "publicKey" + }, + { + "name": "shareClass", + "type": { + "vec": "publicKey" + } + }, + { + "name": "openfund", + "type": "publicKey" + }, + { + "name": "openfundUri", + "type": "string" + }, + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "engine", + "type": "publicKey" + }, + { + "name": "params", + "type": { + "vec": { + "vec": { + "defined": "GlamParam" + } + } + } + } + ] + } + }, + { + "name": "fundMetadataAccount", + "type": { + "kind": "struct", + "fields": [ + { + "name": "fundPubkey", + "type": "publicKey" + }, + { + "name": "company", + "type": { + "vec": { + "defined": "CompanyField" + } + } + }, + { + "name": "fund", + "type": { + "vec": { + "defined": "FundField" + } + } + }, + { + "name": "shareClass", + "type": { + "vec": { + "vec": { + "defined": "ShareClassField" + } + } + } + }, + { + "name": "fundManager", + "type": { + "vec": { + "vec": { + "defined": "FundManagerField" + } + } + } + } + ] + } + }, + { + "name": "treasury", + "type": { + "kind": "struct", + "fields": [ + { + "name": "manager", + "type": "publicKey" + }, + { + "name": "fund", + "type": "publicKey" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + } + ], + "types": [ + { + "name": "FeeStructure", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feeTiers", + "type": { + "array": [ + { + "defined": "FeeTier" + }, + 10 + ] + } + }, + { + "name": "fillerRewardStructure", + "type": { + "defined": "OrderFillerRewardStructure" + } + }, + { + "name": "referrerRewardEpochUpperBound", + "type": "u64" + }, + { + "name": "flatFillerFee", + "type": "u64" + } + ] + } + }, + { + "name": "FeeTier", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feeNumerator", + "type": "u32" + }, + { + "name": "feeDenominator", + "type": "u32" + }, + { + "name": "makerRebateNumerator", + "type": "u32" + }, + { + "name": "makerRebateDenominator", + "type": "u32" + }, + { + "name": "referrerRewardNumerator", + "type": "u32" + }, + { + "name": "referrerRewardDenominator", + "type": "u32" + }, + { + "name": "refereeFeeNumerator", + "type": "u32" + }, + { + "name": "refereeFeeDenominator", + "type": "u32" + } + ] + } + }, + { + "name": "OracleGuardRails", + "type": { + "kind": "struct", + "fields": [ + { + "name": "priceDivergence", + "type": { + "defined": "PriceDivergenceGuardRails" + } + }, + { + "name": "validity", + "type": { + "defined": "ValidityGuardRails" + } + } + ] + } + }, + { + "name": "OrderFillerRewardStructure", + "type": { + "kind": "struct", + "fields": [ + { + "name": "rewardNumerator", + "type": "u32" + }, + { + "name": "rewardDenominator", + "type": "u32" + }, + { + "name": "timeBasedRewardLowerBound", + "type": "u128" + } + ] + } + }, + { + "name": "PriceDivergenceGuardRails", + "type": { + "kind": "struct", + "fields": [ + { + "name": "markOraclePercentDivergence", + "type": "u64" + }, + { + "name": "oracleTwap5minPercentDivergence", + "type": "u64" + } + ] + } + }, + { + "name": "ValidityGuardRails", + "type": { + "kind": "struct", + "fields": [ + { + "name": "slotsBeforeStaleForAmm", + "type": "i64" + }, + { + "name": "slotsBeforeStaleForMargin", + "type": "i64" + }, + { + "name": "confidenceIntervalMaxSize", + "type": "u64" + }, + { + "name": "tooVolatileRatio", + "type": "i64" + } + ] + } + }, + { + "name": "CompanyModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "option": "string" + } + } + ] + } + }, + { + "name": "CreatedModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "key", + "type": { + "array": [ + "u8", + 8 + ] + } + }, + { + "name": "manager", + "type": { + "option": "publicKey" + } + } + ] + } + }, + { + "name": "FundModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "id", + "type": { + "option": "string" + } + }, + { + "name": "symbol", + "type": { + "option": "string" + } + }, + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "uri", + "type": { + "option": "string" + } + }, + { + "name": "uriOpenfund", + "type": { + "option": "string" + } + }, + { + "name": "isActive", + "type": { + "option": "bool" + } + }, + { + "name": "assets", + "type": { + "vec": "publicKey" + } + }, + { + "name": "assetsWeights", + "type": { + "vec": "u32" + } + }, + { + "name": "shareClass", + "type": { + "vec": { + "defined": "ShareClassModel" + } + } + }, + { + "name": "company", + "type": { + "option": { + "defined": "CompanyModel" + } + } + }, + { + "name": "manager", + "type": { + "option": { + "defined": "ManagerModel" + } + } + }, + { + "name": "created", + "type": { + "option": { + "defined": "CreatedModel" + } + } + } + ] + } + }, + { + "name": "GlamParam", + "type": { + "kind": "struct", + "fields": [ + { + "name": "key", + "type": { + "defined": "OFKey" + } + }, + { + "name": "val", + "type": { + "defined": "OFValue" + } + } + ] + } + }, + { + "name": "ManagerKind", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Wallet" + }, + { + "name": "Squads" + } + ] + } + }, + { + "name": "ManagerModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "pubkey", + "type": { + "option": "publicKey" + } + }, + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "kind", + "type": { + "option": { + "defined": "ManagerKind" + } + } + } + ] + } + }, + { + "name": "OFKey", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Symbol" + }, + { + "name": "TimeCreated" + }, + { + "name": "Active" + }, + { + "name": "Hello" + } + ] + } + }, + { + "name": "OFValue", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Boolean", + "fields": [ + { + "name": "val", + "type": "bool" + } + ] + }, + { + "name": "Date", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "Double", + "fields": [ + { + "name": "val", + "type": "i64" + } + ] + }, + { + "name": "Integer", + "fields": [ + { + "name": "val", + "type": "i32" + } + ] + }, + { + "name": "String", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "Time", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "U8", + "fields": [ + { + "name": "val", + "type": "u8" + } + ] + }, + { + "name": "U64", + "fields": [ + { + "name": "val", + "type": "u64" + } + ] + }, + { + "name": "Pubkey", + "fields": [ + { + "name": "val", + "type": "publicKey" + } + ] + }, + { + "name": "Percentage", + "fields": [ + { + "name": "val", + "type": "u32" + } + ] + }, + { + "name": "URI", + "fields": [ + { + "name": "val", + "type": "string" + } + ] + }, + { + "name": "Timestamp", + "fields": [ + { + "name": "val", + "type": "i64" + } + ] + }, + { + "name": "VecPubkey", + "fields": [ + { + "name": "val", + "type": { + "vec": "publicKey" + } + } + ] + }, + { + "name": "VecU32", + "fields": [ + { + "name": "val", + "type": { + "vec": "u32" + } + } + ] + } + ] + } + }, + { + "name": "ShareClassMetadata", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "uri", + "type": "string" + }, + { + "name": "shareClassAsset", + "type": "string" + }, + { + "name": "shareClassAssetId", + "type": "publicKey" + }, + { + "name": "isin", + "type": "string" + }, + { + "name": "status", + "type": "string" + }, + { + "name": "feeManagement", + "type": "i32" + }, + { + "name": "feePerformance", + "type": "i32" + }, + { + "name": "policyDistribution", + "type": "string" + }, + { + "name": "extension", + "type": "string" + }, + { + "name": "launchDate", + "type": "string" + }, + { + "name": "lifecycle", + "type": "string" + }, + { + "name": "imageUri", + "type": "string" + } + ] + } + }, + { + "name": "ShareClassModel", + "type": { + "kind": "struct", + "fields": [ + { + "name": "symbol", + "type": { + "option": "string" + } + }, + { + "name": "name", + "type": { + "option": "string" + } + }, + { + "name": "uri", + "type": { + "option": "string" + } + }, + { + "name": "asset", + "type": { + "option": "string" + } + }, + { + "name": "assetPubkey", + "type": { + "option": "publicKey" + } + }, + { + "name": "isin", + "type": { + "option": "string" + } + }, + { + "name": "status", + "type": { + "option": { + "defined": "ShareClassStatus" + } + } + }, + { + "name": "policyDistribution", + "type": { + "option": "string" + } + }, + { + "name": "extension", + "type": { + "option": "string" + } + }, + { + "name": "launchDate", + "type": { + "option": "string" + } + }, + { + "name": "lifecycle", + "type": { + "option": "string" + } + }, + { + "name": "imageUri", + "type": { + "option": "string" + } + } + ] + } + }, + { + "name": "ShareClassStatus", + "type": { + "kind": "enum", + "variants": [ + { + "name": "Open" + }, + { + "name": "SoftClosed" + }, + { + "name": "HardClosed" + }, + { + "name": "ClosedForRedemption" + }, + { + "name": "ClosedForSubscriptionAndRedemption" + } + ] + } + }, + { + "name": "CompanyField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "CompanyFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "CompanyFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "FundGroupName" + }, + { + "name": "DomicileOfManCo" + }, + { + "name": "ManCo" + }, + { + "name": "BICOfCustodian" + }, + { + "name": "CollateralManagerName" + }, + { + "name": "CustodianBankName" + }, + { + "name": "DomicileOfCustodianBank" + }, + { + "name": "FundAdministratorName" + }, + { + "name": "FundAdvisorName" + }, + { + "name": "FundPromoterName" + }, + { + "name": "IsSelfManagedInvestmentCompany" + }, + { + "name": "LEIOfCustodianBank" + }, + { + "name": "LEIOfManCo" + }, + { + "name": "PortfolioManagingCompanyName" + }, + { + "name": "SecuritiesLendingCounterpartyName" + }, + { + "name": "SwapCounterpartyName" + }, + { + "name": "AddressofManCo" + }, + { + "name": "AuditorName" + }, + { + "name": "CityofManCo" + }, + { + "name": "EmailAddressOfManCo" + }, + { + "name": "FundWebsiteofManCo" + }, + { + "name": "IsUNPRISignatory" + }, + { + "name": "PhoneCountryCodeofManCo" + }, + { + "name": "PhoneNumberofManCo" + }, + { + "name": "SubInvestmentAdvisorName" + }, + { + "name": "ZIPCodeofManCo" + }, + { + "name": "DomicileOfUmbrella" + }, + { + "name": "HasUmbrella" + }, + { + "name": "LEIOfUmbrella" + }, + { + "name": "Umbrella" + }, + { + "name": "GlobalIntermediaryIdentificationNumberOfUmbrella" + } + ] + } + }, + { + "name": "FundField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "FundFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "FundFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "FundDomicileAlpha2" + }, + { + "name": "FundDomicileAlpha3" + }, + { + "name": "LegalFundNameIncludingUmbrella" + }, + { + "name": "FiscalYearEnd" + }, + { + "name": "FundCurrency" + }, + { + "name": "FundLaunchDate" + }, + { + "name": "InvestmentObjective" + }, + { + "name": "IsETC" + }, + { + "name": "IsEUDirectiveRelevant" + }, + { + "name": "IsFundOfFunds" + }, + { + "name": "IsPassiveFund" + }, + { + "name": "IsREIT" + }, + { + "name": "LegalForm" + }, + { + "name": "LegalFundNameOnly" + }, + { + "name": "OpenEndedOrClosedEndedFundStructure" + }, + { + "name": "TypeOfEUDirective" + }, + { + "name": "UCITSVersion" + }, + { + "name": "CurrencyHedgePortfolio" + }, + { + "name": "DepositoryName" + }, + { + "name": "FundValuationPoint" + }, + { + "name": "FundValuationPointTimeZone" + }, + { + "name": "FundValuationPointTimeZoneUsingTZDatabase" + }, + { + "name": "HasCollateralManager" + }, + { + "name": "HasEmbeddedDerivatives" + }, + { + "name": "HasSecuritiesLending" + }, + { + "name": "HasSwap" + }, + { + "name": "IsLeveraged" + }, + { + "name": "IsShariaCompliant" + }, + { + "name": "IsShort" + }, + { + "name": "LEIofDepositoryBank" + }, + { + "name": "LEIOfFund" + }, + { + "name": "LocationOfBearerShare" + }, + { + "name": "LocationOfShareRegister" + }, + { + "name": "MaximumLeverageInFund" + }, + { + "name": "MiFIDSecuritiesClassification" + }, + { + "name": "MoneyMarketTypeOfFund" + }, + { + "name": "TrusteeName" + }, + { + "name": "AuMFund" + }, + { + "name": "AuMFundDate" + }, + { + "name": "NoSFund" + }, + { + "name": "NoSFundDate" + } + ] + } + }, + { + "name": "FundManagerField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "FundManagerFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "FundManagerFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "PortfolioManagerForename" + }, + { + "name": "PortfolioManagerName" + }, + { + "name": "PortfolioManagerYearOfBirth" + }, + { + "name": "PortfolioManagerYearOfExperienceStart" + }, + { + "name": "PortfolioManagerBriefBiography" + }, + { + "name": "PortfolioManagerType" + }, + { + "name": "PortfolioManagerRoleStartingDate" + }, + { + "name": "PortfolioManagerRoleEndDate" + } + ] + } + }, + { + "name": "ShareClassField", + "type": { + "kind": "struct", + "fields": [ + { + "name": "name", + "type": { + "defined": "ShareClassFieldName" + } + }, + { + "name": "value", + "type": "string" + } + ] + } + }, + { + "name": "ShareClassFieldName", + "type": { + "kind": "enum", + "variants": [ + { + "name": "ISIN" + }, + { + "name": "ShareClassCurrency" + }, + { + "name": "AllInFeeApplied" + }, + { + "name": "AllInFeeDate" + }, + { + "name": "AllInFeeIncludesTransactionCosts" + }, + { + "name": "AllInFeeMaximum" + }, + { + "name": "AppliedSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "AppliedSubscriptionFeeInFavourOfDistributorReferenceDate" + }, + { + "name": "Benchmark" + }, + { + "name": "CountryLegalRegistration" + }, + { + "name": "CountryMarketingDistribution" + }, + { + "name": "CurrencyHedgeShareClass" + }, + { + "name": "CurrencyofMinimalSubscription" + }, + { + "name": "DistributionDeclarationFrequency" + }, + { + "name": "FullShareClassName" + }, + { + "name": "HasAllInFee" + }, + { + "name": "HasOngoingCharges" + }, + { + "name": "HasPerformanceFee" + }, + { + "name": "HasSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "InvestmentStatus" + }, + { + "name": "IsETF" + }, + { + "name": "IsRDRCompliant" + }, + { + "name": "IsTrailerFeeClean" + }, + { + "name": "ManagementFeeApplied" + }, + { + "name": "ManagementFeeAppliedReferenceDate" + }, + { + "name": "ManagementFeeMaximum" + }, + { + "name": "MaximumSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "MinimalInitialSubscriptionCategory" + }, + { + "name": "MinimalInitialSubscriptionInAmount" + }, + { + "name": "MinimalInitialSubscriptionInShares" + }, + { + "name": "MinimalSubsequentSubscriptionCategory" + }, + { + "name": "MinimalSubsequentSubscriptionInAmount" + }, + { + "name": "MinimalSubsequentSubscriptionInShares" + }, + { + "name": "MinimumSubscriptionFeeInFavourOfDistributor" + }, + { + "name": "OngoingCharges" + }, + { + "name": "OngoingChargesDate" + }, + { + "name": "PerformanceFeeApplied" + }, + { + "name": "PerformanceFeeAppliedReferenceDate" + }, + { + "name": "PerformanceFeeInProspectus" + }, + { + "name": "PerformanceFeeInProspectusReferenceDate" + }, + { + "name": "RecordDateForSRRI" + }, + { + "name": "ShareClassDistributionPolicy" + }, + { + "name": "ShareClassExtension" + }, + { + "name": "ShareClassLaunchDate" + }, { - "name": "manager", - "type": "pubkey" + "name": "ShareClassLifecycle" }, { - "name": "treasury", - "type": "pubkey" + "name": "SRRI" }, { - "name": "assetsLen", - "type": "u8" + "name": "TERExcludingPerformanceFee" }, { - "name": "assets", - "type": { - "array": [ - "pubkey", - 5 - ] - } + "name": "TERExcludingPerformanceFeeDate" }, { - "name": "assetsWeights", - "type": { - "array": [ - "u32", - 5 - ] - } + "name": "TERIncludingPerformanceFee" }, { - "name": "shareClassesLen", - "type": "u8" + "name": "TERIncludingPerformanceFeeDate" }, { - "name": "shareClasses", - "type": { - "array": [ - "pubkey", - 3 - ] - } + "name": "AbbreviatedShareClassName" }, { - "name": "shareClassesMetadata", - "type": { - "array": [ - { - "defined": { - "name": "shareClassMetadata" - } - }, - 3 - ] - } + "name": "BICOfTransferAgent" }, { - "name": "shareClassesBumps", - "type": { - "array": [ - "u8", - 3 - ] - } + "name": "BloombergCode" }, { - "name": "timeCreated", - "type": "i64" + "name": "CurrencyOfMinimumRemainingAmount" }, { - "name": "bumpFund", - "type": "u8" + "name": "DistributionFeeMaximum" }, { - "name": "bumpTreasury", - "type": "u8" + "name": "DomicileofTransferAgent" }, { - "name": "name", - "type": "string" + "name": "EFAMAActiveEFCClassification" }, { - "name": "symbol", - "type": "string" + "name": "EFAMAEFCClassificationType" }, { - "name": "uri", - "type": "string" + "name": "EFAMAEFCInvestmentTheme" }, { - "name": "isActive", - "type": "bool" - } - ] - } - }, - { - "name": "oracleGuardRails", - "type": { - "kind": "struct", - "fields": [ + "name": "EFAMAMainEFCCategory" + }, { - "name": "priceDivergence", - "type": { - "defined": { - "name": "priceDivergenceGuardRails" - } - } + "name": "FIGICode" }, { - "name": "validity", - "type": { - "defined": { - "name": "validityGuardRails" - } - } - } - ] - } - }, - { - "name": "orderFillerRewardStructure", - "type": { - "kind": "struct", - "fields": [ + "name": "FormOfShare" + }, { - "name": "rewardNumerator", - "type": "u32" + "name": "HasDurationHedge" }, { - "name": "rewardDenominator", - "type": "u32" + "name": "IASector" }, { - "name": "timeBasedRewardLowerBound", - "type": "u128" - } - ] - } - }, - { - "name": "priceDivergenceGuardRails", - "type": { - "kind": "struct", - "fields": [ + "name": "InvestmentStatusDate" + }, { - "name": "markOraclePercentDivergence", - "type": "u64" + "name": "IsShareClassEligibleForUCITS" }, { - "name": "oracleTwap5minPercentDivergence", - "type": "u64" - } - ] - } - }, - { - "name": "shareClassMetadata", - "type": { - "kind": "struct", - "fields": [ + "name": "LaunchPrice" + }, { - "name": "name", - "type": "string" + "name": "LaunchPriceCurrency" }, { - "name": "symbol", - "type": "string" + "name": "LaunchPriceDate" }, { - "name": "uri", - "type": "string" + "name": "NAVPublicationTime" }, { - "name": "shareClassAsset", - "type": "string" + "name": "PricingMethodology" }, { - "name": "shareClassAssetId", - "type": "pubkey" + "name": "SinglePricingType" }, { - "name": "isin", - "type": "string" + "name": "StandardMinimumRemainingAmount" }, { - "name": "status", - "type": "string" + "name": "StandardMinimumRemainingCategory" }, { - "name": "feeManagement", - "type": "i32" + "name": "StandardMinimumRemainingShares" }, { - "name": "feePerformance", - "type": "i32" + "name": "SwingFactor" }, { - "name": "policyDistribution", - "type": "string" + "name": "TransferAgentName" }, { - "name": "extension", - "type": "string" + "name": "ValuationFrequency" }, { - "name": "launchDate", - "type": "string" + "name": "AskNAV" }, { - "name": "lifecycle", - "type": "string" + "name": "AskNAVDate" }, { - "name": "imageUri", - "type": "string" - } - ] - } - }, - { - "name": "state", - "docs": [ - "Account: State" - ], - "type": { - "kind": "struct", - "fields": [ + "name": "AuMShareClass" + }, { - "name": "admin", - "type": "pubkey" + "name": "AuMShareClassDate" }, { - "name": "whitelistMint", - "type": "pubkey" + "name": "BidNAV" }, { - "name": "discountMint", - "type": "pubkey" + "name": "BidNAVDate" }, { - "name": "signer", - "type": "pubkey" + "name": "DividendAnnouncementDate" }, { - "name": "srmVault", - "type": "pubkey" + "name": "DividendCurrency" }, { - "name": "perpFeeStructure", - "type": { - "defined": { - "name": "feeStructure" - } - } + "name": "DividendExDate" }, { - "name": "spotFeeStructure", - "type": { - "defined": { - "name": "feeStructure" - } - } + "name": "DividendGross" }, { - "name": "oracleGuardRails", - "type": { - "defined": { - "name": "oracleGuardRails" - } - } + "name": "DividendNet" }, { - "name": "numberOfAuthorities", - "type": "u64" + "name": "DividendPaymentDate" }, { - "name": "numberOfSubAccounts", - "type": "u64" + "name": "DividendRecordDate" }, { - "name": "lpCooldownTime", - "type": "u64" + "name": "DynamicCurrency" }, { - "name": "liquidationMarginBufferRatio", - "type": "u32" + "name": "DynamicDataType" }, { - "name": "settlementDuration", - "type": "u16" + "name": "DynamicValue" }, { - "name": "numberOfMarkets", - "type": "u16" + "name": "EqualisationRate" }, { - "name": "numberOfSpotMarkets", - "type": "u16" + "name": "GeneralReferenceDate" }, { - "name": "signerNonce", - "type": "u8" + "name": "IsDividendFinal" }, { - "name": "minPerpAuctionDuration", - "type": "u8" + "name": "NoSShareClass" }, { - "name": "defaultMarketOrderTimeInForce", - "type": "u8" + "name": "NoSShareClassDate" }, { - "name": "defaultSpotAuctionDuration", - "type": "u8" + "name": "SplitRatio" }, { - "name": "exchangeStatus", - "type": "u8" + "name": "SplitReferenceDate" }, { - "name": "liquidationDuration", - "type": "u8" + "name": "TaxDeductedReinvestedAmount" }, { - "name": "initialPctToLiquidate", - "type": "u16" + "name": "TaxDeductedReinvestedAmountReferenceDate" }, { - "name": "maxNumberOfSubAccounts", - "type": "u16" + "name": "TaxableIncomeperDividend" }, { - "name": "maxInitializeUserFee", - "type": "u16" + "name": "TaxableIncomeperShareEU" }, { - "name": "padding", - "type": { - "array": [ - "u8", - 10 - ] - } - } - ] - } - }, - { - "name": "treasury", - "type": { - "kind": "struct", - "fields": [ + "name": "TransactionNAV" + }, { - "name": "manager", - "type": "pubkey" + "name": "TransactionNAVDate" }, { - "name": "fund", - "type": "pubkey" + "name": "ValuationNAV" }, { - "name": "bump", - "type": "u8" - } - ] - } - }, - { - "name": "validityGuardRails", - "type": { - "kind": "struct", - "fields": [ + "name": "ValuationNAVDate" + }, { - "name": "slotsBeforeStaleForAmm", - "type": "i64" + "name": "YieldOneDayGross" }, { - "name": "slotsBeforeStaleForMargin", - "type": "i64" + "name": "YieldOneDayNet" }, { - "name": "confidenceIntervalMaxSize", - "type": "u64" + "name": "YieldSevenDayGross" }, { - "name": "tooVolatileRatio", - "type": "i64" + "name": "YieldSevenDayNet" + }, + { + "name": "YieldThirtyDayGross" + }, + { + "name": "YieldThirtyDayNet" } ] } } ], - "constants": [ + "errors": [ { - "name": "seed", - "type": "string", - "value": "\"anchor\"" + "code": 6000, + "name": "FundNotActive", + "msg": "Fund is not active" + }, + { + "code": 6001, + "name": "InvalidShareClass", + "msg": "Share class not allowed to subscribe" + }, + { + "code": 6002, + "name": "InvalidAssetSubscribe", + "msg": "Asset not allowed to subscribe" + }, + { + "code": 6003, + "name": "InvalidPricingOracle", + "msg": "Invalid oracle for asset price" + }, + { + "code": 6004, + "name": "InvalidAssetsRedeem", + "msg": "Invalid assets in redeem" + }, + { + "code": 6005, + "name": "InvalidTreasuryAccount", + "msg": "Invalid treasury account" } ] }; diff --git a/anchor/tests/glam_crud.spec.ts b/anchor/tests/glam_crud.spec.ts index 5aa3dc65..49922ec6 100644 --- a/anchor/tests/glam_crud.spec.ts +++ b/anchor/tests/glam_crud.spec.ts @@ -1,5 +1,5 @@ import * as anchor from "@coral-xyz/anchor"; -import { BN, Program } from "@coral-xyz/anchor"; +import { BN, Program, IdlTypes } from "@coral-xyz/anchor"; import { PublicKey, Keypair, ComputeBudgetProgram } from "@solana/web3.js"; import { ASSOCIATED_TOKEN_PROGRAM_ID, @@ -7,8 +7,9 @@ import { TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync } from "@solana/spl-token"; -import { Glam } from "../target/types/glam"; +import { Glam, IDL as GlamIDL } from "../target/types/glam"; import { DRIFT_PROGRAM_ID } from "@drift-labs/sdk"; +type FundModel = IdlTypes["FundModel"]; import { DriftClient, @@ -17,6 +18,7 @@ import { getUserStatsAccountPublicKey, getDriftSignerPublicKey } from "@drift-labs/sdk"; +import { getKeypairFromEnvironment } from "@solana-developers/helpers"; describe("glam_crud", () => { // Configure the client to use the local cluster. @@ -41,19 +43,25 @@ describe("glam_crud", () => { [ anchor.utils.bytes.utf8.encode("fund"), manager.publicKey.toBuffer(), - anchor.utils.bytes.utf8.encode(fundName) + Uint8Array.from([1,2,3,4,5,6,7,8]), ], program.programId ); const fundUri = `https://devnet.glam.systems/#/products/${fundPDA.toBase58()}`; + const openfundUri = `https://api.glam.systems/openfund/${fundPDA.toBase58()}`; const [treasuryPDA, treasuryBump] = PublicKey.findProgramAddressSync( [anchor.utils.bytes.utf8.encode("treasury"), fundPDA.toBuffer()], program.programId ); + const [openfundPDA, openfundBump] = PublicKey.findProgramAddressSync( + [anchor.utils.bytes.utf8.encode("openfund"), fundPDA.toBuffer()], + program.programId + ); + const [sharePDA, shareBump] = PublicKey.findProgramAddressSync( - [anchor.utils.bytes.utf8.encode("share-0"), fundPDA.toBuffer()], + [anchor.utils.bytes.utf8.encode("share"), Uint8Array.from([0]), fundPDA.toBuffer()], program.programId ); const shareClassMetadata = { @@ -77,18 +85,31 @@ describe("glam_crud", () => { it("Initialize fund", async () => { try { + const defaultFundModel = { + id: null, + name: null, + symbol: null, + uri: null, + uriOpenfund: null, + isActive: null, + assets: [], + assetsWeights: [], + shareClass: [], + company: null, + manager: null, + created: null, + }; + const fundModel = { + ...defaultFundModel, + created: { key: [1,2,3,4,5,6,7,8], manager: null }, + name: fundName, + }; const txId = await program.methods - .initialize( - fundName, - fundSymbol, - fundUri, - [0, 60, 40], - true, - shareClassMetadata - ) + .initializeV2(fundModel) .accounts({ fund: fundPDA, treasury: treasuryPDA, + openfund: openfundPDA, share: sharePDA, manager: manager.publicKey, tokenProgram: TOKEN_2022_PROGRAM_ID @@ -108,16 +129,16 @@ describe("glam_crud", () => { throw e; } - const fund = await program.account.fund.fetch(fundPDA); - // console.log(fund); - expect(fund.shareClassesLen).toEqual(1); - expect(fund.assetsLen).toEqual(3); - expect(fund.name).toEqual(fundName); - expect(fund.symbol).toEqual(fundSymbol); - expect(fund.uri).toEqual(fundUri); - expect(fund.isActive).toEqual(true); + const fund = await program.account.fundAccount.fetch(fundPDA); + console.log(fund); + // expect(fund.shareClassesLen).toEqual(1); + // expect(fund.assetsLen).toEqual(3); + // expect(fund.name).toEqual(fundName); + // expect(fund.symbol).toEqual(fundSymbol); + // expect(fund.uri).toEqual(fundUri); + // expect(fund.isActive).toEqual(true); }); - +/* it("Update fund", async () => { const newFundName = "Updated fund name"; await program.methods @@ -271,7 +292,6 @@ describe("glam_crud", () => { throw e; } }, 30_000); - */ it("Close fund", async () => { const fund = await program.account.fund.fetchNullable(fundPDA); @@ -289,4 +309,5 @@ describe("glam_crud", () => { const closedAccount = await program.account.fund.fetchNullable(fundPDA); expect(closedAccount).toBeNull(); }); +*/ }); diff --git a/api/app.yaml b/api/app.yaml index 9da88526..b28d8edd 100644 --- a/api/app.yaml +++ b/api/app.yaml @@ -1 +1,4 @@ runtime: nodejs20 + +env_variables: + SOLANA_RPC: "https://api.devnet.solana.com" diff --git a/api/package.json b/api/package.json index 5cb31ec4..cca4be54 100644 --- a/api/package.json +++ b/api/package.json @@ -13,6 +13,7 @@ "dependencies": { "@pythnetwork/pyth-evm-js": "^1.38.0", "@scure/base": "^1.1.6", + "@glam/protocol": "file:../anchor/", "bn.js": "^5.2.1", "canvas": "^2.11.2", "cors": "^2.8.5", diff --git a/api/pnpm-lock.yaml b/api/pnpm-lock.yaml index 2cdbd067..30a4ba39 100644 --- a/api/pnpm-lock.yaml +++ b/api/pnpm-lock.yaml @@ -1,66 +1,1745 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@pythnetwork/pyth-evm-js': - specifier: ^1.38.0 - version: 1.38.0 - '@scure/base': - specifier: ^1.1.6 - version: 1.1.6 - bn.js: - specifier: ^5.2.1 - version: 5.2.1 - canvas: - specifier: ^2.11.2 - version: 2.11.2 - cors: - specifier: ^2.8.5 - version: 2.8.5 - express: - specifier: ^4.19.2 - version: 4.19.2 - -devDependencies: - jest: - specifier: ^29.7.0 - version: 29.7.0 - nodemon: - specifier: ^3.1.0 - version: 3.1.0 - supertest: - specifier: ^6.3.4 - version: 6.3.4 +importers: + + .: + dependencies: + '@pythnetwork/pyth-evm-js': + specifier: ^1.38.0 + version: 1.38.0 + '@scure/base': + specifier: ^1.1.6 + version: 1.1.6 + bn.js: + specifier: ^5.2.1 + version: 5.2.1 + canvas: + specifier: ^2.11.2 + version: 2.11.2 + cors: + specifier: ^2.8.5 + version: 2.8.5 + express: + specifier: ^4.19.2 + version: 4.19.2 + devDependencies: + jest: + specifier: ^29.7.0 + version: 29.7.0 + nodemon: + specifier: ^3.1.0 + version: 3.1.0 + supertest: + specifier: ^6.3.4 + version: 6.3.4 packages: - /@ampproject/remapping@2.3.0: + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.24.2': + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.1': + resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.3': + resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.1': + resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.23.6': + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.3': + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.23.3': + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.0': + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.22.5': + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.22.6': + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.1': + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.23.5': + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.24.1': + resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.2': + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.1': + resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.1': + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.24.1': + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.24.4': + resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.24.0': + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.1': + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.0': + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + + '@pythnetwork/price-service-client@1.9.0': + resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} + + '@pythnetwork/price-service-sdk@1.6.0': + resolution: {integrity: sha512-3mtlxvT/V3uCqmAGFTRAoJ4u0AXGHgIZVBs4uyRxysURTgywJk4yxoD3xPhaUjd5sfRTon546ZZ67L7oyUFMUg==} + + '@pythnetwork/pyth-evm-js@1.38.0': + resolution: {integrity: sha512-jvxtq/0SxS2V2QnXXcDf0JSDkVjL2lShzON4xEL3hQx+svGJkE4mqgSrz+0bfj9WOi9xCGADKgu8I6r+wqPBdA==} + + '@scure/base@1.1.6': + resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.5': + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/node@20.12.3': + resolution: {integrity: sha512-sD+ia2ubTeWrOu+YMF+MTAB7E+O7qsMqAbMfW7DG3K1URwhZ5hN1pLlRVGbf4wDFzSfikL05M17EyorS86jShw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/ws@8.5.10': + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios-retry@3.9.1: + resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + + axios@1.6.8: + resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001605: + resolution: {integrity: sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==} + + canvas@2.11.2: + resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} + engines: {node: '>=6'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decompress-response@4.2.1: + resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} + engines: {node: '>=8'} + + dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.4.724: + resolution: {integrity: sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + formidable@2.1.2: + resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.2: + resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@2.1.0: + resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} + engines: {node: '>=8'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nan@2.19.0: + resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + nodemon@3.1.0: + resolution: {integrity: sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==} + engines: {node: '>=10'} + hasBin: true + + nopt@1.0.10: + resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + hasBin: true + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@3.1.1: + resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + superagent@8.1.2: + resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} + engines: {node: '>=6.4.0 <13 || >=14'} + + supertest@6.3.4: + resolution: {integrity: sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==} + engines: {node: '>=6.4.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + touch@3.1.0: + resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} + hasBin: true + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + ts-log@2.2.5: + resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@babel/code-frame@7.24.2: - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} + '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.2 picocolors: 1.0.0 - dev: true - /@babel/compat-data@7.24.1: - resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/compat-data@7.24.1': {} - /@babel/core@7.24.3: - resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} - engines: {node: '>=6.9.0'} + '@babel/core@7.24.3': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.2 @@ -79,61 +1758,38 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/generator@7.24.1: - resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} - engines: {node: '>=6.9.0'} + '@babel/generator@7.24.1': dependencies: '@babel/types': 7.24.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - dev: true - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.23.6': dependencies: '@babel/compat-data': 7.24.1 '@babel/helper-validator-option': 7.23.5 browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 - dev: true - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-environment-visitor@7.22.20': {} - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} + '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.24.0 '@babel/types': 7.24.0 - dev: true - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} + '@babel/helper-hoist-variables@7.22.5': dependencies: '@babel/types': 7.24.0 - dev: true - /@babel/helper-module-imports@7.24.3: - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} - engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.3': dependencies: '@babel/types': 7.24.0 - dev: true - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 @@ -141,219 +1797,123 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/helper-plugin-utils@7.24.0: - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-plugin-utils@7.24.0': {} - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.22.5': dependencies: '@babel/types': 7.24.0 - dev: true - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.22.6': dependencies: '@babel/types': 7.24.0 - dev: true - /@babel/helper-string-parser@7.24.1: - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-string-parser@7.24.1': {} - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-validator-identifier@7.22.20': {} - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/helper-validator-option@7.23.5': {} - /@babel/helpers@7.24.1: - resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.1': dependencies: '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/highlight@7.24.2: - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} - engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.2': dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 - dev: true - /@babel/parser@7.24.1: - resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/parser@7.24.1': dependencies: '@babel/types': 7.24.0 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.3): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.3): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.3): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.3): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.3): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.3): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-plugin-utils': 7.24.0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.3): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.3): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.3): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.3): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.3)': dependencies: '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/runtime@7.24.4: - resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} - engines: {node: '>=6.9.0'} + '@babel/runtime@7.24.4': dependencies: regenerator-runtime: 0.14.1 - dev: false - /@babel/template@7.24.0: - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} + '@babel/template@7.24.0': dependencies: '@babel/code-frame': 7.24.2 '@babel/parser': 7.24.1 '@babel/types': 7.24.0 - dev: true - /@babel/traverse@7.24.1: - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} - engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.1': dependencies: '@babel/code-frame': 7.24.2 '@babel/generator': 7.24.1 @@ -367,40 +1927,26 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/types@7.24.0: - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} + '@babel/types@7.24.0': dependencies: '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - dev: true - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true + '@bcoe/v8-coverage@0.2.3': {} - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 - dev: true - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true + '@istanbuljs/schema@0.1.3': {} - /@jest/console@29.7.0: - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 '@types/node': 20.12.3 @@ -408,16 +1954,8 @@ packages: jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - dev: true - /@jest/core@29.7.0: - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@jest/core@29.7.0': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -451,38 +1989,26 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - /@jest/environment@29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.12.3 jest-mock: 29.7.0 - dev: true - /@jest/expect-utils@29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 - dev: true - /@jest/expect@29.7.0: - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@29.7.0': dependencies: expect: 29.7.0 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/fake-timers@29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 @@ -490,11 +2016,8 @@ packages: jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 - dev: true - /@jest/globals@29.7.0: - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -502,16 +2025,8 @@ packages: jest-mock: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/reporters@29.7.0: - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 @@ -539,47 +2054,32 @@ packages: v8-to-istanbul: 9.2.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 - dev: true - /@jest/source-map@29.6.3: - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/source-map@29.6.3': dependencies: '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 - dev: true - /@jest/test-result@29.7.0: - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-result@29.7.0': dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - dev: true - /@jest/test-sequencer@29.7.0: - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-sequencer@29.7.0': dependencies: '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 - dev: true - /@jest/transform@29.7.0: - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@29.7.0': dependencies: '@babel/core': 7.24.3 '@jest/types': 29.6.3 @@ -598,11 +2098,8 @@ packages: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color - dev: true - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 @@ -610,41 +2107,25 @@ packages: '@types/node': 20.12.3 '@types/yargs': 17.0.32 chalk: 4.1.2 - dev: true - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - dev: true + '@jridgewell/resolve-uri@3.1.2': {} - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: true + '@jridgewell/set-array@1.2.1': {} - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true + '@jridgewell/sourcemap-codec@1.4.15': {} - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@mapbox/node-pre-gyp@1.0.11: - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true + '@mapbox/node-pre-gyp@1.0.11': dependencies: detect-libc: 2.0.3 https-proxy-agent: 5.0.1 @@ -658,10 +2139,8 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /@pythnetwork/price-service-client@1.9.0: - resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} + '@pythnetwork/price-service-client@1.9.0': dependencies: '@pythnetwork/price-service-sdk': 1.6.0 '@types/ws': 8.5.10 @@ -674,14 +2153,10 @@ packages: - bufferutil - debug - utf-8-validate - dev: false - /@pythnetwork/price-service-sdk@1.6.0: - resolution: {integrity: sha512-3mtlxvT/V3uCqmAGFTRAoJ4u0AXGHgIZVBs4uyRxysURTgywJk4yxoD3xPhaUjd5sfRTon546ZZ67L7oyUFMUg==} - dev: false + '@pythnetwork/price-service-sdk@1.6.0': {} - /@pythnetwork/pyth-evm-js@1.38.0: - resolution: {integrity: sha512-jvxtq/0SxS2V2QnXXcDf0JSDkVjL2lShzON4xEL3hQx+svGJkE4mqgSrz+0bfj9WOi9xCGADKgu8I6r+wqPBdA==} + '@pythnetwork/pyth-evm-js@1.38.0': dependencies: '@pythnetwork/price-service-client': 1.9.0 buffer: 6.0.3 @@ -689,213 +2164,135 @@ packages: - bufferutil - debug - utf-8-validate - dev: false - /@scure/base@1.1.6: - resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} - dev: false + '@scure/base@1.1.6': {} - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true + '@sinclair/typebox@0.27.8': {} - /@sinonjs/commons@3.0.1: - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - dev: true - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.1 - dev: true - /@types/babel__core@7.20.5: - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.24.1 '@babel/types': 7.24.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 - dev: true - /@types/babel__generator@7.6.8: - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.6.8': dependencies: '@babel/types': 7.24.0 - dev: true - /@types/babel__template@7.4.4: - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.24.1 '@babel/types': 7.24.0 - dev: true - /@types/babel__traverse@7.20.5: - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + '@types/babel__traverse@7.20.5': dependencies: '@babel/types': 7.24.0 - dev: true - /@types/graceful-fs@4.1.9: - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + '@types/graceful-fs@4.1.9': dependencies: '@types/node': 20.12.3 - dev: true - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - dev: true + '@types/istanbul-lib-coverage@2.0.6': {} - /@types/istanbul-lib-report@3.0.3: - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 - dev: true - /@types/istanbul-reports@3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 - dev: true - /@types/node@20.12.3: - resolution: {integrity: sha512-sD+ia2ubTeWrOu+YMF+MTAB7E+O7qsMqAbMfW7DG3K1URwhZ5hN1pLlRVGbf4wDFzSfikL05M17EyorS86jShw==} + '@types/node@20.12.3': dependencies: undici-types: 5.26.5 - /@types/stack-utils@2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - dev: true + '@types/stack-utils@2.0.3': {} - /@types/ws@8.5.10: - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + '@types/ws@8.5.10': dependencies: '@types/node': 20.12.3 - dev: false - /@types/yargs-parser@21.0.3: - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - dev: true + '@types/yargs-parser@21.0.3': {} - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 - dev: true - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abbrev@1.1.1: {} - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - dev: false - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@6.0.2: dependencies: debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color - dev: false - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 - dev: true - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - dev: true - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - dev: true - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true + ansi-styles@5.2.0: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false + aproba@2.0.0: {} - /are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} + are-we-there-yet@2.0.0: dependencies: delegates: 1.0.0 readable-stream: 3.6.2 - dev: false - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - dev: true - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: false + array-flatten@1.1.1: {} - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: true + asap@2.0.6: {} - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + asynckit@0.4.0: {} - /axios-retry@3.9.1: - resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + axios-retry@3.9.1: dependencies: '@babel/runtime': 7.24.4 is-retry-allowed: 2.2.0 - dev: false - /axios@1.6.8: - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + axios@1.6.8: dependencies: follow-redirects: 1.15.6 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /babel-jest@29.7.0(@babel/core@7.24.3): - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 + babel-jest@29.7.0(@babel/core@7.24.3): dependencies: '@babel/core': 7.24.3 '@jest/transform': 29.7.0 @@ -907,11 +2304,8 @@ packages: slash: 3.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.24.0 '@istanbuljs/load-nyc-config': 1.1.0 @@ -920,22 +2314,15 @@ packages: test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.24.0 '@babel/types': 7.24.0 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 - dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.3): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.3): dependencies: '@babel/core': 7.24.3 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) @@ -950,38 +2337,22 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) - dev: true - /babel-preset-jest@29.6.3(@babel/core@7.24.3): - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 + babel-preset-jest@29.6.3(@babel/core@7.24.3): dependencies: '@babel/core': 7.24.3 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.3) - dev: true - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false + base64-js@1.5.1: {} - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - dev: true + binary-extensions@2.3.0: {} - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: false + bn.js@5.2.1: {} - /body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -997,57 +2368,37 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + braces@3.0.2: dependencies: fill-range: 7.0.1 - dev: true - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.23.0: dependencies: caniuse-lite: 1.0.30001605 electron-to-chromium: 1.4.724 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: true - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + bser@2.1.1: dependencies: node-int64: 0.4.0 - dev: true - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true + buffer-from@1.1.2: {} - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: false + bytes@3.1.2: {} - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -1055,29 +2406,15 @@ packages: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + callsites@3.1.0: {} - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true + camelcase@5.3.1: {} - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true + camelcase@6.3.0: {} - /caniuse-lite@1.0.30001605: - resolution: {integrity: sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==} - dev: true + caniuse-lite@1.0.30001605: {} - /canvas@2.11.2: - resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} - engines: {node: '>=6'} - requiresBuild: true + canvas@2.11.2: dependencies: '@mapbox/node-pre-gyp': 1.0.11 nan: 2.19.0 @@ -1085,33 +2422,21 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true + char-regex@1.0.2: {} - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -1122,124 +2447,67 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: true - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false + chownr@2.0.0: {} - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - dev: true + ci-info@3.9.0: {} - /cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - dev: true + cjs-module-lexer@1.2.3: {} - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true + co@4.6.0: {} - /collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - dev: true + collect-v8-coverage@1.0.2: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - dev: true - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - dev: true - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true + color-name@1.1.4: {} - /color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: false + color-support@1.1.3: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - /component-emitter@1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} - dev: true + component-emitter@1.3.1: {} - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-map@0.0.1: {} - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false + console-control-strings@1.1.0: {} - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 - dev: false - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: false + content-type@1.0.5: {} - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true + convert-source-map@2.0.0: {} - /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: false + cookie-signature@1.0.6: {} - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - dev: false + cookie@0.6.0: {} - /cookiejar@2.1.4: - resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} - dev: true + cookiejar@2.1.4: {} - /cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} + cors@2.8.5: dependencies: object-assign: 4.1.1 vary: 1.1.2 - dev: false - /create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true + create-jest@29.7.0: dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 @@ -1253,179 +2521,88 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@2.6.9: dependencies: ms: 2.0.0 - dev: false - /debug@4.3.4(supports-color@5.5.0): - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.4(supports-color@5.5.0): dependencies: ms: 2.1.2 supports-color: 5.5.0 - /decompress-response@4.2.1: - resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} - engines: {node: '>=8'} + decompress-response@4.2.1: dependencies: mimic-response: 2.1.0 - dev: false - /dedent@1.5.1: - resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - dev: true + dedent@1.5.1: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: true + deepmerge@4.3.1: {} - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + delayed-stream@1.0.0: {} - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false + delegates@1.0.0: {} - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: false + depd@2.0.0: {} - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: false + destroy@1.2.0: {} - /detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - dev: false + detect-libc@2.0.3: {} - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true + detect-newline@3.1.0: {} - /dezalgo@1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dezalgo@1.0.4: dependencies: asap: 2.0.6 wrappy: 1.0.2 - dev: true - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + diff-sequences@29.6.3: {} - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: false + ee-first@1.1.1: {} - /electron-to-chromium@1.4.724: - resolution: {integrity: sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA==} - dev: true + electron-to-chromium@1.4.724: {} - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true + emittery@0.13.1: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: false + encodeurl@1.0.2: {} - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + es-errors@1.3.0: {} - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - dev: true + escalade@3.1.2: {} - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false + escape-html@1.0.3: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true + escape-string-regexp@1.0.5: {} - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true + escape-string-regexp@2.0.0: {} - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true + esprima@4.0.1: {} - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: false + etag@1.8.1: {} - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + execa@5.1.1: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -1436,27 +2613,18 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true + exit@0.1.2: {} - /expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 - dev: true - /express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} - engines: {node: '>= 0.10.0'} + express@4.19.2: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -1491,32 +2659,20 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: false - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true + fast-json-stable-stringify@2.1.0: {} - /fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - dev: true + fast-safe-stringify@2.1.1: {} - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fb-watchman@2.0.2: dependencies: bser: 2.1.1 - dev: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - dev: true - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} + finalhandler@1.2.0: dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -1527,77 +2683,43 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true - /follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false + follow-redirects@1.15.6: {} - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - /formidable@2.1.2: - resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} + formidable@2.1.2: dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 qs: 6.11.0 - dev: true - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: false + forwarded@0.2.0: {} - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: false + fresh@0.5.2: {} - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 - dev: false - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs.realpath@1.0.0: {} - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} + gauge@3.0.2: dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -1608,21 +2730,12 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wide-align: 1.1.5 - dev: false - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true + get-caller-file@2.0.5: {} - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 @@ -1630,25 +2743,15 @@ packages: has-symbols: 1.0.3 hasown: 2.0.2 - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true + get-package-type@0.1.0: {} - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true + get-stream@6.0.1: {} - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - dev: true - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -1657,203 +2760,112 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true + globals@11.12.0: {} - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true + graceful-fs@4.2.11: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true + has-flag@4.0.0: {} - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} + has-proto@1.0.3: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-symbols@1.0.3: {} - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false + has-unicode@2.0.1: {} - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + hasown@2.0.2: dependencies: function-bind: 1.1.2 - /hexoid@1.0.0: - resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} - engines: {node: '>=8'} - dev: true + hexoid@1.0.0: {} - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + html-escaper@2.0.2: {} - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} + http-errors@2.0.0: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 - dev: false - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color - dev: false - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true + human-signals@2.1.0: {} - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - dev: false - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false + ieee754@1.2.1: {} - /ignore-by-default@1.0.1: - resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} - dev: true + ignore-by-default@1.0.1: {} - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true + import-local@3.1.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true + imurmurhash@0.1.4: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: false + ipaddr.js@1.9.1: {} - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true + is-arrayish@0.2.1: {} - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - dev: true - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.13.1: dependencies: hasown: 2.0.2 - dev: true - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true + is-extglob@2.1.1: {} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true + is-generator-fn@2.1.0: {} - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - dev: true - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true + is-number@7.0.0: {} - /is-retry-allowed@2.2.0: - resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} - engines: {node: '>=10'} - dev: false + is-retry-allowed@2.2.0: {} - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true + is-stream@2.0.1: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true + isexe@2.0.0: {} - /isomorphic-ws@4.0.1(ws@8.16.0): - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' + isomorphic-ws@4.0.1(ws@8.16.0): dependencies: ws: 8.16.0 - dev: false - /istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - dev: true + istanbul-lib-coverage@3.2.2: {} - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} + istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.24.3 '@babel/parser': 7.24.1 @@ -1862,11 +2874,8 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-instrument@6.0.2: - resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} - engines: {node: '>=10'} + istanbul-lib-instrument@6.0.2: dependencies: '@babel/core': 7.24.3 '@babel/parser': 7.24.1 @@ -1875,48 +2884,33 @@ packages: semver: 7.6.0 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} + istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - dev: true - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} + istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.4(supports-color@5.5.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - dev: true - /jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-changed-files@29.7.0: dependencies: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 - dev: true - /jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-circus@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -1941,17 +2935,8 @@ packages: transitivePeerDependencies: - babel-plugin-macros - supports-color - dev: true - /jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest-cli@29.7.0: dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 @@ -1969,19 +2954,8 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - /jest-config@29.7.0(@types/node@20.12.3): - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true + jest-config@29.7.0(@types/node@20.12.3): dependencies: '@babel/core': 7.24.3 '@jest/test-sequencer': 29.7.0 @@ -2009,39 +2983,27 @@ packages: transitivePeerDependencies: - babel-plugin-macros - supports-color - dev: true - /jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-diff@29.7.0: dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 - dev: true - /jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-each@29.7.0: dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 jest-util: 29.7.0 pretty-format: 29.7.0 - dev: true - /jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -2049,16 +3011,10 @@ packages: '@types/node': 20.12.3 jest-mock: 29.7.0 jest-util: 29.7.0 - dev: true - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + jest-get-type@29.6.3: {} - /jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 @@ -2073,29 +3029,20 @@ packages: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 - dev: true - /jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-leak-detector@29.7.0: dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.24.2 '@jest/types': 29.6.3 @@ -2106,47 +3053,27 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 - dev: true - /jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.12.3 jest-util: 29.7.0 - dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): dependencies: jest-resolve: 29.7.0 - dev: true - /jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + jest-regex-util@29.6.3: {} - /jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve-dependencies@29.7.0: dependencies: jest-regex-util: 29.6.3 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve@29.7.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -2157,11 +3084,8 @@ packages: resolve: 1.22.8 resolve.exports: 2.0.2 slash: 3.0.0 - dev: true - /jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runner@29.7.0: dependencies: '@jest/console': 29.7.0 '@jest/environment': 29.7.0 @@ -2186,11 +3110,8 @@ packages: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - dev: true - /jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runtime@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -2216,11 +3137,8 @@ packages: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - dev: true - /jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-snapshot@29.7.0: dependencies: '@babel/core': 7.24.3 '@babel/generator': 7.24.1 @@ -2244,11 +3162,8 @@ packages: semver: 7.6.0 transitivePeerDependencies: - supports-color - dev: true - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.12.3 @@ -2256,11 +3171,8 @@ packages: ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: true - /jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -2268,11 +3180,8 @@ packages: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 - dev: true - /jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-watcher@29.7.0: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 @@ -2282,27 +3191,15 @@ packages: emittery: 0.13.1 jest-util: 29.7.0 string-length: 4.0.2 - dev: true - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@29.7.0: dependencies: '@types/node': 20.12.3 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - /jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest@29.7.0: dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 @@ -2313,225 +3210,115 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true + js-tokens@4.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true + jsesc@2.5.2: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true + json-parse-even-better-errors@2.3.1: {} - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true + json5@2.2.3: {} - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true + kleur@3.0.3: {} - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true + leven@3.1.0: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true + lines-and-columns@1.2.4: {} - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - dev: true - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - dev: true - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + make-dir@3.1.0: dependencies: semver: 6.3.1 - dev: false - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + make-dir@4.0.0: dependencies: semver: 7.6.0 - dev: true - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + makeerror@1.0.12: dependencies: tmpl: 1.0.5 - dev: true - /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - dev: false + media-typer@0.3.0: {} - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - dev: false + merge-descriptors@1.0.1: {} - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true + merge-stream@2.0.0: {} - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} + methods@1.1.2: {} - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: false + mime@1.6.0: {} - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: true + mime@2.6.0: {} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true + mimic-fn@2.1.0: {} - /mimic-response@2.1.0: - resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} - engines: {node: '>=8'} - dev: false + mimic-response@2.1.0: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + minipass@3.3.6: dependencies: yallist: 4.0.0 - dev: false - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: false + minipass@5.0.0: {} - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 - dev: false - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false + mkdirp@1.0.4: {} - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false + ms@2.0.0: {} - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.2: {} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false + ms@2.1.3: {} - /nan@2.19.0: - resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} - dev: false + nan@2.19.0: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false + negotiator@0.6.3: {} - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - dev: false - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true + node-int64@0.4.0: {} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true + node-releases@2.0.14: {} - /nodemon@3.1.0: - resolution: {integrity: sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==} - engines: {node: '>=10'} - hasBin: true + nodemon@3.1.0: dependencies: chokidar: 3.6.0 debug: 4.3.4(supports-color@5.5.0) @@ -2543,297 +3330,167 @@ packages: supports-color: 5.5.0 touch: 3.1.0 undefsafe: 2.0.5 - dev: true - /nopt@1.0.10: - resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} - hasBin: true + nopt@1.0.10: dependencies: abbrev: 1.1.1 - dev: true - /nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true + nopt@5.0.0: dependencies: abbrev: 1.1.1 - dev: false - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true + normalize-path@3.0.0: {} - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - dev: true - /npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 console-control-strings: 1.1.0 gauge: 3.0.2 set-blocking: 2.0.0 - dev: false - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false + object-assign@4.1.1: {} - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.1: {} - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 - dev: false - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - dev: true - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - dev: true - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - dev: true - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - dev: true - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true + p-try@2.2.0: {} - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: false + parseurl@1.3.3: {} - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + path-exists@4.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + path-is-absolute@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true + path-key@3.1.1: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true + path-parse@1.0.7: {} - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - dev: false + path-to-regexp@0.1.7: {} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true + picocolors@1.0.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true + picomatch@2.3.1: {} - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true + pirates@4.0.6: {} - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: true - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - dev: false - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + proxy-from-env@1.1.0: {} - /pstree.remy@1.1.8: - resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - dev: true + pstree.remy@1.1.8: {} - /pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - dev: true + pure-rand@6.1.0: {} - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} + qs@6.11.0: dependencies: side-channel: 1.0.6 - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: false + range-parser@1.2.1: {} - /raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} + raw-body@2.5.2: dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: false - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true + react-is@18.2.0: {} - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - dev: true - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: false + regenerator-runtime@0.14.1: {} - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true + require-directory@2.1.1: {} - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 - dev: true - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + resolve-from@5.0.0: {} - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: true + resolve.exports@2.0.2: {} - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + resolve@1.22.8: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - dev: false - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false + safe-buffer@5.2.1: {} - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false + safer-buffer@2.1.2: {} - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true + semver@6.3.1: {} - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.0: dependencies: lru-cache: 6.0.0 - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} + send@0.18.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -2850,11 +3507,8 @@ packages: statuses: 2.0.1 transitivePeerDependencies: - supports-color - dev: false - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} + serve-static@1.15.0: dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -2862,15 +3516,10 @@ packages: send: 0.18.0 transitivePeerDependencies: - supports-color - dev: false - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false + set-blocking@2.0.0: {} - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -2879,136 +3528,80 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.2 - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: false + setprototypeof@1.2.0: {} - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - dev: true - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true + shebang-regex@3.0.0: {} - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@3.0.7: {} - /simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false + simple-concat@1.0.1: {} - /simple-get@3.1.1: - resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + simple-get@3.1.1: dependencies: decompress-response: 4.2.1 once: 1.4.0 simple-concat: 1.0.1 - dev: false - /simple-update-notifier@2.0.0: - resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} - engines: {node: '>=10'} + simple-update-notifier@2.0.0: dependencies: semver: 7.6.0 - dev: true - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true + sisteransi@1.0.5: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + slash@3.0.0: {} - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true + source-map@0.6.1: {} - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true + sprintf-js@1.0.3: {} - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - dev: true - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: false + statuses@2.0.1: {} - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} + string-length@4.0.2: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - dev: true - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true + strip-bom@4.0.0: {} - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true + strip-final-newline@2.0.0: {} - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-json-comments@3.1.1: {} - /superagent@8.1.2: - resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} - engines: {node: '>=6.4.0 <13 || >=14'} + superagent@8.1.2: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 @@ -3022,46 +3615,29 @@ packages: semver: 7.6.0 transitivePeerDependencies: - supports-color - dev: true - /supertest@6.3.4: - resolution: {integrity: sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==} - engines: {node: '>=6.4.0'} + supertest@6.3.4: dependencies: methods: 1.1.2 superagent: 8.1.2 transitivePeerDependencies: - supports-color - dev: true - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - dev: true - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true + supports-preserve-symlinks-flag@1.0.0: {} - /tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} + tar@6.2.1: dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -3069,201 +3645,107 @@ packages: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 - dev: false - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true + tmpl@1.0.5: {} - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - dev: true - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: false + toidentifier@1.0.1: {} - /touch@3.1.0: - resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} - hasBin: true + touch@3.1.0: dependencies: nopt: 1.0.10 - dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false + tr46@0.0.3: {} - /ts-log@2.2.5: - resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} - dev: false + ts-log@2.2.5: {} - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true + type-detect@4.0.8: {} - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true + type-fest@0.21.3: {} - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - dev: false - /undefsafe@2.0.5: - resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - dev: true + undefsafe@2.0.5: {} - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@5.26.5: {} - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: false + unpipe@1.0.0: {} - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.13(browserslist@4.23.0): dependencies: browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.0.0 - dev: true - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false + util-deprecate@1.0.2: {} - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: false + utils-merge@1.0.1: {} - /v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} - engines: {node: '>=10.12.0'} + v8-to-istanbul@9.2.0: dependencies: '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - dev: true - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: false + vary@1.1.2: {} - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + walker@1.0.8: dependencies: makeerror: 1.0.12 - dev: true - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false + webidl-conversions@3.0.1: {} - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - dev: true - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + wide-align@1.1.5: dependencies: string-width: 4.2.3 - dev: false - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrappy@1.0.2: {} - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true - /ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false + ws@8.16.0: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true + y18n@5.0.8: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true + yallist@3.1.1: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@4.0.0: {} - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true + yargs-parser@21.1.1: {} - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.2 @@ -3272,9 +3754,5 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true + yocto-queue@0.1.0: {} diff --git a/api/server.js b/api/server.js index 935119e5..b445de4f 100644 --- a/api/server.js +++ b/api/server.js @@ -5,7 +5,8 @@ const { priceHistory, fundPerformance } = require("./prices"); const cors = require("cors"); const pyth = require("@pythnetwork/pyth-evm-js"); -BASE_URL = "https://api.glam.systems"; +const BASE_URL = "https://api.glam.systems"; +const SOLANA_RPC = process.env.SOLANA_RPC || "http://localhost:8899"; const app = express(); app.use(express.static("public")); diff --git a/package.json b/package.json index ac8dd843..c259e90f 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@carbon/react": "^1.55.0", "@carbon/styles": "^1.55.0", "@carbon/type": "^11.26.0", - "@coral-xyz/anchor": "^0.30.0", + "@coral-xyz/anchor": "^0.29.0", "@drift-labs/sdk": "2.71.0-beta.4", "@hookform/resolvers": "^3.3.4", "@ibm/plex": "^6.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05986db4..d3a6711d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: ^11.26.0 version: 11.26.0 '@coral-xyz/anchor': - specifier: ^0.30.0 - version: 0.30.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + specifier: ^0.29.0 + version: 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@drift-labs/sdk': specifier: 2.71.0-beta.4 version: 2.71.0-beta.4(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) @@ -1116,8 +1116,8 @@ packages: resolution: {integrity: sha512-xreUcOFF8+IQKWOBUrDKJbIw2ftpRVybFlEPVrbSlOBCbreCWrQ5754Gt9cHIcuBDAzearCDiBqzsGQdNgPJiw==} engines: {node: '>=11'} - '@coral-xyz/anchor@0.30.0': - resolution: {integrity: sha512-qreDh5ztiRHVnCbJ+RS70NJ6aSTPBYDAgFeQ7Z5QvaT5DcDIhNyt4onOciVz2ieIE1XWePOJDDu9SbNvPGBkvQ==} + '@coral-xyz/anchor@0.29.0': + resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} engines: {node: '>=11'} '@coral-xyz/borsh@0.28.0': @@ -1126,8 +1126,8 @@ packages: peerDependencies: '@solana/web3.js': '>=1.73.5' - '@coral-xyz/borsh@0.30.0': - resolution: {integrity: sha512-OrcV+7N10cChhgDRUxM4iEIuwxUHHs52XD85R8cFCUqE0vbLYrcoPPPs+VF6kZ9DhdJGVW2I6DHJOp5TykyZog==} + '@coral-xyz/borsh@0.29.0': + resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} engines: {node: '>=10'} peerDependencies: '@solana/web3.js': '>=1.73.5' @@ -8935,9 +8935,9 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.30.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.30.0(@solana/web3.js@1.91.7(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.91.7(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@noble/hashes': 1.4.0 '@solana/web3.js': 1.91.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) bn.js: 5.2.1 @@ -8962,7 +8962,7 @@ snapshots: bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.30.0(@solana/web3.js@1.91.7(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.91.7(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@solana/web3.js': 1.91.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) bn.js: 5.2.1 diff --git a/web/src/app/glam/glam-data-access.tsx b/web/src/app/glam/glam-data-access.tsx index cd3589d2..a1599a39 100644 --- a/web/src/app/glam/glam-data-access.tsx +++ b/web/src/app/glam/glam-data-access.tsx @@ -40,7 +40,7 @@ export function useGlamProgram() { () => getGlamProgramId(cluster.network as Cluster), [cluster] ); - const program = new anchor.Program(GlamIDL, provider); + const program = new anchor.Program(GlamIDL, programId, provider); const accounts = useQuery({ queryKey: ["glam", "all", { cluster }],