From 1b4b399d1d1a881f20d32f0f546c5108343a4dd3 Mon Sep 17 00:00:00 2001 From: Leechael Yim Date: Fri, 20 Mar 2026 11:53:52 +0800 Subject: [PATCH 1/7] feat(kms): enhance onboard page with site name, chain info, and k256 pubkey - Add configurable site_name to core config, displayed as page title and heading on the onboard page for operator visibility. - Read eth_rpc_url and kms_contract_address from auth-api instead of duplicating in onboard config. Display chain info in a separate card. - Return k256_pubkey in OnboardResponse so it can be compared with the on-chain kmsInfo.k256Pubkey after onboarding. --- kms/auth-eth/src/server.ts | 1 + kms/kms.toml | 1 + kms/rpc/proto/kms_rpc.proto | 8 +++++ kms/src/config.rs | 2 ++ kms/src/main_service/upgrade_authority.rs | 10 ++++++ kms/src/onboard_service.rs | 18 ++++++++++- kms/src/www/onboard.html | 37 +++++++++++++++++++++-- 7 files changed, 74 insertions(+), 3 deletions(-) diff --git a/kms/auth-eth/src/server.ts b/kms/auth-eth/src/server.ts index 16f8cbc87..d2db629b9 100644 --- a/kms/auth-eth/src/server.ts +++ b/kms/auth-eth/src/server.ts @@ -59,6 +59,7 @@ export async function build(): Promise { return { status: 'ok', kmsContractAddr: kmsContractAddr, + ethRpcUrl: rpcUrl, gatewayAppId: batch[0], chainId: batch[1], appAuthImplementation: batch[2], // NOTE: for backward compatibility diff --git a/kms/kms.toml b/kms/kms.toml index bd5834cd6..002c754f6 100644 --- a/kms/kms.toml +++ b/kms/kms.toml @@ -26,6 +26,7 @@ mandatory = false cert_dir = "/etc/kms/certs" subject_postfix = ".dstack" admin_token_hash = "" +site_name = "" # Whether trusted RPCs require the KMS to first attest itself to its own # auth API. Defaults to true (strict). Set to false ONLY when running KMS # outside a TEE (e.g. local dev/testing) where the local guest agent socket diff --git a/kms/rpc/proto/kms_rpc.proto b/kms/rpc/proto/kms_rpc.proto index adaaa5f52..eb56f7307 100644 --- a/kms/rpc/proto/kms_rpc.proto +++ b/kms/rpc/proto/kms_rpc.proto @@ -131,6 +131,8 @@ message OnboardRequest { } message OnboardResponse { + // k256 public key (secp256k1) inherited from source KMS + bytes k256_pubkey = 1; } // Attestation info needed for on-chain KMS authorization. @@ -143,6 +145,12 @@ message AttestationInfoResponse { bytes os_image_hash = 3; // Attestation mode (e.g. "dstack-tdx", "dstack-gcp-tdx") string attestation_mode = 4; + // Custom site name for display + string site_name = 5; + // Ethereum RPC URL from auth API + string eth_rpc_url = 6; + // KMS contract address from auth API + string kms_contract_address = 7; } // The Onboard RPC service. diff --git a/kms/src/config.rs b/kms/src/config.rs index 2bf9bba28..c645655a3 100644 --- a/kms/src/config.rs +++ b/kms/src/config.rs @@ -40,6 +40,8 @@ pub(crate) struct KmsConfig { pub image: ImageConfig, #[serde(with = "serde_human_bytes")] pub admin_token_hash: Vec, + #[serde(default)] + pub site_name: String, /// Whether trusted RPCs require the KMS to first attest itself to its /// own auth API. Defaults to `true` (strict). Set `false` only for local /// dev/testing where the KMS runs outside a TEE and cannot reach a guest diff --git a/kms/src/main_service/upgrade_authority.rs b/kms/src/main_service/upgrade_authority.rs index 8088422a0..9e1649980 100644 --- a/kms/src/main_service/upgrade_authority.rs +++ b/kms/src/main_service/upgrade_authority.rs @@ -99,6 +99,8 @@ pub(crate) struct BootResponse { pub(crate) struct AuthApiInfoResponse { pub status: String, pub kms_contract_addr: String, + #[serde(default)] + pub eth_rpc_url: String, pub gateway_app_id: String, pub chain_id: u64, pub app_implementation: String, @@ -110,6 +112,7 @@ pub(crate) struct GetInfoResponse { pub is_dev: bool, pub gateway_app_id: Option, pub kms_contract_address: Option, + pub eth_rpc_url: Option, pub chain_id: Option, pub app_implementation: Option, } @@ -161,15 +164,22 @@ impl AuthApi { AuthApi::Dev { dev } => Ok(GetInfoResponse { is_dev: true, kms_contract_address: None, + eth_rpc_url: None, gateway_app_id: Some(dev.gateway_app_id.clone()), chain_id: None, app_implementation: None, }), AuthApi::Webhook { webhook } => { let info: AuthApiInfoResponse = http_get(&webhook.url).await?; + let eth_rpc_url = if info.eth_rpc_url.is_empty() { + None + } else { + Some(info.eth_rpc_url.clone()) + }; Ok(GetInfoResponse { is_dev: false, kms_contract_address: Some(info.kms_contract_addr.clone()), + eth_rpc_url, chain_id: Some(info.chain_id), gateway_app_id: Some(info.gateway_app_id.clone()), app_implementation: Some(info.app_implementation.clone()), diff --git a/kms/src/onboard_service.rs b/kms/src/onboard_service.rs index e34e12d1d..2ab7051db 100644 --- a/kms/src/onboard_service.rs +++ b/kms/src/onboard_service.rs @@ -96,9 +96,10 @@ impl OnboardRpc for OnboardHandler { ) .await .context("Failed to onboard")?; + let k256_pubkey = keys.k256_key.verifying_key().to_sec1_bytes().to_vec(); keys.store(&self.state.config) .context("Failed to store keys")?; - Ok(OnboardResponse {}) + Ok(OnboardResponse { k256_pubkey }) } async fn get_attestation_info(self) -> Result { @@ -136,11 +137,26 @@ impl OnboardRpc for OnboardHandler { .decode_app_info_ex(false, &info.vm_config) .context("Failed to decode app info")?; + let (eth_rpc_url, kms_contract_address) = match self.state.config.auth_api.get_info().await + { + Ok(info) => ( + info.eth_rpc_url.unwrap_or_default(), + info.kms_contract_address.unwrap_or_default(), + ), + Err(err) => { + tracing::warn!("failed to get auth api info: {err}"); + (String::new(), String::new()) + } + }; + Ok(AttestationInfoResponse { device_id: app_info.device_id, mr_aggregated: app_info.mr_aggregated.to_vec(), os_image_hash: app_info.os_image_hash, attestation_mode, + site_name: self.state.config.site_name.clone(), + eth_rpc_url, + kms_contract_address, }) } diff --git a/kms/src/www/onboard.html b/kms/src/www/onboard.html index bca53d2ac..6f7b6e010 100644 --- a/kms/src/www/onboard.html +++ b/kms/src/www/onboard.html @@ -145,6 +145,19 @@ color: #333; } + .chain-info { + background-color: #f8f4e8; + border: 1px solid #ddc; + border-radius: 4px; + padding: 15px; + margin-bottom: 20px; + } + + .chain-info h3 { + margin-top: 0; + color: #444; + } + .loading { color: #888; font-style: italic; @@ -154,7 +167,7 @@
-

dstack KMS Setup

+

{{ siteName || 'dstack KMS Setup' }}

Loading attestation info...
Attestation info: {{ attestationError }}
@@ -178,6 +191,18 @@

Attestation Info (for on-chain registration)

+
+

Chain Info

+
+ ETH RPC URL: + {{ attestationInfo.eth_rpc_url }} +
+
+ KMS Contract: + {{ attestationInfo.kms_contract_address }} +
+
+
@@ -261,7 +286,8 @@

Onboard from an Existing KMS Instance

setupFinished: false, attestationInfo: null, attestationLoading: true, - attestationError: '' + attestationError: '', + siteName: '' } }, async mounted() { @@ -271,6 +297,10 @@

Onboard from an Existing KMS Instance

this.attestationError = data.error; } else { this.attestationInfo = data; + if (data.site_name) { + this.siteName = data.site_name; + document.title = data.site_name; + } } } catch (err) { this.attestationError = err.message; @@ -310,6 +340,9 @@

Onboard from an Existing KMS Instance

if (data.error) throw new Error(data.error); this.success = 'Onboarding successful!'; + this.result = JSON.stringify({ + k256Pubkey: '0x' + data.k256_pubkey, + }, null, 2); this.error = ''; } catch (err) { this.error = err.message; From 01d206e4d08b716976f5df3b32c257439dd39ff1 Mon Sep 17 00:00:00 2001 From: Leechael Yim Date: Fri, 20 Mar 2026 11:53:58 +0800 Subject: [PATCH 2/7] feat(auth-mock): add configurable authorization policies Support MOCK_POLICY env var to control boot authorization behavior: - allow-all (default): all requests allowed - deny-kms: reject KMS self-authorization - deny-app: reject app authorization - deny-all: reject all requests - allowlist-device: only allow specified MOCK_ALLOWED_DEVICE_IDS - allowlist-mr: only allow specified MOCK_ALLOWED_MR_AGGREGATED --- kms/auth-mock/Dockerfile | 17 ++++++++++ kms/auth-mock/bun.lock | 5 +-- kms/auth-mock/index.ts | 69 ++++++++++++++++++++++++++++++++++++---- 3 files changed, 82 insertions(+), 9 deletions(-) create mode 100644 kms/auth-mock/Dockerfile diff --git a/kms/auth-mock/Dockerfile b/kms/auth-mock/Dockerfile new file mode 100644 index 000000000..095ff1b29 --- /dev/null +++ b/kms/auth-mock/Dockerfile @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: © 2025 Phala Network +# +# SPDX-License-Identifier: Apache-2.0 + +FROM oven/bun:1-alpine +WORKDIR /app + +ARG DSTACK_REV +ARG DSTACK_BRANCH=master + +RUN apk add --no-cache git +RUN git clone --branch ${DSTACK_BRANCH} https://github.com/Dstack-TEE/dstack.git && \ + cd dstack && \ + git checkout ${DSTACK_REV} +WORKDIR /app/dstack/kms/auth-mock +RUN bun install --frozen-lockfile +CMD ["bun", "index.ts"] diff --git a/kms/auth-mock/bun.lock b/kms/auth-mock/bun.lock index 7d66b822a..b525e9fbd 100644 --- a/kms/auth-mock/bun.lock +++ b/kms/auth-mock/bun.lock @@ -1,11 +1,12 @@ { "lockfileVersion": 1, + "configVersion": 0, "workspaces": { "": { "name": "auth-mock", "dependencies": { "@hono/zod-validator": "0.2.2", - "hono": "4.8.5", + "hono": "4.12.7", "zod": "3.25.76", }, "devDependencies": { @@ -212,7 +213,7 @@ "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "hono": ["hono@4.8.5", "", {}, "sha512-Up2cQbtNz1s111qpnnECdTGqSIUIhZJMLikdKkshebQSEBcoUKq6XJayLGqSZWidiH0zfHRCJqFu062Mz5UuRA=="], + "hono": ["hono@4.12.7", "", {}, "sha512-jq9l1DM0zVIvsm3lv9Nw9nlJnMNPOcAtsbsgiUhWcFzPE99Gvo6yRTlszSLLYacMeQ6quHD6hMfId8crVHvexw=="], "human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], diff --git a/kms/auth-mock/index.ts b/kms/auth-mock/index.ts index cef8becb5..3636650de 100644 --- a/kms/auth-mock/index.ts +++ b/kms/auth-mock/index.ts @@ -30,6 +30,29 @@ const BootResponseSchema = z.object({ type BootInfo = z.infer; type BootResponse = z.infer; +// authorization policy - configurable via environment variables +// MOCK_POLICY: "allow-all" (default), "deny-kms", "deny-app", "deny-all", +// "allowlist-device", "allowlist-mr" +// MOCK_ALLOWED_DEVICE_IDS: comma-separated device IDs (for allowlist-device policy) +// MOCK_ALLOWED_MR_AGGREGATED: comma-separated MR aggregated values (for allowlist-mr policy) + +type MockPolicy = 'allow-all' | 'deny-kms' | 'deny-app' | 'deny-all' | 'allowlist-device' | 'allowlist-mr'; + +function getPolicy(): MockPolicy { + const policy = process.env.MOCK_POLICY || 'allow-all'; + const valid: MockPolicy[] = ['allow-all', 'deny-kms', 'deny-app', 'deny-all', 'allowlist-device', 'allowlist-mr']; + if (!valid.includes(policy as MockPolicy)) { + console.warn(`unknown MOCK_POLICY "${policy}", falling back to allow-all`); + return 'allow-all'; + } + return policy as MockPolicy; +} + +function parseList(envVar: string): Set { + const raw = process.env[envVar] || ''; + return new Set(raw.split(',').map(s => s.trim().toLowerCase()).filter(Boolean)); +} + // mock backend class - no blockchain interaction class MockBackend { private mockGatewayAppId: string; @@ -44,14 +67,45 @@ class MockBackend { } async checkBoot(bootInfo: BootInfo, isKms: boolean): Promise { - // always return success for mock backend - const reason = isKms ? 'mock KMS always allowed' : 'mock app always allowed'; - - return { + const policy = getPolicy(); + const deny = (reason: string): BootResponse => ({ + isAllowed: false, + reason, + gatewayAppId: '', + }); + const allow = (reason: string): BootResponse => ({ isAllowed: true, reason, gatewayAppId: this.mockGatewayAppId, - }; + }); + + switch (policy) { + case 'deny-all': + return deny(`mock policy: deny-all`); + case 'deny-kms': + if (isKms) return deny(`mock policy: deny-kms`); + return allow('mock app allowed (deny-kms policy)'); + case 'deny-app': + if (!isKms) return deny(`mock policy: deny-app`); + return allow('mock KMS allowed (deny-app policy)'); + case 'allowlist-device': { + const allowed = parseList('MOCK_ALLOWED_DEVICE_IDS'); + const deviceId = bootInfo.deviceId.toLowerCase().replace(/^0x/, ''); + if (allowed.size === 0) return deny('mock policy: allowlist-device with empty list'); + if (!allowed.has(deviceId)) return deny(`mock policy: device ${bootInfo.deviceId} not in allowlist`); + return allow(`mock policy: device ${bootInfo.deviceId} allowed`); + } + case 'allowlist-mr': { + const allowed = parseList('MOCK_ALLOWED_MR_AGGREGATED'); + const mr = bootInfo.mrAggregated.toLowerCase().replace(/^0x/, ''); + if (allowed.size === 0) return deny('mock policy: allowlist-mr with empty list'); + if (!allowed.has(mr)) return deny(`mock policy: mrAggregated ${bootInfo.mrAggregated} not in allowlist`); + return allow(`mock policy: mrAggregated ${bootInfo.mrAggregated} allowed`); + } + case 'allow-all': + default: + return allow(isKms ? 'mock KMS always allowed' : 'mock app always allowed'); + } } async getGatewayAppId(): Promise { @@ -85,6 +139,7 @@ app.get('/', async (c) => { return c.json({ status: 'ok', kmsContractAddr: process.env.KMS_CONTRACT_ADDR || '0xmockcontract1234567890123456789012345678', + ethRpcUrl: process.env.ETH_RPC_URL || '', gatewayAppId: batch[0], chainId: batch[1], appAuthImplementation: batch[2], // NOTE: for backward compatibility @@ -155,8 +210,8 @@ app.post('/bootAuth/kms', // start server const port = parseInt(process.env.PORT || '3000'); -console.log(`starting mock auth server on port ${port}`); -console.log('note: this is a mock backend - all authentications will succeed'); +const policy = getPolicy(); +console.log(`starting mock auth server on port ${port} (policy: ${policy})`); export default { port, From 7bcb5c9939b60cb0534e0d30b68f57b67da57248 Mon Sep 17 00:00:00 2001 From: Leechael Yim Date: Fri, 17 Apr 2026 02:30:35 +0800 Subject: [PATCH 3/7] add ppid to kms onboard attestation info --- kms/rpc/proto/kms_rpc.proto | 2 ++ kms/src/onboard_service.rs | 6 ++++++ kms/src/www/onboard.html | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/kms/rpc/proto/kms_rpc.proto b/kms/rpc/proto/kms_rpc.proto index eb56f7307..28624ca60 100644 --- a/kms/rpc/proto/kms_rpc.proto +++ b/kms/rpc/proto/kms_rpc.proto @@ -151,6 +151,8 @@ message AttestationInfoResponse { string eth_rpc_url = 6; // KMS contract address from auth API string kms_contract_address = 7; + // Raw platform provisioning ID + bytes ppid = 8; } // The Onboard RPC service. diff --git a/kms/src/onboard_service.rs b/kms/src/onboard_service.rs index 2ab7051db..bef924b38 100644 --- a/kms/src/onboard_service.rs +++ b/kms/src/onboard_service.rs @@ -136,6 +136,11 @@ impl OnboardRpc for OnboardHandler { let app_info = verified .decode_app_info_ex(false, &info.vm_config) .context("Failed to decode app info")?; + let ppid = verified + .report + .tdx_report() + .map(|report| report.ppid.to_vec()) + .unwrap_or_default(); let (eth_rpc_url, kms_contract_address) = match self.state.config.auth_api.get_info().await { @@ -157,6 +162,7 @@ impl OnboardRpc for OnboardHandler { site_name: self.state.config.site_name.clone(), eth_rpc_url, kms_contract_address, + ppid, }) } diff --git a/kms/src/www/onboard.html b/kms/src/www/onboard.html index 6f7b6e010..e090cb1b1 100644 --- a/kms/src/www/onboard.html +++ b/kms/src/www/onboard.html @@ -177,6 +177,10 @@

Attestation Info (for on-chain registration)

Attestation Mode: {{ attestationInfo.attestation_mode }}
+
+ PPID: + 0x{{ attestationInfo.ppid }} +
Device ID: 0x{{ attestationInfo.device_id }} From 799c92cd0bac0f447af0f213af2fdec4ccc6c292 Mon Sep 17 00:00:00 2001 From: Leechael Yim Date: Fri, 17 Apr 2026 02:50:22 +0800 Subject: [PATCH 4/7] chore: fix prek formatting issues --- kms/auth-mock/index.ts | 16 ++++++++-------- kms/rpc/proto/kms_rpc.proto | 2 +- kms/src/www/onboard.html | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/kms/auth-mock/index.ts b/kms/auth-mock/index.ts index 3636650de..a2c5b3854 100644 --- a/kms/auth-mock/index.ts +++ b/kms/auth-mock/index.ts @@ -135,7 +135,7 @@ app.get('/', async (c) => { mockBackend.getChainId(), mockBackend.getAppImplementation(), ]); - + return c.json({ status: 'ok', kmsContractAddr: process.env.KMS_CONTRACT_ADDR || '0xmockcontract1234567890123456789012345678', @@ -148,15 +148,15 @@ app.get('/', async (c) => { }); } catch (error) { console.error('error in health check:', error); - return c.json({ - status: 'error', - message: error instanceof Error ? error.message : String(error) + return c.json({ + status: 'error', + message: error instanceof Error ? error.message : String(error) }, 500); } }); // app boot authentication -app.post('/bootAuth/app', +app.post('/bootAuth/app', zValidator('json', BootInfoSchema), async (c) => { try { @@ -166,7 +166,7 @@ app.post('/bootAuth/app', instanceId: bootInfo.instanceId, note: 'always returning success' }); - + const result = await mockBackend.checkBoot(bootInfo, false); return c.json(result); } catch (error) { @@ -191,7 +191,7 @@ app.post('/bootAuth/kms', instanceId: bootInfo.instanceId, note: 'always returning success' }); - + const result = await mockBackend.checkBoot(bootInfo, true); return c.json(result); } catch (error) { @@ -216,4 +216,4 @@ console.log(`starting mock auth server on port ${port} (policy: ${policy})`); export default { port, fetch: app.fetch, -}; \ No newline at end of file +}; diff --git a/kms/rpc/proto/kms_rpc.proto b/kms/rpc/proto/kms_rpc.proto index 28624ca60..9ef55b98e 100644 --- a/kms/rpc/proto/kms_rpc.proto +++ b/kms/rpc/proto/kms_rpc.proto @@ -44,7 +44,7 @@ message AppKeyResponse { string tproxy_app_id = 6; // Reverse proxy app ID from DstackKms contract. string gateway_app_id = 7; - // OS Image hash + // OS Image hash bytes os_image_hash = 8; } diff --git a/kms/src/www/onboard.html b/kms/src/www/onboard.html index e090cb1b1..23183bbe0 100644 --- a/kms/src/www/onboard.html +++ b/kms/src/www/onboard.html @@ -371,4 +371,4 @@

Onboard from an Existing KMS Instance

- \ No newline at end of file + From f57d4d0dd6a6b2063033a68484806c468ec78a19 Mon Sep 17 00:00:00 2001 From: Leechael Yim Date: Fri, 17 Apr 2026 06:58:06 +0800 Subject: [PATCH 5/7] fix kms builder dockerfile and adjust ppid display --- kms/dstack-app/builder/Dockerfile | 4 ++-- kms/src/www/onboard.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kms/dstack-app/builder/Dockerfile b/kms/dstack-app/builder/Dockerfile index da88aef39..585801b45 100644 --- a/kms/dstack-app/builder/Dockerfile +++ b/kms/dstack-app/builder/Dockerfile @@ -3,7 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 FROM rust:1.92.0@sha256:48851a839d6a67370c9dbe0e709bedc138e3e404b161c5233aedcf2b717366e4 AS kms-builder -COPY --from=build-shared pin-packages.sh /build/ +COPY --from=build-shared /pin-packages.sh /build/ COPY ./shared/*-pinned-packages.txt /build/ ARG DSTACK_REV ARG DSTACK_SRC_URL=https://github.com/Dstack-TEE/dstack.git @@ -27,7 +27,7 @@ RUN cd dstack && cargo build --release -p dstack-kms --target x86_64-unknown-lin RUN echo "${DSTACK_REV}" > /build/.GIT_REV FROM debian:bookworm@sha256:0d8498a0e9e6a60011df39aab78534cfe940785e7c59d19dfae1eb53ea59babe -COPY --from=build-shared pin-packages.sh config-qemu.sh /build/ +COPY --from=build-shared /pin-packages.sh /config-qemu.sh /build/ COPY ./shared/qemu-pinned-packages.txt /build/ WORKDIR /build ARG QEMU_REV=dbcec07c0854bf873d346a09e87e4c993ccf2633 diff --git a/kms/src/www/onboard.html b/kms/src/www/onboard.html index 23183bbe0..4ee8993fd 100644 --- a/kms/src/www/onboard.html +++ b/kms/src/www/onboard.html @@ -179,7 +179,7 @@

Attestation Info (for on-chain registration)

PPID: - 0x{{ attestationInfo.ppid }} + {{ attestationInfo.ppid }}
Device ID: From dfd8716cf804b19d7580278f2aeec849d9f81561 Mon Sep 17 00:00:00 2001 From: Leechael Yim Date: Wed, 22 Apr 2026 19:03:49 +0800 Subject: [PATCH 6/7] add eth rpc url to auth-eth-bun info endpoint --- kms/auth-eth-bun/bun.lock | 4 ++-- kms/auth-eth-bun/index.test.ts | 28 +++++++++++++++------------- kms/auth-eth-bun/index.ts | 17 +++++++++-------- kms/auth-eth-bun/openapi.json | 15 ++++++++++----- 4 files changed, 36 insertions(+), 28 deletions(-) diff --git a/kms/auth-eth-bun/bun.lock b/kms/auth-eth-bun/bun.lock index cc8fe2d28..e94bbb4d5 100644 --- a/kms/auth-eth-bun/bun.lock +++ b/kms/auth-eth-bun/bun.lock @@ -5,7 +5,7 @@ "name": "auth-eth-bun", "dependencies": { "@hono/zod-validator": "0.2.2", - "hono": "4.8.5", + "hono": "4.12.12", "viem": "2.31.7", "zod": "3.25.76", }, @@ -231,7 +231,7 @@ "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "hono": ["hono@4.8.5", "", {}, "sha512-Up2cQbtNz1s111qpnnECdTGqSIUIhZJMLikdKkshebQSEBcoUKq6XJayLGqSZWidiH0zfHRCJqFu062Mz5UuRA=="], + "hono": ["hono@4.12.12", "", {}, "sha512-p1JfQMKaceuCbpJKAPKVqyqviZdS0eUxH9v82oWo1kb9xjQ5wA6iP3FNVAPDFlz5/p7d45lO+BpSk1tuSZMF4Q=="], "human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], diff --git a/kms/auth-eth-bun/index.test.ts b/kms/auth-eth-bun/index.test.ts index 4bc271b8b..07f4c2ad7 100644 --- a/kms/auth-eth-bun/index.test.ts +++ b/kms/auth-eth-bun/index.test.ts @@ -26,7 +26,7 @@ beforeAll(async () => { process.env.ETH_RPC_URL = 'http://localhost:8545'; process.env.KMS_CONTRACT_ADDR = '0x1234567890123456789012345678901234567890'; process.env.PORT = '3001'; - + // Import the app after mocking const indexModule = await import('./index.ts'); appFetch = indexModule.default.fetch; @@ -58,6 +58,7 @@ describe('API Compatibility Tests', () => { expect(data).toMatchObject({ status: 'ok', kmsContractAddr: '0x1234567890123456789012345678901234567890', + ethRpcUrl: 'http://localhost:8545', gatewayAppId: expect.any(String), chainId: expect.any(Number), appAuthImplementation: expect.any(String), @@ -67,7 +68,7 @@ describe('API Compatibility Tests', () => { // Verify response structure matches OpenAPI spec const systemInfoSchema = openApiSpec.components.schemas.SystemInfo; const requiredFields = systemInfoSchema.required; - + requiredFields.forEach(field => { expect(data).toHaveProperty(field); }); @@ -128,7 +129,7 @@ describe('API Compatibility Tests', () => { // Verify response matches OpenAPI spec const bootResponseSchema = openApiSpec.components.schemas.BootResponse; const requiredFields = bootResponseSchema.required; - + requiredFields.forEach(field => { expect(data).toHaveProperty(field); }); @@ -263,7 +264,7 @@ describe('API Compatibility Tests', () => { it('should not log "Test backend error" messages', async () => { const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); - + mockReadContract.mockRejectedValue(new Error('Test backend error')); const response = await appFetch(new Request('http://localhost:3001/bootAuth/kms', { @@ -277,16 +278,16 @@ describe('API Compatibility Tests', () => { expect(response.status).toBe(200); expect(data.isAllowed).toBe(false); expect(data.reason).toBe('Test backend error'); - + // Verify that console.error was not called for test errors expect(consoleSpy).not.toHaveBeenCalled(); - + consoleSpy.mockRestore(); }); it('should log other error messages', async () => { const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); - + mockReadContract.mockRejectedValue(new Error('real error')); const response = await appFetch(new Request('http://localhost:3001/bootAuth/kms', { @@ -300,10 +301,10 @@ describe('API Compatibility Tests', () => { expect(response.status).toBe(200); expect(data.isAllowed).toBe(false); expect(data.reason).toBe('real error'); - + // Verify that console.error was called for real errors expect(consoleSpy).toHaveBeenCalledWith('error in KMS boot auth:', expect.any(Error)); - + consoleSpy.mockRestore(); }); }); @@ -312,7 +313,7 @@ describe('API Compatibility Tests', () => { describe('API Schema Compatibility', () => { it('should match BootInfo schema requirements', () => { const bootInfoSchema = openApiSpec.components.schemas.BootInfo; - + // Required fields should match original fastify schema expect(bootInfoSchema.required).toEqual([ 'mrAggregated', @@ -331,7 +332,7 @@ describe('API Schema Compatibility', () => { it('should match BootResponse schema requirements', () => { const bootResponseSchema = openApiSpec.components.schemas.BootResponse; - + expect(bootResponseSchema.required).toEqual([ 'isAllowed', 'reason', @@ -341,10 +342,11 @@ describe('API Schema Compatibility', () => { it('should match SystemInfo schema requirements', () => { const systemInfoSchema = openApiSpec.components.schemas.SystemInfo; - + expect(systemInfoSchema.required).toEqual([ 'status', 'kmsContractAddr', + 'ethRpcUrl', 'gatewayAppId', 'chainId', 'appAuthImplementation', @@ -385,4 +387,4 @@ describe('Hex Decoding Compatibility', () => { expect(response.status).toBe(200); }); -}); \ No newline at end of file +}); diff --git a/kms/auth-eth-bun/index.ts b/kms/auth-eth-bun/index.ts index 2432d3d13..b2e0c4158 100644 --- a/kms/auth-eth-bun/index.ts +++ b/kms/auth-eth-bun/index.ts @@ -150,14 +150,14 @@ class EthereumBackend { args: [bootInfoStruct] }); } - + const [isAllowed, reason] = response; const gatewayAppId = await this.client.readContract({ address: this.kmsContractAddr, abi: DSTACK_KMS_ABI, functionName: 'gatewayAppId' }); - + return { isAllowed, reason, @@ -209,10 +209,11 @@ app.get('/', async (c) => { ethereum.getAppImplementation(), ]); console.log('batch', batch); - + return c.json({ status: 'ok', kmsContractAddr: kmsContractAddr, + ethRpcUrl: rpcUrl, gatewayAppId: batch[0], chainId: batch[1], appAuthImplementation: batch[2], // NOTE: for backward compatibility @@ -220,15 +221,15 @@ app.get('/', async (c) => { }); } catch (error) { console.error('error in health check:', error); - return c.json({ - status: 'error', - message: error instanceof Error ? error.message : String(error) + return c.json({ + status: 'error', + message: error instanceof Error ? error.message : String(error) }, 500); } }); // app boot authentication -app.post('/bootAuth/app', +app.post('/bootAuth/app', zValidator('json', BootInfoSchema), async (c) => { try { @@ -275,4 +276,4 @@ console.log(`starting server on port ${port}`); export default { port, fetch: app.fetch, -}; \ No newline at end of file +}; diff --git a/kms/auth-eth-bun/openapi.json b/kms/auth-eth-bun/openapi.json index 7187915ac..e87c03611 100644 --- a/kms/auth-eth-bun/openapi.json +++ b/kms/auth-eth-bun/openapi.json @@ -106,7 +106,7 @@ "type": "object", "required": [ "mrAggregated", - "osImageHash", + "osImageHash", "appId", "composeHash", "instanceId", @@ -118,7 +118,7 @@ "description": "Aggregated MR measurement" }, "osImageHash": { - "type": "string", + "type": "string", "description": "OS Image hash" }, "appId": { @@ -158,7 +158,7 @@ "type": "object", "required": [ "isAllowed", - "reason", + "reason", "gatewayAppId" ], "properties": { @@ -181,6 +181,7 @@ "required": [ "status", "kmsContractAddr", + "ethRpcUrl", "gatewayAppId", "chainId", "appAuthImplementation", @@ -196,8 +197,12 @@ "type": "string", "description": "KMS contract address" }, + "ethRpcUrl": { + "type": "string", + "description": "Ethereum RPC URL" + }, "gatewayAppId": { - "type": "string", + "type": "string", "description": "Gateway application ID" }, "chainId": { @@ -233,4 +238,4 @@ } } } -} \ No newline at end of file +} From 776f76372398aa337ea39199ef15a7341467fe1d Mon Sep 17 00:00:00 2001 From: Leechael Yim Date: Thu, 23 Apr 2026 03:01:08 +0800 Subject: [PATCH 7/7] update auth-eth package-lock.json --- kms/auth-eth/package-lock.json | 298 ++++++--------------------------- 1 file changed, 47 insertions(+), 251 deletions(-) diff --git a/kms/auth-eth/package-lock.json b/kms/auth-eth/package-lock.json index f9753b563..123dfcee3 100644 --- a/kms/auth-eth/package-lock.json +++ b/kms/auth-eth/package-lock.json @@ -737,6 +737,7 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1437,7 +1438,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/properties": "^5.8.0" @@ -1521,7 +1521,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/abi": "^5.8.0", "@ethersproject/abstract-provider": "^5.8.0", @@ -1579,7 +1578,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/basex": "^5.8.0", @@ -1611,7 +1609,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", @@ -1633,8 +1630,7 @@ "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@ethersproject/keccak256": { "version": "5.8.0", @@ -1710,7 +1706,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/sha2": "^5.8.0" @@ -1752,7 +1747,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", @@ -1782,7 +1776,6 @@ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -1815,7 +1808,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0" @@ -1858,7 +1850,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", @@ -1906,7 +1897,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", @@ -1982,7 +1972,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/constants": "^5.8.0", @@ -2005,7 +1994,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", @@ -2064,7 +2052,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/hash": "^5.8.0", @@ -2805,7 +2792,6 @@ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2820,7 +2806,6 @@ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 8" } @@ -2831,7 +2816,6 @@ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2955,6 +2939,7 @@ "integrity": "sha512-208JcDeVIl+7Wu3MhFUUtiA8TJ7r2Rn3Wr+lSx9PfsDTKkbsAsWPY6N6wQ4mtzDv0/pB9nIbJhkjoHe1EsgNsA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "debug": "^4.1.1", "lodash.isequal": "^4.5.0" @@ -4282,7 +4267,6 @@ "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "antlr4ts": "^0.5.0-alpha.4" } @@ -4418,7 +4402,6 @@ "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/chai": "*" } @@ -4429,7 +4412,6 @@ "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*" } @@ -4447,7 +4429,6 @@ "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*" } @@ -4458,7 +4439,6 @@ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/minimatch": "*", "@types/node": "*" @@ -4524,8 +4504,7 @@ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/mocha": { "version": "10.0.10", @@ -4541,6 +4520,7 @@ "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -4560,16 +4540,14 @@ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/qs": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/secp256k1": { "version": "4.0.7", @@ -4634,8 +4612,7 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/abstract-logging": { "version": "2.0.1", @@ -4797,7 +4774,6 @@ "dev": true, "license": "BSD-3-Clause OR MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.4.2" } @@ -4867,8 +4843,7 @@ "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/anymatch": { "version": "3.1.3", @@ -4907,7 +4882,6 @@ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -4918,7 +4892,6 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -4929,7 +4902,6 @@ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -4947,7 +4919,6 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -4958,7 +4929,6 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -4968,8 +4938,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/async-retry": { "version": "1.3.3", @@ -4994,7 +4963,6 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">= 4.0.0" } @@ -5227,8 +5195,7 @@ "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/bignumber.js": { "version": "9.3.1", @@ -5381,6 +5348,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -5575,8 +5543,7 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/cbor": { "version": "8.1.0", @@ -5584,7 +5551,6 @@ "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "nofilter": "^3.1.0" }, @@ -5618,7 +5584,6 @@ "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", "dev": true, "license": "WTFPL", - "peer": true, "dependencies": { "check-error": "^1.0.2" }, @@ -5659,7 +5624,6 @@ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": "*" } @@ -5670,7 +5634,6 @@ "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "get-func-name": "^2.0.2" }, @@ -5752,7 +5715,6 @@ "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "object-assign": "^4.1.0", "string-width": "^2.1.1" @@ -5770,7 +5732,6 @@ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -5781,7 +5742,6 @@ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -5792,7 +5752,6 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -5807,7 +5766,6 @@ "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-regex": "^3.0.0" }, @@ -5871,7 +5829,6 @@ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.1.90" } @@ -5902,7 +5859,6 @@ "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "array-back": "^3.1.0", "find-replace": "^3.0.0", @@ -5919,7 +5875,6 @@ "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "array-back": "^4.0.2", "chalk": "^2.4.2", @@ -5936,7 +5891,6 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -5950,7 +5904,6 @@ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -5961,7 +5914,6 @@ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5977,7 +5929,6 @@ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -5987,8 +5938,7 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/command-line-usage/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -5996,7 +5946,6 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.0" } @@ -6007,7 +5956,6 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -6018,7 +5966,6 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -6032,7 +5979,6 @@ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -6080,7 +6026,6 @@ "node >= 0.8" ], "license": "MIT", - "peer": true, "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -6094,7 +6039,6 @@ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6110,8 +6054,7 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/concat-stream/node_modules/string_decoder": { "version": "1.1.1", @@ -6119,7 +6062,6 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -6246,7 +6188,6 @@ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": "*" } @@ -6255,8 +6196,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", - "dev": true, - "peer": true + "dev": true }, "node_modules/debug": { "version": "4.4.3", @@ -6309,7 +6249,6 @@ "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-detect": "^4.0.0" }, @@ -6323,7 +6262,6 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4.0.0" } @@ -6333,8 +6271,7 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", @@ -6438,7 +6375,6 @@ "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", "dev": true, - "peer": true, "dependencies": { "heap": ">= 0.2.0" }, @@ -6452,7 +6388,6 @@ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "path-type": "^4.0.0" }, @@ -6653,7 +6588,6 @@ "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esprima": "^2.7.1", "estraverse": "^1.9.1", @@ -6677,7 +6611,6 @@ "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -6692,7 +6625,6 @@ "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", "dev": true, "optional": true, - "peer": true, "dependencies": { "amdefine": ">=0.0.4" }, @@ -6719,7 +6651,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -6730,7 +6661,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -6741,7 +6671,6 @@ "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@solidity-parser/parser": "^0.14.0", "axios": "^1.5.1", @@ -6777,8 +6706,7 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/eth-gas-reporter/node_modules/@scure/base": { "version": "1.1.9", @@ -6786,7 +6714,6 @@ "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://paulmillr.com/funding/" } @@ -6803,7 +6730,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@noble/hashes": "~1.2.0", "@noble/secp256k1": "~1.7.0", @@ -6822,7 +6748,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@noble/hashes": "~1.2.0", "@scure/base": "~1.1.0" @@ -6834,7 +6759,6 @@ "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@noble/hashes": "1.2.0", "@noble/secp256k1": "1.7.1", @@ -6858,7 +6782,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@ethersproject/abi": "5.8.0", "@ethersproject/abstract-provider": "5.8.0", @@ -6898,7 +6821,6 @@ "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@noble/hashes": "^1.4.0" } @@ -6909,7 +6831,6 @@ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -6973,6 +6894,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", @@ -7013,7 +6935,6 @@ "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bn.js": "4.11.6", "number-to-bn": "1.7.0" @@ -7028,8 +6949,7 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/evp_bytestokey": { "version": "1.0.3", @@ -7117,7 +7037,6 @@ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -7165,8 +7084,7 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fast-querystring": { "version": "1.1.2", @@ -7340,7 +7258,6 @@ "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "array-back": "^3.0.1" }, @@ -7458,7 +7375,6 @@ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -7474,8 +7390,7 @@ "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -7533,7 +7448,6 @@ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -7579,7 +7493,6 @@ "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -7617,7 +7530,6 @@ "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "chalk": "^2.4.2", "node-emoji": "^1.10.0" @@ -7632,7 +7544,6 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -7646,7 +7557,6 @@ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -7662,7 +7572,6 @@ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -7672,8 +7581,7 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/ghost-testrpc/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -7681,7 +7589,6 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.0" } @@ -7692,7 +7599,6 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -7703,7 +7609,6 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -7762,7 +7667,6 @@ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "global-prefix": "^3.0.0" }, @@ -7776,7 +7680,6 @@ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -7792,7 +7695,6 @@ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -7806,7 +7708,6 @@ "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/glob": "^7.1.1", "array-union": "^2.1.0", @@ -7827,7 +7728,6 @@ "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7840,7 +7740,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7862,7 +7761,6 @@ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7918,6 +7816,7 @@ "integrity": "sha512-zQze7qe+8ltwHvhX5NQ8sN1N37WWZGw8L63y+2XcPxGwAjc/SMF829z3NS6o1krX0sryhAsVBK/xrwUqlsot4Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@ethereumjs/util": "^9.1.0", "@ethersproject/abi": "^5.1.2", @@ -8266,8 +8165,7 @@ "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/hmac-drbg": { "version": "1.0.1", @@ -8294,7 +8192,6 @@ "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "caseless": "^0.12.0", "concat-stream": "^1.6.2", @@ -8327,7 +8224,6 @@ "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^10.0.3" } @@ -8337,8 +8233,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/https-proxy-agent": { "version": "5.0.1", @@ -8404,7 +8299,6 @@ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4" } @@ -8478,8 +8372,7 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/interpret": { "version": "1.4.0", @@ -8487,7 +8380,6 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.10" } @@ -8608,7 +8500,6 @@ "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.5.0", "npm": ">=3" @@ -8791,6 +8682,7 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -9650,7 +9542,6 @@ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "universalify": "^2.0.0" }, @@ -9664,7 +9555,6 @@ "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -9691,7 +9581,6 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -9722,7 +9611,6 @@ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -9816,16 +9704,14 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -9847,8 +9733,7 @@ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", @@ -9873,7 +9758,6 @@ "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "get-func-name": "^2.0.1" } @@ -9946,8 +9830,7 @@ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/math-intrinsics": { "version": "1.1.0", @@ -9993,7 +9876,6 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 8" } @@ -10054,8 +9936,7 @@ "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/micro-packed": { "version": "0.7.3", @@ -10175,7 +10056,6 @@ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "minimist": "^1.2.6" }, @@ -10380,7 +10260,6 @@ "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "lodash": "^4.17.21" } @@ -10448,7 +10327,6 @@ "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "abbrev": "1" }, @@ -10485,7 +10363,6 @@ "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bn.js": "4.11.6", "strip-hex-prefix": "1.0.0" @@ -10500,8 +10377,7 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", @@ -10509,7 +10385,6 @@ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -10580,7 +10455,6 @@ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -10598,8 +10472,7 @@ "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/os-tmpdir": { "version": "1.0.2", @@ -10672,8 +10545,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/parse-json": { "version": "5.2.0", @@ -10753,7 +10625,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -10764,7 +10635,6 @@ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -10813,7 +10683,6 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -10949,7 +10818,6 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, - "peer": true, "engines": { "node": ">= 0.8.0" } @@ -10960,7 +10828,6 @@ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -11028,7 +10895,6 @@ "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "asap": "~2.0.6" } @@ -11140,8 +11006,7 @@ "url": "https://feross.org/support" } ], - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/quick-format-unescaped": { "version": "4.0.4", @@ -11256,7 +11121,6 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, - "peer": true, "dependencies": { "resolve": "^1.1.6" }, @@ -11270,7 +11134,6 @@ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "minimatch": "^3.0.5" }, @@ -11284,7 +11147,6 @@ "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11296,7 +11158,6 @@ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -11310,7 +11171,6 @@ "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -11321,7 +11181,6 @@ "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "req-from": "^2.0.0" }, @@ -11335,7 +11194,6 @@ "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "resolve-from": "^3.0.0" }, @@ -11349,7 +11207,6 @@ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -11500,7 +11357,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "queue-microtask": "^1.2.2" } @@ -11569,7 +11425,6 @@ "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "abbrev": "1.0.x", "async": "1.x", @@ -11596,7 +11451,6 @@ "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11608,7 +11462,6 @@ "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -11624,7 +11477,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "inflight": "^1.0.4", "inherits": "2", @@ -11642,7 +11494,6 @@ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -11653,7 +11504,6 @@ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -11666,8 +11516,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/sc-istanbul/node_modules/supports-color": { "version": "3.2.3", @@ -11675,7 +11524,6 @@ "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^1.0.0" }, @@ -11689,7 +11537,6 @@ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -11827,7 +11674,6 @@ "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "charenc": ">= 0.0.1", "crypt": ">= 0.0.1" @@ -11865,7 +11711,6 @@ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -11884,7 +11729,6 @@ "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11897,7 +11741,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11919,7 +11762,6 @@ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -12033,7 +11875,6 @@ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -12091,7 +11932,6 @@ "integrity": "sha512-5P8vnB6qVX9tt1MfuONtCTEaEGO/O4WuEidPHIAJjx4sktHHKhO3rFvnE0q8L30nWJPTrcqGQMT7jpE29B2qow==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "@ethersproject/abi": "^5.0.9", "@solidity-parser/parser": "^0.20.1", @@ -12125,8 +11965,7 @@ "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz", "integrity": "sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/solidity-coverage/node_modules/ansi-styles": { "version": "3.2.1", @@ -12134,7 +11973,6 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -12148,7 +11986,6 @@ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -12164,7 +12001,6 @@ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -12174,8 +12010,7 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/solidity-coverage/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -12183,7 +12018,6 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.0" } @@ -12194,7 +12028,6 @@ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -12210,7 +12043,6 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -12221,7 +12053,6 @@ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "license": "MIT", - "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -12232,7 +12063,6 @@ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -12246,7 +12076,6 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -12260,7 +12089,6 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4.0.0" } @@ -12381,8 +12209,7 @@ "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", "dev": true, - "license": "WTFPL OR MIT", - "peer": true + "license": "WTFPL OR MIT" }, "node_modules/string-length": { "version": "4.0.2", @@ -12450,7 +12277,6 @@ "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-hex-prefixed": "1.0.0" }, @@ -12581,7 +12407,6 @@ "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "http-response-object": "^3.0.1", "sync-rpc": "^1.2.1", @@ -12597,7 +12422,6 @@ "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "get-port": "^3.1.0" } @@ -12608,7 +12432,6 @@ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -12626,7 +12449,6 @@ "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "array-back": "^4.0.1", "deep-extend": "~0.6.0", @@ -12643,7 +12465,6 @@ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -12654,7 +12475,6 @@ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -12726,7 +12546,6 @@ "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/concat-stream": "^1.6.0", "@types/form-data": "0.0.33", @@ -12749,8 +12568,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/then-request/node_modules/form-data": { "version": "2.5.5", @@ -12758,7 +12576,6 @@ "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -12824,6 +12641,7 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -12917,7 +12735,6 @@ "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "chalk": "^4.1.0", "command-line-args": "^5.1.1", @@ -12934,7 +12751,6 @@ "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "typescript": ">=3.7.0" } @@ -13034,6 +12850,7 @@ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -13102,7 +12919,6 @@ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "prelude-ls": "~1.1.2" }, @@ -13116,7 +12932,6 @@ "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -13166,7 +12981,6 @@ "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -13178,7 +12992,6 @@ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -13195,7 +13008,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13217,7 +13029,6 @@ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "license": "MIT", - "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -13228,7 +13039,6 @@ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13242,7 +13052,6 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -13256,7 +13065,6 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4.0.0" } @@ -13281,8 +13089,7 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/typescript": { "version": "5.9.3", @@ -13290,6 +13097,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -13304,7 +13112,6 @@ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -13356,7 +13163,6 @@ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 10.0.0" } @@ -13416,8 +13222,7 @@ "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/util-deprecate": { "version": "1.0.2", @@ -13474,7 +13279,6 @@ "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", "dev": true, "license": "LGPL-3.0", - "peer": true, "dependencies": { "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", @@ -13495,7 +13299,6 @@ "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", "dev": true, "license": "MPL-2.0", - "peer": true, "bin": { "rlp": "bin/rlp" }, @@ -13509,7 +13312,6 @@ "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", "dev": true, "license": "MPL-2.0", - "peer": true, "dependencies": { "@ethereumjs/rlp": "^4.0.1", "ethereum-cryptography": "^2.0.0", @@ -13525,7 +13327,6 @@ "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@noble/hashes": "1.4.0" }, @@ -13539,7 +13340,6 @@ "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 16" }, @@ -13553,7 +13353,6 @@ "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@noble/curves": "1.4.2", "@noble/hashes": "1.4.0", @@ -13636,7 +13435,6 @@ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -13654,7 +13452,6 @@ "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "reduce-flatten": "^2.0.0", "typical": "^5.2.0" @@ -13669,7 +13466,6 @@ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" }