diff --git a/.gitignore b/.gitignore index f637b52..d8f302a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,6 @@ docker/ mnemonic-to-seed.ts packages/contracts-midnight/contract-offer-files.undeployed.json PLAN.md + +# compactc params (SRS) cache — infra/compact.sh +.compact-cache/ diff --git a/LEDGER-V9-MIGRATION.md b/LEDGER-V9-MIGRATION.md new file mode 100644 index 0000000..7ea336e --- /dev/null +++ b/LEDGER-V9-MIGRATION.md @@ -0,0 +1,187 @@ +# ledger-v9 migration — audit, and where it is blocked + +Branch `00001-ledger-v9`. Target: move this workspace off the ledger-v8 line +(`@midnight-ntwrk/ledger-v8@8.1.0`, midnight-js 4.1.1, wallet-SDK v1 facade, +`@effectstream/*` 0.103.x, compactc 0.30) onto the node-2.x line so the kernel +runs against Midnight node 2.0.0-rc.4 / indexer 4.4.0-rc.1. + +| Component | From | To | +| --- | --- | --- | +| Ledger | `@midnight-ntwrk/ledger-v8` 8.1.0 | `@midnightntwrk/ledger-v9` 1.0.0-rc.3 (**new scope, no hyphen**) | +| midnight-js | 4.1.1 | 5.0.0-beta.6 | +| wallet-sdk | v1 facade | 2.0.0-beta.2 (`WalletFacade.init`) | +| compactc | 0.30.0 | 0.33.0-rc.2 (language 0.25, runtime 0.18.0-rc.1, compact-js 2.5.5-rc.7) | + +**Status: the toolchain and contract half is done. The SDK half is blocked +upstream — see "The blocker" below.** + +--- + +## What landed on this branch + +### 1. A pinned, containerised compactc 0.33.0-rc.2 + +`compact compile +0.33.0-rc.2` cannot work: the `compact` version manager does +not publish the 0.33 line (`compact list` tops out at 0.31.1, `compact check` +reports "Up to date -- 0.31.1"). The 0.33 release candidates ship as prebuilt +release assets on `LFDT-Minokawa/compact` instead. + +* `infra/compact-version.txt` — the pin, single source of truth. +* `infra/compact-toolchain.Dockerfile` — fetches the pinned release asset; + asserts at build time that the default `zkir` backend is present. +* `infra/compact.sh` — uses `$COMPACTC` if set, else builds the image once and + runs it. `bun run --filter @zswap-da/contract-offer-files compact` goes + through this. + +Two non-obvious things this had to solve, worth knowing if you package the +toolchain again (e.g. in a kernel Docker image): + +* We run the container as the host uid/gid so `src/managed/` is not root-owned. + That makes the image's default `HOME=/root` unwritable, and zkir then fails + with `Permission denied (os error 13)` → `Exception: zkir returned a non-zero + exit status 1` — printed *after* "Compiling 3 circuits", so it reads like a + compiler bug. Fix: `-e HOME=/tmp -e XDG_CACHE_HOME=/cache`. +* `compactc` must not be symlinked onto `PATH`; the bundled wrapper resolves + `compactc.bin` from `dirname $0`. The Dockerfile writes a two-line exec shim. + +The SRS/params cache is persisted in `.compact-cache/` (gitignored), so repeat +compiles need no network. + +### 2. `offer-files.compact` recompiled — clean, with no source edits + +`packages/contracts-midnight/contract-offer-files` now pins +`@midnight-ntwrk/compact-runtime` `0.18.0-rc.1` and `@midnight-ntwrk/compact-js` +`2.5.5-rc.7`. The container self-reports compiler `0.33.0`, language `0.25.0`, +ledger target `ledger-9.1.0.0-rc.3`, runtime `0.18.0-rc.1`. + +The language-0.25 tripwire — `Field` is no longer a supertype of `Uint`, so bare +numeric literals need `as Field` — does not bite here: the contract's only +arithmetic is `counter = counter + 1 as Uint<128>`, already annotated. No +cross-contract calls, so none of the new CCC guards apply either. + +Two independent builds produce byte-identical output across all 17 files, +prover keys included. + +### 3. We do NOT pass `--feature-zkir-v3`, and that decides the proof-server tag + +compactc 0.33 defaults to ZKIR version 2; `--feature-zkir-v3` opts into version +3. We stay on the default. Verified on the emitted artifacts: + +* `zkir/*.zkir` → `"version": {"major": 2, "minor": 0}` +* `zkir/*.bzkir` → tagged `midnight:ir-source[v2]` +* `keys/*.verifier` → tagged **`midnight:verifier-key[v6]`** + +The ledger maps `verifier-key[v6]` to `ProofVersioned::V2` and `verifier-key[v7]` +to `V3` (`ledger/src/prove.rs` at `ledger-9.1.0.0-rc.3`). So these artifacts are +proven by the **plain `midnightntwrk/proof-server:9.0.0-rc.5`** image. The +`9.0.0-rc.5_experimental` build is required only for the zkir-v3 lane, where the +plain tag answers *"Unsupported ZKIR version"*. Nothing here needs it. + +Do not add `--feature-zkir-v3` without also switching every deployment to the +`_experimental` proof server. + +### 4. The compiled circuits did not change — no redeploy is forced + +The `zswap-da` frontend template records a sha256 manifest of this same contract +source built with compactc **0.31.0**. Against this 0.33.0-rc.2 build: + +| Group | Result | +| --- | --- | +| `zkir/*.zkir`, `zkir/*.bzkir` (6 files) | identical | +| `keys/*.prover`, `keys/*.verifier` (6 files) | identical | +| `contract/index.{d.ts,js,js.map}`, `compiler/contract-info.json` | changed | +| `compiler/contract-manifest.json` | new in 0.33 (16 files → 17) | + +All twelve ZK artifacts are byte-identical, so **verifier keys are unchanged**: +an already-deployed OfferFiles contract stays valid across this toolchain bump, +and the frontend's `FetchZkConfigProvider` serves the same key bytes. Only the +generated TypeScript moved, which is what a runtime 0.15 → 0.18 change should +look like. + +(The template's manifest still needs its four changed hashes, the new entry, and +`COMPILER_VERSION` updated — that edit lives in the effectstream monorepo and is +gated on the same blocker.) + +--- + +## The blocker: five `@effectstream/*` packages pin ledger-v8 as hard deps + +The kernel cannot finish this migration on its own. These are exact +`dependencies`, not peer ranges, so bumping our own pins does not redirect them: + +| Package | How it pins | +| --- | --- | +| `@effectstream/batcher-sdk` 0.103.1 | `"@midnight-ntwrk/ledger-v8": "8.1.0"` + midnight-js 4.1.1 ×8 + `wallet-sdk-facade` 4.1.0 | +| `@effectstream/midnight-contracts` 0.103.1 | same | +| `@effectstream/sync` 0.103.1 | `"@midnight-ntwrk/ledger-v8": "8.1.0"` (transitive-only, under `@effectstream/runtime`) | +| `@effectstream/config` 0.103.1 | `onchain-runtime` → `npm:onchain-runtime-v3@3.0.0` | +| `@effectstream/mip-zswap-offer` 0.3.0 | peer range is `"*"`, but `dist/mip5/OfferFiles.js:10` **value**-imports `@midnight-ntwrk/ledger-v8` — the specifier is baked in | + +`effectstream/effectstream@v-next` HEAD has not started this work +(`midnight-contracts` 0.104.1 still reads ledger-v8 8.1.0 / midnight-js 4.1.1 / +facade 4.1.0), so there is no newer package to bump to. + +**Why there is no partial migration.** `packages/validator` looked like a +migratable slice — its only non-stdlib deps are the ledger, `@scure/base`, +noble and `mip-zswap-offer`, and it has its own `bun test` suite. But because +`mip-zswap-offer` hard-codes the v8 specifier, migrating the validator alone +loads **two ledger wasm modules in one process**. That is the failure this +repo's own root `overrides` comment documents: two copies in one bundle make +every cross-copy value fail an `instanceof` check. So the specifier rename has +to land together with the `@effectstream/*` upgrade, in one step — which is why +this branch does not contain it. + +--- + +## Prepared work: the v8 → v9 API delta over the surface this repo uses + +Diffed `@midnight-ntwrk/ledger-v8@8.1.0` against +`@midnightntwrk/ledger-v9@1.0.0-rc.3` typings. + +**Byte-for-byte identical — a pure specifier rename suffices:** `Transaction` +(entire class: `deserialize`, `wellFormed`, `serialize`, `identifiers`, `merge`, +`guaranteedOffer`/`fallibleOffer`/`intents`), `UnprovenTransaction` (still just +`Transaction` — not renamed, not +re-generified), `FinalizedTransaction`, `Intent`, `WellFormedStrictness` (all +five boolean fields), `ZswapSecretKeys`, `DustSecretKey`, `shieldedToken`, +`LedgerState` constructor / `apply` / `postBlockUpdate` / `updateIndex`, +`ZswapChainState` constructor / `deserialize` / `tryApply`. + +**Only two breaking changes, both easy to miss:** + +1. `SignatureVerifyingKey`, `SigningKey` and `Signature` change from `string` to + `{ tag: SignatureKind, value: string }`, with new + `type SignatureKind = 'schnorr' | 'ecdsa'`. The declarations of + `verifySignature(vk, data, sig)` and `addressFromKey(key)` are *textually + unchanged*, so a rename-only migration compiles at those call sites and then + misbehaves at runtime. Affected here: `packages/validator/derive.ts` + (`addressFromKey`), plus anywhere a signing key is threaded as a string. +2. `ZswapChainState.postBlockUpdate(tblock)` gains a required second argument, + `retentionDuration: bigint`. (`LedgerState.postBlockUpdate` is unchanged — + don't confuse the two.) + +New in v9 and harmless: `LedgerState.testingFromGenesis`, +`testingUnlockToTreasury`, `testingUnlockToReserve`. + +## Prepared work: the compact-runtime 0.18 delta + +Nothing in this workspace uses the broken APIs directly — a grep for +`currentPrivateState|currentQueryContext|currentZswapLocalState|createCircuitContext|.proofData|CircuitContext|convertBytesToField` +over the whole repo (excluding `node_modules` and generated `src/managed/`) +returns zero hits. All `CircuitContext` handling lives in +`@effectstream/midnight-contracts` and `@midnight-ntwrk/midnight-js-contracts`, +and our circuit calls go through midnight-js `callTx`, already awaited. + +For whoever does that upstream work, the delta as it appears in generated code +(same source, compactc 0.30/runtime 0.15 vs 0.33/runtime 0.18): + +| | runtime 0.15 | runtime 0.18 | +| --- | --- | --- | +| context fields | `currentPrivateState`, `currentQueryContext`, `currentZswapLocalState`, `gasCost` | **`callContext` only** — all four collapsed under it | +| helpers added | — | `copyCircuitContext`, `finalizeCallProofData` | +| helpers replaced | `convertBytesToField` | `convertBytesToUint` | +| circuit return | `CircuitResults` | **`Promise>`** — `ImpureCircuits`, `ProvableCircuits` and `Contract.initialState` are all async now | +| new export | — | `expectedVk: Record` (implementation-binding guard) | + +The async flip has the widest blast radius: `initialState` returning a promise +touches every deploy path. diff --git a/api-examples/09-mint.ts b/api-examples/09-mint.ts index 5c2859f..ec3e235 100644 --- a/api-examples/09-mint.ts +++ b/api-examples/09-mint.ts @@ -22,7 +22,7 @@ import { writeFileSync } from "node:fs"; import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; import { findDeployedContract } from "@midnight-ntwrk/midnight-js-contracts"; import { CompiledContract } from "@midnight-ntwrk/compact-js"; -import { MidnightBech32m } from "@midnight-ntwrk/wallet-sdk-address-format"; +import { MidnightBech32m } from "@midnightntwrk/wallet-sdk-address-format"; import { buildWalletFacade, registerNightForDust, diff --git a/api-examples/11-settle-offer.ts b/api-examples/11-settle-offer.ts index 17ec12e..792f21a 100644 --- a/api-examples/11-settle-offer.ts +++ b/api-examples/11-settle-offer.ts @@ -14,7 +14,7 @@ import { config, get, post, header } from "./config.ts"; import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; import { buildWalletAndWaitForFunds } from "@effectstream/midnight-contracts"; -import { Transaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; globalThis.WebSocket = WebSocket; diff --git a/bun.lock b/bun.lock index ed3075f..b9d323f 100644 --- a/bun.lock +++ b/bun.lock @@ -5,12 +5,12 @@ "": { "name": "zswap-da", "dependencies": { - "@effectstream/celestia": "0.103.1", - "@effectstream/midnight-contracts": "0.103.1", - "@effectstream/mip-zswap-offer": "0.3.0", - "@effectstream/orchestrator": "0.103.1", + "@effectstream/celestia": "0.200.2", + "@effectstream/midnight-contracts": "0.200.2", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", + "@effectstream/orchestrator": "0.200.2", "@electric-sql/pglite": "^0.3.14", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0", + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@scure/bip39": "^2.2.0", "wait-on": "8.0.3", }, @@ -22,20 +22,20 @@ "name": "@zswap-da/docs-playground", "version": "0.1.0", "dependencies": { - "@effectstream/mip-zswap-offer": "0.3.0", - "@effectstream/wallets": "0.103.1", - "@midnight-ntwrk/compact-js": "2.5.1", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", + "@effectstream/wallets": "0.200.2", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7", "@midnight-ntwrk/dapp-connector-api": "4.0.1", - "@midnight-ntwrk/ledger-v8": "8.1.0", - "@midnight-ntwrk/midnight-js-contracts": "4.1.1", - "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-http-client-proof-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-level-private-state-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-network-id": "4.1.1", - "@midnight-ntwrk/midnight-js-types": "4.1.1", - "@midnight-ntwrk/midnight-js-utils": "4.1.1", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0", + "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-http-client-proof-provider": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-level-private-state-provider": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@scure/base": "^2.0.0", "@zswap-da/contract-offer-files": "workspace:*", "react": "^19.2.0", @@ -57,15 +57,15 @@ "name": "@zswap-da/batcher", "version": "0.1.0", "dependencies": { - "@effectstream/batcher-sdk": "0.103.1", - "@effectstream/midnight-contracts": "0.103.1", - "@effectstream/utils": "0.103.1", + "@effectstream/batcher-sdk": "0.200.2", + "@effectstream/midnight-contracts": "0.200.2", + "@effectstream/utils": "0.200.2", "@zswap-da/offer-guard": "workspace:*", "@zswap-da/validator": "workspace:*", "effection": "^3.5.0", }, "devDependencies": { - "@effectstream/mip-zswap-offer": "0.3.0", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", "@scure/base": "^2.0.0", }, }, @@ -73,7 +73,7 @@ "name": "@zswap-da/contracts-celestia", "version": "0.1.0", "dependencies": { - "@effectstream/celestia": "0.103.1", + "@effectstream/celestia": "0.200.2", }, "devDependencies": { "wait-on": "8.0.3", @@ -83,19 +83,19 @@ "name": "@zswap-da/contracts-midnight", "version": "0.1.0", "dependencies": { - "@effectstream/midnight-contracts": "0.103.1", - "@effectstream/npm-midnight-indexer": "0.103.1", - "@effectstream/npm-midnight-node": "0.103.1", - "@effectstream/npm-midnight-proof-server": "0.103.1", - "@effectstream/utils": "0.103.1", - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/compact-runtime": "0.15.0", - "@midnight-ntwrk/ledger-v8": "8.1.0", - "@midnight-ntwrk/midnight-js-contracts": "4.1.1", - "@midnight-ntwrk/midnight-js-network-id": "4.1.1", - "@midnight-ntwrk/onchain-runtime-v3": "3.0.0", - "@midnight-ntwrk/wallet-sdk-abstractions": "2.0.0", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0", + "@effectstream/midnight-contracts": "0.200.2", + "@effectstream/npm-midnight-indexer": "0.200.2", + "@effectstream/npm-midnight-node": "0.200.2", + "@effectstream/npm-midnight-proof-server": "0.200.2", + "@effectstream/utils": "0.200.2", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7", + "@midnight-ntwrk/compact-runtime": "0.18.0-rc.1", + "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3", + "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@zswap-da/contract-offer-files": "workspace:*", "rxjs": "^7.8.2", "wait-on": "8.0.3", @@ -105,18 +105,18 @@ "name": "@zswap-da/contract-offer-files", "version": "0.1.0", "dependencies": { - "@midnight-ntwrk/compact-js": "2.5.0", - "@midnight-ntwrk/compact-runtime": "0.15.0", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7", + "@midnight-ntwrk/compact-runtime": "0.18.0-rc.1", }, }, "packages/database": { "name": "@zswap-da/database", "version": "0.1.0", "dependencies": { - "@effectstream/config": "0.103.1", - "@effectstream/db": "0.103.1", - "@effectstream/runtime": "0.103.1", - "@effectstream/sm": "0.103.1", + "@effectstream/config": "0.200.2", + "@effectstream/db": "0.200.2", + "@effectstream/runtime": "0.200.2", + "@effectstream/sm": "0.200.2", "@pgtyped/runtime": "2.4.2", "effection": "^3.5.0", "pg": "^8.14.0", @@ -129,23 +129,23 @@ "name": "@zswap-da/node", "version": "0.1.0", "dependencies": { - "@effectstream/concise": "0.103.1", - "@effectstream/config": "0.103.1", - "@effectstream/coroutine": "0.103.1", - "@effectstream/db": "0.103.1", - "@effectstream/log": "0.103.1", - "@effectstream/midnight-contracts": "0.103.1", - "@effectstream/mip-zswap-offer": "0.3.0", - "@effectstream/runtime": "0.103.1", - "@effectstream/sm": "0.103.1", - "@effectstream/utils": "0.103.1", + "@effectstream/concise": "0.200.2", + "@effectstream/config": "0.200.2", + "@effectstream/coroutine": "0.200.2", + "@effectstream/db": "0.200.2", + "@effectstream/log": "0.200.2", + "@effectstream/midnight-contracts": "0.200.2", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", + "@effectstream/runtime": "0.200.2", + "@effectstream/sm": "0.200.2", + "@effectstream/utils": "0.200.2", "@fastify/rate-limit": "^10.0.0", - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/ledger-v8": "8.1.0", - "@midnight-ntwrk/midnight-js-contracts": "4.1.1", - "@midnight-ntwrk/midnight-js-network-id": "4.1.1", - "@midnight-ntwrk/onchain-runtime-v3": "3.0.0", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7", + "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3", + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0", "@scure/base": "^2.0.0", @@ -166,7 +166,7 @@ "name": "@zswap-da/offer-guard", "version": "0.1.0", "dependencies": { - "@effectstream/mip-zswap-offer": "0.3.0", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", "@zswap-da/validator": "workspace:*", }, "devDependencies": { @@ -177,14 +177,14 @@ "name": "@zswap-da/tests", "version": "0.1.0", "dependencies": { - "@effectstream/midnight-contracts": "0.103.1", - "@effectstream/mip-zswap-offer": "0.3.0", - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/ledger-v8": "8.1.0", - "@midnight-ntwrk/midnight-js-contracts": "4.1.1", - "@midnight-ntwrk/midnight-js-network-id": "4.1.1", - "@midnightntwrk/wallet-sdk-hd": "3.0.3", - "@midnightntwrk/wallet-sdk-unshielded-wallet": "3.1.0", + "@effectstream/midnight-contracts": "0.200.2", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7", + "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnightntwrk/wallet-sdk-hd": "3.1.0-beta.1", + "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2", "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0", "@scure/base": "^2.0.0", @@ -203,8 +203,8 @@ "name": "@zswap-da/validator", "version": "0.1.0", "dependencies": { - "@effectstream/mip-zswap-offer": "0.3.0", - "@midnight-ntwrk/ledger-v8": "8.1.0", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0", "@scure/base": "^2.0.0", @@ -212,7 +212,7 @@ }, }, "overrides": { - "@midnight-ntwrk/ledger-v8": "8.1.0", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", }, "packages": { "@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.11.1", "", {}, "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ=="], @@ -263,6 +263,8 @@ "@biglup/is-cid": ["@biglup/is-cid@1.0.3", "", { "dependencies": { "@multiformats/mafmt": "^12.1.6", "@multiformats/multiaddr": "^12.1.14", "iso-url": "^1.1.3", "multiformats": "^13.0.1", "uint8arrays": "^5.0.1" } }, "sha512-R0XPZ/IQhU2TtetSFI9vI+7kJOJYNiCncn5ixEBW+/LNaZCo2HK37Mq3pRNzrM4FryuAkyeqY7Ujmj3I3e3t9g=="], + "@borewit/text-codec": ["@borewit/text-codec@0.2.2", "", {}, "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ=="], + "@bufbuild/protobuf": ["@bufbuild/protobuf@1.10.1", "", {}, "sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ=="], "@cardano-foundation/cardano-verify-datasignature": ["@cardano-foundation/cardano-verify-datasignature@1.0.11", "", { "dependencies": { "@stricahq/bip32ed25519": "^1.0.4", "@stricahq/cbors": "^1.0.2", "@stricahq/cip08": "^1.0.4", "@stricahq/typhonjs": "^1.2.8", "blakejs": "^1.2.1" } }, "sha512-e1hCWmVxtVJVPeXYB7RLaQXm4VRV5okv2aww0+690oFbKLVvqtpFI61CtYomwC+lrYAl2DBSG3xuCvQiv7hxqQ=="], @@ -299,49 +301,49 @@ "@dnsquery/dns-packet": ["@dnsquery/dns-packet@6.1.1", "", { "dependencies": { "@leichtgewicht/ip-codec": "^2.0.4", "utf8-codec": "^1.0.0" } }, "sha512-WXTuFvL3G+74SchFAtz3FgIYVOe196ycvGsMgvSH/8Goptb1qpIQtIuM4SOK9G9lhMWYpHxnXyy544ZhluFOew=="], - "@effect/platform": ["@effect/platform@0.95.0", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.4", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.20.0" } }, "sha512-WDlRiWRSWlmhCPq09bvAofK0qr5vM4yNklXjoJdZHmugKRRTpN/Okn3ODnjgM/Kb/4hjMrRyrsUeH/Brieq7KA=="], + "@effect/platform": ["@effect/platform@0.96.1", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.10", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.21.2" } }, "sha512-cjB1QZZYEP8JXCFNGvBLVi0T6YUBQTmOVEUA3SDbiQ6RUO+p6CE3eyD2vMWmrz5nE8yY5QSAuOV9v0boEcUv+A=="], - "@effectstream/batcher-sdk": ["@effectstream/batcher-sdk@0.103.1", "", { "dependencies": { "@effectstream/crypto": "0.103.1", "@effectstream/event-client": "0.103.1", "@effectstream/midnight-contracts": "0.103.1", "@effectstream/utils": "0.103.1", "@fastify/cors": "^11.0.1", "@fastify/swagger": "^9.5.1", "@fastify/swagger-ui": "^5.2.3", "@midnight-ntwrk/compact-js": "2.5.1", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "8.1.0", "@midnight-ntwrk/midnight-js-contracts": "4.1.1", "@midnight-ntwrk/midnight-js-http-client-proof-provider": "4.1.1", "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "4.1.1", "@midnight-ntwrk/midnight-js-level-private-state-provider": "4.1.1", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-node-zk-config-provider": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "@midnight-ntwrk/onchain-runtime-v3": "3.0.0", "@midnightntwrk/wallet-sdk-abstractions": "2.1.0", "@midnightntwrk/wallet-sdk-address-format": "3.1.2", "@midnightntwrk/wallet-sdk-dust-wallet": "4.2.0", "@midnightntwrk/wallet-sdk-facade": "4.1.0", "@midnightntwrk/wallet-sdk-hd": "3.0.3", "@midnightntwrk/wallet-sdk-shielded": "3.0.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "3.1.0", "@noble/hashes": "^2.2.0", "@noble/secp256k1": "^3.1.0", "@sinclair/typebox": "0.34.41", "@solana/web3.js": "^1.95.0", "bitcoinjs-lib": "^6.1.5", "bs58": "^6.0.0", "ecpair": "^2.1.0", "effection": "^3.5.0", "fastify": "^5.4.0", "rxjs": "7.8.2", "tiny-secp256k1": "^2.2.1", "tweetnacl": "^1.0.3", "viem": "^2.21.3" } }, "sha512-4C4mAllHugVdlNvywIdMRqyx3r+Jnfg+uK2XkeDJBvvy9eVv/LCkN1UwHCh9V3MGRK7j7Ah2u1TmdmWgPTyBYQ=="], + "@effectstream/batcher-sdk": ["@effectstream/batcher-sdk@0.200.2", "", { "dependencies": { "@effectstream/crypto": "0.200.2", "@effectstream/event-client": "0.200.2", "@effectstream/midnight-contracts": "0.200.2", "@effectstream/utils": "0.200.2", "@fastify/cors": "^11.0.1", "@fastify/swagger": "^9.5.1", "@fastify/swagger-ui": "^5.2.3", "@midnight-ntwrk/compact-js": "2.5.5-rc.7", "@midnight-ntwrk/compact-runtime": "0.18.0-rc.1", "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-http-client-proof-provider": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-level-private-state-provider": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-node-zk-config-provider": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-dust-wallet": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-facade": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-hd": "3.1.0-beta.1", "@midnightntwrk/wallet-sdk-shielded": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2", "@noble/hashes": "^2.2.0", "@noble/secp256k1": "^3.1.0", "@sinclair/typebox": "0.34.41", "@solana/web3.js": "^1.95.0", "bitcoinjs-lib": "^6.1.5", "bs58": "^6.0.0", "ecpair": "^2.1.0", "effection": "^3.5.0", "fastify": "^5.4.0", "rxjs": "7.8.2", "tiny-secp256k1": "^2.2.1", "tweetnacl": "^1.0.3", "viem": "^2.21.3" } }, "sha512-3O9KV+Jr/7SpN5nfxmDUg6CqMT9pknsrnM1Wfw8Ph8glzpT1Wz3roSychxi9XEjGQ4VopCD1VUVeTMq5mUM4qw=="], - "@effectstream/celestia": ["@effectstream/celestia@0.103.1", "", { "dependencies": { "@xhmikosr/bin-wrapper": "^5.0.0" }, "bin": { "celestia": "index.js" } }, "sha512-X1OXZWUxCTTkEZ522Hku05xT0Rd2fnhJqKOjOMwmjilyJ8zf/Ss+nO7brvigI7XkrC1wWoOMHRS2oM51TTW5rA=="], + "@effectstream/celestia": ["@effectstream/celestia@0.200.2", "", { "dependencies": { "@xhmikosr/bin-wrapper": "^13.2.0" }, "bin": { "celestia": "index.js" } }, "sha512-4r+cO/fyrFhMEgNe4GQVkBfgFp+QT6/flWVNUx57UKMfww7xpXuUHZUfPJsoEK3FydcBTcDmLWGShjyW2fDHzQ=="], - "@effectstream/concise": ["@effectstream/concise@0.103.1", "", { "dependencies": { "@effectstream/crypto": "0.103.1", "@effectstream/utils": "0.103.1", "@sinclair/typebox": "0.34.41", "js-sha3": "^0.9.3", "viem": "2.37.3" } }, "sha512-H34mf/1suoNiQKczRVXIJnenQ5dZE73+cPr/MSzOzKyZ7XorHSMX+XPXgMdJjHihgvjprSjG3S1TQw22FOFfaQ=="], + "@effectstream/concise": ["@effectstream/concise@0.200.2", "", { "dependencies": { "@effectstream/crypto": "0.200.2", "@effectstream/utils": "0.200.2", "@sinclair/typebox": "0.34.41", "js-sha3": "^0.9.3", "viem": "2.37.3" } }, "sha512-CZUw2/8iMVdZpuqqiwnpFktwHxLfQdalDBLZWWqt8O1CjdaoiNYD0/LCX5H2OoaXGtrkwQepy4F3NFIEjtYbUw=="], - "@effectstream/config": ["@effectstream/config@0.103.1", "", { "dependencies": { "@dcspark/carp-client": "^3.3.0", "@dcspark/cip34-js": "3.0.1", "@effectstream/utils": "0.103.1", "@midnight-ntwrk/onchain-runtime": "npm:@midnight-ntwrk/onchain-runtime-v3@3.0.0", "@sinclair/typebox": "0.34.41", "@utxorpc/spec": "^0.18.1", "abitype": "1.1.0", "assert-never": "^1.4.0", "buffer": "^6.0.3", "effection": "^3.5.0", "viem": "2.37.3" } }, "sha512-zNTqouAvqlW+O3D8mm8KmVi6ITi99zEShA7nHbVdrhc46wmwrBgZPXmfQcxo7JSQmaQ8wdapoiAhpgWQIrSlzQ=="], + "@effectstream/config": ["@effectstream/config@0.200.2", "", { "dependencies": { "@dcspark/carp-client": "^3.3.0", "@dcspark/cip34-js": "3.0.1", "@effectstream/utils": "0.200.2", "@midnight-ntwrk/onchain-runtime": "npm:@midnightntwrk/onchain-runtime-v4@4.0.0-rc.3", "@sinclair/typebox": "0.34.41", "@utxorpc/spec": "^0.18.1", "abitype": "1.1.0", "assert-never": "^1.4.0", "buffer": "^6.0.3", "effection": "^3.5.0", "viem": "2.37.3" } }, "sha512-FkNjIQ+zMZ7a4sP8tGBXhyjZPIyBkZB58lIWUvhpuGWpWixgbMXEvU7mrilbpR5KVCJDON4PoQpT6VZKY7UdoQ=="], - "@effectstream/coroutine": ["@effectstream/coroutine@0.103.1", "", { "dependencies": { "@coderspirit/nominal": "^4.1.1", "@pgtyped/parser": "2.4.2", "@pgtyped/runtime": "2.4.2", "@sinclair/typebox": "0.34.41", "pg": "^8.14.0", "pg-tx": "^1.0.1" } }, "sha512-hpL9ahfoAQGbQZW2preg0RJtZCgO0m4gfOEbY5BeX21ojphxmIbtm2f4JRGBaneVJ2or3G/hlftH+VeWgyWa8A=="], + "@effectstream/coroutine": ["@effectstream/coroutine@0.200.2", "", { "dependencies": { "@coderspirit/nominal": "^4.1.1", "@pgtyped/parser": "2.4.2", "@pgtyped/runtime": "2.4.2", "@sinclair/typebox": "0.34.41", "pg": "^8.14.0", "pg-tx": "^1.0.1" } }, "sha512-2SrFOq/rfMm98q04fPJ7GPcC+dRzW1xMD/ypcYh3ystxQ61g0SV9tX8TyTu+Hd2W4neRCP/OFTdMgeY+Y0mAJA=="], - "@effectstream/crypto": ["@effectstream/crypto@0.103.1", "", { "dependencies": { "@cardano-foundation/cardano-verify-datasignature": "1.0.11", "@effectstream/utils": "0.103.1", "@polkadot/util": "^13.4.3", "@polkadot/util-crypto": "^13.4.3", "@sinclair/typebox": "0.34.41", "@solana/web3.js": "^1.95.0", "algosdk": "^3.4.0", "mina-signer": "^3.0.7", "tweetnacl": "^1.0.3", "viem": "2.37.3", "web3-utils": "^4.3.3" }, "peerDependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2" }, "optionalPeers": ["@midnight-ntwrk/ledger-v8", "@midnightntwrk/wallet-sdk-address-format"] }, "sha512-aMA98WUTBNeuxwOnTYP3iVFZrmTjjtl5ReTd3/ZijzEbIjlb+MX8TRBAFFbJ70q14SNskisDRgwaUwNwolsvLA=="], + "@effectstream/crypto": ["@effectstream/crypto@0.200.2", "", { "dependencies": { "@cardano-foundation/cardano-verify-datasignature": "1.0.11", "@effectstream/utils": "0.200.2", "@polkadot/util": "^13.4.3", "@polkadot/util-crypto": "^13.4.3", "@sinclair/typebox": "0.34.41", "@solana/web3.js": "^1.95.0", "algosdk": "^3.4.0", "mina-signer": "^3.0.7", "tweetnacl": "^1.0.3", "viem": "2.37.3", "web3-utils": "^4.3.3" }, "peerDependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2" }, "optionalPeers": ["@midnightntwrk/ledger-v9", "@midnightntwrk/wallet-sdk-address-format"] }, "sha512-U/oEDGLzV/Cj3NlkZxPa+1mr0sqCeZ3FlA2FKrFh4/1fgtzL/QyuJSWF7oCbgK/zCUp2Ge6DJzWkFBr1S0u8Ww=="], - "@effectstream/db": ["@effectstream/db@0.103.1", "", { "dependencies": { "@effectstream/coroutine": "0.103.1", "@effectstream/log": "0.103.1", "@effectstream/runtime": "0.103.1", "@effectstream/sync": "0.103.1", "@effectstream/utils": "0.103.1", "@electric-sql/pglite": "^0.3.14", "@pgtyped/parser": "2.4.2", "@pgtyped/runtime": "2.4.2", "effection": "^3.5.0", "pg": "8.21.0", "pg-gateway": "^0.3.0-beta.4", "pg-tx": "^1.0.1" } }, "sha512-JZ6qDNQlw21ODCKn7xHPVoxV+YtTHFk/Ljn/tBoKD1C2RMEVZn94McbQPsziwyjgYKslnr5FNufaipKuhA/fvA=="], + "@effectstream/db": ["@effectstream/db@0.200.2", "", { "dependencies": { "@effectstream/coroutine": "0.200.2", "@effectstream/log": "0.200.2", "@effectstream/runtime": "0.200.2", "@effectstream/sync": "0.200.2", "@effectstream/utils": "0.200.2", "@electric-sql/pglite": "^0.3.14", "@pgtyped/parser": "2.4.2", "@pgtyped/runtime": "2.4.2", "effection": "^3.5.0", "pg": "8.21.0", "pg-gateway": "^0.3.0-beta.4", "pg-tx": "^1.0.1" } }, "sha512-x6mNVHfi6z5RhtWVIPQNXA06T0TA30vyzjd+Fi9fw6LF8Bcp74sa/OpLgEnD9FQbUOVuCo6dmOZaIqtiw73KDA=="], - "@effectstream/event-client": ["@effectstream/event-client@0.103.1", "", { "dependencies": { "@effectstream/utils": "0.103.1", "@seriousme/opifex": "^1.11.2", "@sinclair/typebox": "0.34.41", "abitype": "1.1.0", "assert-never": "^1.4.0", "js-sha3": "^0.9.3", "mqtt": "^5.14.0", "mqtt-pattern": "^2.1.0" } }, "sha512-hCX+bv3VnrARah8yCRjQ6LRBw+fzOk9jbn/wnFhCYtGqolXtkgxYAm5aEMnttrU7xxtXo5f4S03/qjy0V9M3Jg=="], + "@effectstream/event-client": ["@effectstream/event-client@0.200.2", "", { "dependencies": { "@effectstream/utils": "0.200.2", "@seriousme/opifex": "^1.11.2", "@sinclair/typebox": "0.34.41", "abitype": "1.1.0", "assert-never": "^1.4.0", "js-sha3": "^0.9.3", "mqtt": "^5.14.0", "mqtt-pattern": "^2.1.0" } }, "sha512-Nu8Bky3fGibfVHQLsXGwm3dEBzXz3a7J91axvgVfqPoVEEDek9dKHqyV9lWvemLMaSFaBAi/6Y/L2o5oaW0rnw=="], - "@effectstream/event-server": ["@effectstream/event-server@0.103.1", "", { "dependencies": { "@effectstream/utils": "0.103.1", "@seriousme/opifex": "^1.11.2" } }, "sha512-pChouhKJUnJpgN2kkmyVCodmNsBIiRSQ+IRKcziCvJwIlIFxLsTQJcr4W1wQG5FMTRhFCANo9visI+mrfpY9eA=="], + "@effectstream/event-server": ["@effectstream/event-server@0.200.2", "", { "dependencies": { "@effectstream/utils": "0.200.2", "@seriousme/opifex": "^1.11.2" } }, "sha512-oP4VqyTpYfA9pdELh/i9tXzUqP1QQeBFi7XX9WEiiTZyOJke7T8qwAVhHTXiAa4n/JzWhbiqkkv9cuPkeD/Oww=="], - "@effectstream/log": ["@effectstream/log@0.103.1", "", { "dependencies": { "@effectstream/utils": "0.103.1", "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "0.56.0", "@opentelemetry/exporter-logs-otlp-http": "0.56.0", "@opentelemetry/exporter-metrics-otlp-http": "0.56.0", "@opentelemetry/exporter-trace-otlp-http": "0.56.0", "@opentelemetry/resources": "1.29.0", "@opentelemetry/sdk-logs": "0.56.0", "@opentelemetry/sdk-metrics": "1.29.0", "@opentelemetry/sdk-trace-base": "1.29.0", "@opentelemetry/semantic-conventions": "1.28.0", "chalk": "5.4.1", "effection": "3.5.0", "material-chalk": "1.1.1", "superjson": "^2.2.1", "tslog": "^4.9.3" } }, "sha512-kx+oIUTnV8K9rk7LJKlqnVeOz7uCJINxtaVclHpL5M/QnnrrTTSJOs7cRLE0g94a/EpUO53mEY8NSPcHaohA3w=="], + "@effectstream/log": ["@effectstream/log@0.200.2", "", { "dependencies": { "@effectstream/utils": "0.200.2", "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "0.56.0", "@opentelemetry/exporter-logs-otlp-http": "0.56.0", "@opentelemetry/exporter-metrics-otlp-http": "0.56.0", "@opentelemetry/exporter-trace-otlp-http": "0.56.0", "@opentelemetry/resources": "1.29.0", "@opentelemetry/sdk-logs": "0.56.0", "@opentelemetry/sdk-metrics": "1.29.0", "@opentelemetry/sdk-trace-base": "1.29.0", "@opentelemetry/semantic-conventions": "1.28.0", "chalk": "5.4.1", "effection": "3.5.0", "material-chalk": "1.1.1", "superjson": "^2.2.1", "tslog": "^4.9.3" } }, "sha512-0AdkGAoEuKFZlSi+sYshOAERsO9aY5OrNgopizhRwsz4j0m7GLQGwYzVgypXP8QMpLuC6MsRimLTWmjxvGiA3g=="], - "@effectstream/midnight-contracts": ["@effectstream/midnight-contracts@0.103.1", "", { "dependencies": { "@effectstream/utils": "0.103.1", "@midnight-ntwrk/compact-js": "2.5.1", "@midnight-ntwrk/ledger-v8": "8.1.0", "@midnight-ntwrk/midnight-js-contracts": "4.1.1", "@midnight-ntwrk/midnight-js-http-client-proof-provider": "4.1.1", "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "4.1.1", "@midnight-ntwrk/midnight-js-level-private-state-provider": "4.1.1", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-node-zk-config-provider": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "@midnight-ntwrk/onchain-runtime-v3": "3.0.0", "@midnightntwrk/wallet-sdk-abstractions": "2.1.0", "@midnightntwrk/wallet-sdk-address-format": "3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "3.3.1", "@midnightntwrk/wallet-sdk-dust-wallet": "4.2.0", "@midnightntwrk/wallet-sdk-facade": "4.1.0", "@midnightntwrk/wallet-sdk-hd": "3.0.3", "@midnightntwrk/wallet-sdk-shielded": "3.0.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "3.1.0", "@scure/bip39": "^2.0.1", "dotenv": "^16.4.7", "rxjs": "^7.8.2" } }, "sha512-TCLV9y/4KQxuzGDcpgWJv7e6tuRBgAwekCUchgUqhpSk3OW3kHT8LtKTaBR5QvC5G0M3TVUoNt5qR5rUx9DTog=="], + "@effectstream/midnight-contracts": ["@effectstream/midnight-contracts@0.200.2", "", { "dependencies": { "@effectstream/utils": "0.200.2", "@midnight-ntwrk/compact-js": "2.5.5-rc.7", "@midnight-ntwrk/compact-runtime": "0.18.0-rc.1", "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-http-client-proof-provider": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-level-private-state-provider": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-node-zk-config-provider": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6", "@midnight-ntwrk/platform-js": "3.0.0", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3", "@midnightntwrk/wallet-sdk": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-dust-wallet": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-facade": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-hd": "3.1.0-beta.1", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-node-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-prover-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-runtime": "1.0.6-beta.0", "@midnightntwrk/wallet-sdk-shielded": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "@scure/bip39": "^2.0.1", "bn.js": "5.2.3", "dotenv": "^16.4.7", "rxjs": "7.8.2" } }, "sha512-sCvDDJZqEsYqO9bKbnVsuyZEr4+VR8iiXKM4DTQaQkAKcvYEi5vuFymyAM/O8kv2fF68nSBCKPlupprKXtwSHw=="], - "@effectstream/mip-zswap-offer": ["@effectstream/mip-zswap-offer@0.3.0", "", { "dependencies": { "@noble/hashes": "^1.8.0" }, "peerDependencies": { "@midnight-ntwrk/ledger-v8": "*", "@scure/base": "^1.1.0 || ^2.0.0" } }, "sha512-sZPjNAFgL2pqGEIeWLDYZ+DjlD/FSlZKO8prK3ctAJEnSuMVXUib9urSTE10ioa4G1P2ODhd7VIx0pi/JWY0Nw=="], + "@effectstream/mip-zswap-offer": ["@effectstream/mip-zswap-offer@0.4.0-v9.0", "", { "dependencies": { "@noble/hashes": "^1.8.0" }, "peerDependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@scure/base": "^1.1.0 || ^2.0.0" } }, "sha512-BncbasmnxdfBOSsDxXvEE1nKQ+K+x7BKnzrZfLsEk3O3vthOJs3KNzc5yY+/HnKwteyWjJJSDuTPfCCskcFAUw=="], - "@effectstream/npm-midnight-indexer": ["@effectstream/npm-midnight-indexer@0.103.1", "", { "dependencies": { "axios": "^1.10.0", "axios-proxy-builder": "^0.1.2", "extract-zip": "^2.0.1", "js-yaml": "^4.1.0" }, "bin": { "npm-midnight-indexer": "index.js" } }, "sha512-GADDlP823Pb3VHGOFS5ZiySrP/Znb9ooxyFaPkg0+2mRw6dtMohLLpvWE1gHNYOa7sPmdOf6IoOkvultvWZTAQ=="], + "@effectstream/npm-midnight-indexer": ["@effectstream/npm-midnight-indexer@0.200.2", "", { "dependencies": { "axios": "^1.10.0", "axios-proxy-builder": "^0.1.2", "extract-zip": "^2.0.1", "js-yaml": "^4.1.0" }, "bin": { "npm-midnight-indexer": "index.js" } }, "sha512-JkRnGkVSlXzvClDHOkk6Z2o2p7tFceNlBsHx46CUG5tnRYWlzYSm7ToW5T/bhOeaA5C86YmcLIkpaHJ3qTZNLA=="], - "@effectstream/npm-midnight-node": ["@effectstream/npm-midnight-node@0.103.1", "", { "dependencies": { "axios": "^1.10.0", "axios-proxy-builder": "^0.1.2", "extract-zip": "^2.0.1" }, "bin": { "npm-midnight-node": "index.js" } }, "sha512-gX3dzTTqUTJMOm3SFfeUnGtfsJNL/+JbDcuvP/QolBhZBqHfOJv+mzSibGsKIhsg01Nk3jdIvIeebIqk+Jmlvg=="], + "@effectstream/npm-midnight-node": ["@effectstream/npm-midnight-node@0.200.2", "", { "dependencies": { "axios": "^1.10.0", "axios-proxy-builder": "^0.1.2", "extract-zip": "^2.0.1" }, "bin": { "npm-midnight-node": "index.js" } }, "sha512-nr0kkpSvmBeshMS+X9ZGvJW7c/zxQoQJOZyQUJaSOm73UFd7mVlrbrcjRS5weZcHCxpDJk+qNdAvhAycf2t1Qw=="], - "@effectstream/npm-midnight-proof-server": ["@effectstream/npm-midnight-proof-server@0.103.1", "", { "dependencies": { "axios": "^1.6.8", "extract-zip": "^2.0.1" }, "bin": { "npm-midnight-proof-server": "index.js" } }, "sha512-hhfTGZj6hO/Q3hB8GXfWPKD8IAPwv4/KT2qFflBkGK3uXhwp7t2JS8loFfLLEC0m9Pb0tgPgegdIrJkNPXiqQw=="], + "@effectstream/npm-midnight-proof-server": ["@effectstream/npm-midnight-proof-server@0.200.2", "", { "dependencies": { "axios": "^1.6.8", "extract-zip": "^2.0.1" }, "bin": { "npm-midnight-proof-server": "index.js" } }, "sha512-heHTo3FsCA0sYj/sBMOfihf1iZ/ICIb+sM42j3t2uvhRAu3F7qjaHxwp0YEjOaULIYPr2+c5JhB842AhSihrUg=="], - "@effectstream/orchestrator": ["@effectstream/orchestrator@0.103.1", "", { "dependencies": { "@effectstream/db": "0.103.1" }, "bin": { "orchestrator": "src/cli.ts" } }, "sha512-NIxqZtaOvZBCny8gUkCWhWUwb8lh6dPTUDkVTWQ4bYS8WZ/CnOWG4r1Fg32Vw2GnAXXSUpUZZhA8erORJrrQyQ=="], + "@effectstream/orchestrator": ["@effectstream/orchestrator@0.200.2", "", { "dependencies": { "@effectstream/db": "0.200.2" }, "bin": { "orchestrator": "src/cli.ts" } }, "sha512-5tMN74Wb4bEa0MwPDHfTklHjEBONd9cDxGRAaHQlLs4qUtM1wvb8McNXBVVIq1bSW7M7tx8gTBSI6lVJDLCQ6g=="], - "@effectstream/runtime": ["@effectstream/runtime@0.103.1", "", { "dependencies": { "@effectstream/concise": "0.103.1", "@effectstream/config": "0.103.1", "@effectstream/coroutine": "0.103.1", "@effectstream/crypto": "0.103.1", "@effectstream/db": "0.103.1", "@effectstream/event-client": "0.103.1", "@effectstream/event-server": "0.103.1", "@effectstream/log": "0.103.1", "@effectstream/sm": "0.103.1", "@effectstream/sync": "0.103.1", "@effectstream/utils": "0.103.1", "@fastify/cors": "^11.0.1", "@fastify/swagger": "^9.5.1", "@fastify/swagger-ui": "^5.2.3", "@metamask/json-rpc-engine": "^10.0.3", "@opentelemetry/api": "^1.9.0", "@opentelemetry/auto-instrumentations-node": "^0.54.0", "@opentelemetry/sdk-node": "0.56.0", "@pgtyped/runtime": "2.4.2", "@sinclair/typebox": "0.34.41", "effection": "^3.5.0", "fastify": "^5.4.0", "js-sha3": "^0.9.3", "jsonc-parser": "^3.3.1", "pg": "8.21.0", "viem": "2.37.3" } }, "sha512-j2+845+tYpepH0mILUHZDKBGa9ACOjQ3bQBneCzf5QfstC/sE1+d3hPt7FsJwF4Baa2ppihSKrQq2l3oORo6CQ=="], + "@effectstream/runtime": ["@effectstream/runtime@0.200.2", "", { "dependencies": { "@effectstream/concise": "0.200.2", "@effectstream/config": "0.200.2", "@effectstream/coroutine": "0.200.2", "@effectstream/crypto": "0.200.2", "@effectstream/db": "0.200.2", "@effectstream/event-client": "0.200.2", "@effectstream/event-server": "0.200.2", "@effectstream/log": "0.200.2", "@effectstream/sm": "0.200.2", "@effectstream/sync": "0.200.2", "@effectstream/utils": "0.200.2", "@fastify/cors": "^11.0.1", "@fastify/swagger": "^9.5.1", "@fastify/swagger-ui": "^5.2.3", "@metamask/json-rpc-engine": "^10.0.3", "@opentelemetry/api": "^1.9.0", "@opentelemetry/auto-instrumentations-node": "^0.54.0", "@opentelemetry/sdk-node": "0.56.0", "@pgtyped/runtime": "2.4.2", "@sinclair/typebox": "0.34.41", "effection": "^3.5.0", "fastify": "^5.4.0", "js-sha3": "^0.9.3", "jsonc-parser": "^3.3.1", "pg": "8.21.0", "viem": "2.37.3" } }, "sha512-w8fqzVtRvNIZ7mDBOOck4Zj8nmJIaQAQC8QEin6jTpST8jMwTOFiLgoA4kzCAQKtHCl1O++3Sw+zLs1WimpAbQ=="], - "@effectstream/sm": ["@effectstream/sm@0.103.1", "", { "dependencies": { "@effectstream/concise": "0.103.1", "@effectstream/config": "0.103.1", "@effectstream/coroutine": "0.103.1", "@effectstream/crypto": "0.103.1", "@effectstream/db": "0.103.1", "@effectstream/event-client": "0.103.1", "@effectstream/log": "0.103.1", "@effectstream/utils": "0.103.1", "@pgtyped/runtime": "^2.4.2", "@sinclair/typebox": "0.34.41", "assert-never": "^1.4.0", "effection": "^3.5.0", "pg": "8.21.0", "pg-tx": "^1.0.1", "viem": "2.37.3" } }, "sha512-BXo48L/rzmCdIkFz3tnavTRX+W64jF9Wc5etRV6+bIODahKTmt1G6zWKi7VH4m/QRWSTTv8RHOX9IbI+o38Z8Q=="], + "@effectstream/sm": ["@effectstream/sm@0.200.2", "", { "dependencies": { "@effectstream/concise": "0.200.2", "@effectstream/config": "0.200.2", "@effectstream/coroutine": "0.200.2", "@effectstream/crypto": "0.200.2", "@effectstream/db": "0.200.2", "@effectstream/event-client": "0.200.2", "@effectstream/log": "0.200.2", "@effectstream/utils": "0.200.2", "@noble/hashes": "^2.2.0", "@pgtyped/runtime": "^2.4.2", "@sinclair/typebox": "0.34.41", "assert-never": "^1.4.0", "effection": "^3.5.0", "pg": "8.21.0", "pg-tx": "^1.0.1", "viem": "2.37.3" } }, "sha512-3iaE7KcpF/Ct5Kx+djtKcpnPnt0wYUT3hRkadWTO7Y/lYP2vrny3dD9mkwVow5dTe+4TMYPE5wCGpWKO2Oahcg=="], - "@effectstream/sync": ["@effectstream/sync@0.103.1", "", { "dependencies": { "@cardano-sdk/core": "^0.46.11", "@cardano-sdk/util": "^0.17.1", "@effectstream/config": "0.103.1", "@effectstream/db": "0.103.1", "@effectstream/log": "0.103.1", "@effectstream/utils": "0.103.1", "@midnight-ntwrk/ledger-v8": "8.1.0", "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "4.1.1", "@midnight-ntwrk/onchain-runtime": "npm:@midnight-ntwrk/onchain-runtime-v3@3.0.0", "@sinclair/typebox": "0.34.41", "@utxorpc/sdk": "^0.8.0", "@utxorpc/spec": "^0.18.1", "avail-js-sdk": "^0.4.2", "buffer": "^6.0.3", "denque": "^2.1.0", "effection": "3.5.0", "graphql-ws": "^6.0.6", "json-stable-stringify": "^1.2.1", "ntp-time-sync": "^0.5.0", "pg": "^8.14.0", "viem": "2.37.3" } }, "sha512-clc0ETdp8FayHYwPHwG/o/XRwoTBr1DBNlaIQLTFhYcS3/s5bb1ibj6v1J8tQIxAeEJQ11X9IaDYQBVJpLkltA=="], + "@effectstream/sync": ["@effectstream/sync@0.200.2", "", { "dependencies": { "@cardano-sdk/core": "^0.46.11", "@cardano-sdk/util": "^0.17.1", "@effectstream/config": "0.200.2", "@effectstream/db": "0.200.2", "@effectstream/log": "0.200.2", "@effectstream/utils": "0.200.2", "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "5.0.0-beta.6", "@midnight-ntwrk/onchain-runtime": "npm:@midnightntwrk/onchain-runtime-v4@4.0.0-rc.3", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@sinclair/typebox": "0.34.41", "@utxorpc/sdk": "^0.8.0", "@utxorpc/spec": "^0.18.1", "avail-js-sdk": "^0.4.2", "buffer": "^6.0.3", "denque": "^2.1.0", "effection": "3.5.0", "graphql-ws": "^6.0.6", "json-stable-stringify": "^1.2.1", "ntp-time-sync": "^0.5.0", "pg": "^8.14.0", "viem": "2.37.3" } }, "sha512-w3pMvZqRsgilTIVf0fzAnW36rf4bAzcmLiA2r8D5tn1dvORD3oRZqW0JanEr4drJvfnlHQpeG10px1uU8cfCOQ=="], - "@effectstream/utils": ["@effectstream/utils@0.103.1", "", { "dependencies": { "@coderspirit/nominal": "^4.1.1", "@foxglove/crc": "^1.0.1", "@sinclair/typebox": "0.34.41", "@subsquid/ss58-codec": "^1.2.3", "abitype": "1.1.0", "bech32": "^2.0.0", "bs58": "^6.0.0", "bs58check": "^4.0.0", "buffer": "^6.0.3", "dotenv": "^16.4.7", "effection": "^3.5.0", "hi-base32": "^0.5.1", "js-base64": "^3.7.7", "js-sha512": "^0.9.0", "viem": "2.37.3" } }, "sha512-bCpy5PWWFKdp+eqMNYLymktm998TR5lkEDN4M7S7a3yjzlKGe+oKqyX0+nXk/P2CyRPW1VjHb6/NPqMSq4hCnA=="], + "@effectstream/utils": ["@effectstream/utils@0.200.2", "", { "dependencies": { "@coderspirit/nominal": "^4.1.1", "@foxglove/crc": "^1.0.1", "@sinclair/typebox": "0.34.41", "@subsquid/ss58-codec": "^1.2.3", "abitype": "1.1.0", "bech32": "^2.0.0", "bs58": "^6.0.0", "bs58check": "^4.0.0", "buffer": "^6.0.3", "dotenv": "^16.4.7", "effection": "^3.5.0", "hi-base32": "^0.5.1", "js-base64": "^3.7.7", "js-sha512": "^0.9.0", "viem": "2.37.3" } }, "sha512-UqmbwS8jxSZ3qCTfLvtyt2FZ0TDvEVEhb7th5UNo/NQAr0NFrSsE86rPSUCrS9NwYDZu7r5KN5cIMYRPims5EQ=="], - "@effectstream/wallets": ["@effectstream/wallets@0.103.1", "", { "dependencies": { "@aurowallet/mina-provider": "^1.0.12", "@effectstream/concise": "0.103.1", "@effectstream/crypto": "0.103.1", "@effectstream/event-client": "0.103.1", "@effectstream/utils": "0.103.1", "@metamask/providers": "^22.1.0", "@midnight-ntwrk/dapp-connector-api": "4.0.1", "@noble/curves": "^1.8.0", "@perawallet/connect": "^1.4.2", "@polkadot/api": "15.10.2", "@polkadot/extension-dapp": "^0.58.10", "@polkadot/extension-inject": "^0.58.10", "@polkadot/util": "^13.4.3", "@polkadot/util-crypto": "^13.4.3", "@solana/web3.js": "^1.95.0", "@types/semver": "7.7.1", "@wallet-standard/app": "^1.1.0", "assert-never": "^1.4.0", "avail-js-sdk": "^0.4.2", "bech32": "^2.0.0", "bs58": "^6.0.0", "ethers": "^6.15.0", "semver": "^7.7.3", "viem": "2.37.3", "web3": "^4.16.0", "web3-utils": "^4.3.3" }, "peerDependencies": { "@effectstream/midnight-contracts": "0.103.1", "@lucid-evolution/lucid": "^0.4.29", "@lucid-evolution/provider": "^0.1.90", "@lucid-evolution/utils": "^0.1.66", "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-hd": "^3.0.3", "@midnightntwrk/wallet-sdk-unshielded-wallet": "^3.1.0" }, "optionalPeers": ["@effectstream/midnight-contracts", "@lucid-evolution/lucid", "@lucid-evolution/provider", "@lucid-evolution/utils", "@midnight-ntwrk/ledger-v8", "@midnightntwrk/wallet-sdk-hd", "@midnightntwrk/wallet-sdk-unshielded-wallet"] }, "sha512-8597hYi2ufNMWCbafIGJkxwL9slvckd/0m6hZvFJoSv2biV+tPa3impBXww/HoUFRtWSae8dMI//NZ/P31RRsw=="], + "@effectstream/wallets": ["@effectstream/wallets@0.200.2", "", { "dependencies": { "@aurowallet/mina-provider": "^1.0.12", "@effectstream/concise": "0.200.2", "@effectstream/crypto": "0.200.2", "@effectstream/event-client": "0.200.2", "@effectstream/utils": "0.200.2", "@metamask/providers": "^22.1.0", "@midnight-ntwrk/dapp-connector-api": "4.0.1", "@noble/curves": "^1.8.0", "@perawallet/connect": "^1.4.2", "@polkadot/api": "15.10.2", "@polkadot/extension-dapp": "^0.58.10", "@polkadot/extension-inject": "^0.58.10", "@polkadot/util": "^13.4.3", "@polkadot/util-crypto": "^13.4.3", "@solana/web3.js": "^1.95.0", "@types/semver": "7.7.1", "@wallet-standard/app": "^1.1.0", "assert-never": "^1.4.0", "avail-js-sdk": "^0.4.2", "bech32": "^2.0.0", "bs58": "^6.0.0", "ethers": "^6.15.0", "semver": "^7.7.3", "viem": "2.37.3", "web3": "^4.16.0", "web3-utils": "^4.3.3" }, "peerDependencies": { "@effectstream/midnight-contracts": "0.200.2", "@lucid-evolution/lucid": "^0.4.29", "@lucid-evolution/provider": "^0.1.90", "@lucid-evolution/utils": "^0.1.66", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-hd": "3.1.0-beta.1", "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2" }, "optionalPeers": ["@effectstream/midnight-contracts", "@lucid-evolution/lucid", "@lucid-evolution/provider", "@lucid-evolution/utils", "@midnightntwrk/ledger-v9", "@midnightntwrk/wallet-sdk-hd", "@midnightntwrk/wallet-sdk-unshielded-wallet"] }, "sha512-bMq0w9FNhWk8iKQP1DxMuqF2ulseksAa+YEa7EYPkTqW83pQHB8z3iDGgzd2mULdohufXi/Sb7VWNsmamXlFCw=="], "@electric-sql/pglite": ["@electric-sql/pglite@0.3.16", "", {}, "sha512-mZkZfOd9OqTMHsK+1cje8OSzfAQcpD7JmILXTl5ahdempjUDdmg4euf1biDex5/LfQIDJ3gvCu6qDgdnDxfJmA=="], @@ -487,71 +489,69 @@ "@metamask/utils": ["@metamask/utils@11.11.0", "", { "dependencies": { "@ethereumjs/tx": "^4.2.0", "@metamask/superstruct": "^3.1.0", "@noble/hashes": "^1.3.1", "@scure/base": "^1.1.3", "@types/debug": "^4.1.7", "@types/lodash": "^4.17.20", "debug": "^4.3.4", "lodash": "^4.17.21", "pony-cause": "^2.1.10", "semver": "^7.5.4", "uuid": "^9.0.1" } }, "sha512-0nF2CWjWQr/m0Y2t2lJnBTU1/CZPPTvKvcESLplyWe/tyeb8zFOi/FeneDmaFnML6LYRIGZU6f+xR0jKAIUZfw=="], - "@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.0", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.15.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-vCLbndc3GtSTjZE30NtNqINOrrjZ2O/m8q4jCVeyx9t+rTLwwFqGXUOYobKbM34rwfnTz95ZAI6vVixYnarfrA=="], + "@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.5-rc.7", "", { "dependencies": { "@effect/platform": "^0.96.1", "@midnight-ntwrk/compact-runtime": "0.18.0-rc.1", "@midnight-ntwrk/platform-js": "^3.0.0", "@midnightntwrk/ledger-v9": "^1.0.0-rc.3", "@noble/hashes": "^2.2.0", "effect": "^3.21.4", "tslib": "^2.8.1" } }, "sha512-INcbIxsgK2NGm5J7pCHRsq1kxKQEXKQjFRgU84TsbP6GadqnWFg1hh0eJ/H2SS6AxAQGQjI0iasLodVTviKAIw=="], - "@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.15.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-6+odrxb83ZZwF29SqNBBgaOR3hf5ej4KZVGibDwdXta9+uiv6qYW0fMrsKP9S+c2AqvY+vEb5NEFFI54lA7G5A=="], + "@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.18.0-rc.1", "", { "dependencies": { "@midnightntwrk/onchain-runtime-v4": "^4.0.0-rc.3", "@noble/curves": "^2.2.0", "@noble/hashes": "^2.0.1", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-PXPjyiD8lrdM216eSpRGi1JSRes1fAwMImj1FWRML0BA3s6doOXFbX01A8suY/47xU/NCEKB9RKKU+vhW8Ec4A=="], "@midnight-ntwrk/dapp-connector-api": ["@midnight-ntwrk/dapp-connector-api@4.0.1", "", {}, "sha512-IstRo8xfmlJlGgUcAJeRzPUmGCp0/xZR3/bfTOk33MHrzbGmB79r/zYziGavcclo1pkkoBHAodX4vz3xgFxczw=="], - "@midnight-ntwrk/ledger-v8": ["@midnight-ntwrk/ledger-v8@8.1.0", "", {}, "sha512-rwOVP5kBwACpYmmY6+oLeaiM3e5gHscRMjbZUOntOC5QdtqLdpeep6eQW1OngI+sxjjdVoGg2eE16sLf+DAHmQ=="], + "@midnight-ntwrk/midnight-js-contracts": ["@midnight-ntwrk/midnight-js-contracts@5.0.0-beta.6", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6", "effect": "^3.20.0" } }, "sha512-z8feJLi/vDhPluYMH/0lrVQ003zMyT4PLB20/aCXVSLQy5sxvNCOiahKIU4+dasUM9vXtlVinDGYB6uFHVKbwg=="], - "@midnight-ntwrk/midnight-js-contracts": ["@midnight-ntwrk/midnight-js-contracts@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1" } }, "sha512-vHeKyaj9RXTx+Cep3YpIRgg2EWkzibO4gxI7k/rYpXmGXc3waetrR5sb9FPR7v9SUX00/zf/sYbLp1NZhwZbjg=="], + "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": ["@midnight-ntwrk/midnight-js-fetch-zk-config-provider@5.0.0-beta.6", "", { "dependencies": { "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6", "cross-fetch": "^4.1.0" } }, "sha512-KUoF7/MCCnxKpwhc1ww2fy2YiG84lpR7Osw1wUTiz984VCCyLsajyZiZzg2kIJehhx9O99oX0yuj1LIfp8RCGg=="], - "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": ["@midnight-ntwrk/midnight-js-fetch-zk-config-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "cross-fetch": "^4.1.0" } }, "sha512-d9vPAXjCvbe3KdPDBwp8Cp4HXwdo9jfCjeyJjJPfIDHCctXrIQ7btu+CqY1+bgV05FHVMOBLjJ9TS2tc2xdwrw=="], + "@midnight-ntwrk/midnight-js-http-client-proof-provider": ["@midnight-ntwrk/midnight-js-http-client-proof-provider@5.0.0-beta.6", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6", "cross-fetch": "^4.1.0", "fetch-retry": "^6.0.0" } }, "sha512-5PHS28YspoNw6D1C4QluolcsaSvsbcXsCv0CKKTesrxA7iwgT/5ZXFbFbengTLsgr3Qgd2IZdv2Ed09gApxBJA=="], - "@midnight-ntwrk/midnight-js-http-client-proof-provider": ["@midnight-ntwrk/midnight-js-http-client-proof-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "4.1.1", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "cross-fetch": "^4.1.0", "fetch-retry": "^6.0.0" } }, "sha512-Q2VNRTvuWlf3MbjV7C3asuLHeFwtZMdh6t5Z+u8c8RDpejW9GhKaSjlJ2zgJII5ckE8/cocPEDwt3GKBebGHWA=="], + "@midnight-ntwrk/midnight-js-indexer-public-data-provider": ["@midnight-ntwrk/midnight-js-indexer-public-data-provider@5.0.0-beta.6", "", { "dependencies": { "@apollo/client": "^4.2.3", "@graphql-typed-document-node/core": "^3.2.0", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6", "buffer": "^6.0.3", "cross-fetch": "^4.1.0", "graphql": "^17.0.1", "graphql-ws": "^6.0.8", "isomorphic-ws": "^5.0.0", "rxjs": "^7.8.2", "ws": "^8.20.0" } }, "sha512-4oIyzpiQi2W2NEL9WIhKqhzArFrexETZRN5WyGqnN/OIu9sP3Sy1DDUKqViMxl1xiAJwebzFTpJkSAyAT/l5eQ=="], - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": ["@midnight-ntwrk/midnight-js-indexer-public-data-provider@4.1.1", "", { "dependencies": { "@apollo/client": "^4.2.0", "@graphql-typed-document-node/core": "^3.2.0", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "buffer": "^6.0.3", "cross-fetch": "^4.1.0", "graphql": "^16.14.0", "graphql-ws": "^6.0.8", "isomorphic-ws": "^5.0.0", "rxjs": "^7.8.2", "ws": "^8.20.0" } }, "sha512-50CjiYqw/msRintyfkuNrJl1v4Zj+AaBFmV2uLjY/zpkPop4VBFH4QZSrtKsG1ljT9vzWsxU7Eo4Tn1tgKkPlA=="], + "@midnight-ntwrk/midnight-js-level-private-state-provider": ["@midnight-ntwrk/midnight-js-level-private-state-provider@5.0.0-beta.6", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6", "@noble/ciphers": "^2.2.0", "@noble/hashes": "^2.2.0", "abstract-level": "^3.1.1", "buffer": "^6.0.3", "level": "^10.0.0", "superjson": "^2.2.6" } }, "sha512-86FZwi36MpsWozUdhuoh06tddZSfRup6/bJRWco5fx9F5/ad2p2F0kEc8Shvtl6Lyp+gik3RJVXvdFKqSX91UA=="], - "@midnight-ntwrk/midnight-js-level-private-state-provider": ["@midnight-ntwrk/midnight-js-level-private-state-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "@noble/ciphers": "^2.2.0", "@noble/hashes": "^2.2.0", "abstract-level": "^3.1.1", "buffer": "^6.0.3", "level": "^10.0.0", "superjson": "^2.2.6" } }, "sha512-i+1lXJ4rcRGERnOPXHc3/Oh5ef7X/yb6p51bOAUjITazdPPcuU8qTeTeFgX+lPhWTGxROb9/pgrrVPH9G0FxSw=="], + "@midnight-ntwrk/midnight-js-network-id": ["@midnight-ntwrk/midnight-js-network-id@5.0.0-beta.6", "", {}, "sha512-XgvvAyHLovjdGLz96nc9K0s3LIYl5fxhXIYHF/X5VxlXHY5NZlLIjptXERcGcAQRTjZWhZbIXcUwZxXDpiSjZw=="], - "@midnight-ntwrk/midnight-js-network-id": ["@midnight-ntwrk/midnight-js-network-id@4.1.1", "", {}, "sha512-g49IBK0In1Jt2wKgi18rUvoy1ShGVrfb/VvgWALkc9Noc6+4MX5NTLVg5zqu+CyO2waIGb5lqDPnAhTD9wPAOQ=="], + "@midnight-ntwrk/midnight-js-node-zk-config-provider": ["@midnight-ntwrk/midnight-js-node-zk-config-provider@5.0.0-beta.6", "", { "dependencies": { "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6" } }, "sha512-opaiQo2MXRrBLMw8zol3DzqftCa3UhN+DZloZw/izAOTsbuqTX093ESKujuz/qcG/9+IbzUiDe59N1VCJy2GkQ=="], - "@midnight-ntwrk/midnight-js-node-zk-config-provider": ["@midnight-ntwrk/midnight-js-node-zk-config-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1" } }, "sha512-fbBhLBhU/BjrQRnRJCcmKkhYRLlSqJyXEhq72vMS6vlKXprmDmAjlVV62+bn1aiAlNY9FXl1rrrMUFKQUmuZFg=="], + "@midnight-ntwrk/midnight-js-protocol": ["@midnight-ntwrk/midnight-js-protocol@5.0.0-beta.6", "", { "dependencies": { "@midnight-ntwrk/compact-js": "2.5.5-rc.7", "@midnight-ntwrk/compact-runtime": "0.18.0-rc.1", "@midnight-ntwrk/platform-js": "3.0.0", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3" } }, "sha512-qqT4S7FqclCkwUx5ISVI3xwpE1iiZ2SU/5EjSiWMf9bUdi00RANyGv+ZRKkXEMOj9OigHhu4UXmIieWGAVEhgA=="], - "@midnight-ntwrk/midnight-js-protocol": ["@midnight-ntwrk/midnight-js-protocol@4.1.1", "", { "dependencies": { "@midnight-ntwrk/compact-js": "2.5.1", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "8.1.0", "@midnight-ntwrk/onchain-runtime-v3": "3.0.0", "@midnight-ntwrk/platform-js": "2.2.4" } }, "sha512-JH1010ir3YrawKsA4C08aIXWpFGHrCrAaBkZFbn+xh+iwOX5Ss0WU4//mDSEnHvQN0wD6GTc2JwUfKYFaS2CcA=="], + "@midnight-ntwrk/midnight-js-types": ["@midnight-ntwrk/midnight-js-types@5.0.0-beta.6", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.6", "effect": "^3.20.0", "pino": "^10.3.1", "rxjs": "^7.8.2" } }, "sha512-ea8SVd8etHO2fhwNwRre2TN0lKiwUnWoPQudTjWJMZlF19U4jHW7nRWCMPO7qYgKDAsVec7o16PUY3TR7twijA=="], - "@midnight-ntwrk/midnight-js-types": ["@midnight-ntwrk/midnight-js-types@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "effect": "^3.20.0", "pino": "^10.3.1", "rxjs": "^7.8.2" } }, "sha512-MPT7YToXN2EsDtOOVSJonYZSZ4eqmdVgftBfH56w+tmZM0sZt9u+Mq18uuBQl9ebpTXnp8o7WqeISbgPMxTBcQ=="], + "@midnight-ntwrk/midnight-js-utils": ["@midnight-ntwrk/midnight-js-utils@5.0.0-beta.6", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.6", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@noble/hashes": "^2.2.0" } }, "sha512-TFjYhlHg7gATk52juKyMUU8aKGjHc2L+B8S6N2lNW8t+/RcqxoIJDcXLded0Zpgcp0936TxaymFm3bR/Hdysjw=="], - "@midnight-ntwrk/midnight-js-utils": ["@midnight-ntwrk/midnight-js-utils@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/wallet-sdk-address-format": "^3.1.0" } }, "sha512-b65QADd2FaZbWXe9D3fe9mSGmPlP1DTRMGSruJqhl9fOTNxBhQIzIKs0j/eL9Kv77dVeGDYgQdbV+JkDj3j5Qg=="], + "@midnight-ntwrk/onchain-runtime": ["@midnightntwrk/onchain-runtime-v4@4.0.0-rc.3", "", {}, "sha512-LAf4g3vgwtPqActbi5RAoZcfYduqnFqtsHN+i1s/Mcb5vi2yMbPmpSOJ0YCCIGb2S/qY7G5tQARHVD0PJyHSNA=="], - "@midnight-ntwrk/onchain-runtime": ["@midnight-ntwrk/onchain-runtime-v3@3.0.0", "", {}, "sha512-HbFbUOsvgpEFy1OT0Ni2LMFk4jnMQS1em+H+Mof/B3DpnNKl0Lkx5QiulKOc6pyU4KPEagOqx4fYNyVXFwgZ7g=="], + "@midnight-ntwrk/platform-js": ["@midnight-ntwrk/platform-js@3.0.0", "", { "dependencies": { "@effect/platform": "^0.96.1", "effect": "^3.21.0", "tslib": "^2.8.1" } }, "sha512-cAOpmWURUELDKmcNf8/mZjDtxkqg6ShjV6v0KY7mmwMWkieDEERq/TRmK5cMJgUqMi6nCWjwLZqOmPB07B8Y4A=="], - "@midnight-ntwrk/onchain-runtime-v3": ["@midnight-ntwrk/onchain-runtime-v3@3.0.0", "", {}, "sha512-HbFbUOsvgpEFy1OT0Ni2LMFk4jnMQS1em+H+Mof/B3DpnNKl0Lkx5QiulKOc6pyU4KPEagOqx4fYNyVXFwgZ7g=="], + "@midnight-ntwrk/zkir-v2": ["@midnight-ntwrk/zkir-v2@2.1.0", "", {}, "sha512-UDMujjzCt0SA89uqOFWUL4LZTkxVAS8JjvOaYMAgxlSrWfN7m5th1R1qGlpDJuSH39rbWt6WwtuK3k08Mta6LA=="], - "@midnight-ntwrk/platform-js": ["@midnight-ntwrk/platform-js@2.2.4", "", { "dependencies": { "@effect/platform": "^0.95.0", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-6mrYKSSE8kPgn/5rQ2xofDJk1yAZZRdLOO6Yelweuh5GOnOGz7Qw4venDG/c4TRqtV9ouFp+F5j7ta8aprMinw=="], + "@midnightntwrk/ledger-v9": ["@midnightntwrk/ledger-v9@1.0.0-rc.3", "", {}, "sha512-i/Cl/d2XQ19gIm5SCruMHr+XiruxIn9Ec3i15DrZ/44Yggzu1u5+dG7QUx7Rw1htkgALXivEt7Kw4NzxPr4pBw=="], - "@midnight-ntwrk/wallet-sdk-abstractions": ["@midnight-ntwrk/wallet-sdk-abstractions@2.0.0", "", { "dependencies": { "effect": "^3.19.19" } }, "sha512-urmdK+lpw/gmX3mKjN3p9rVUn6Ba3TyHVEYN5oAXc0na4NkHsvvhgxcn9t4Oh9FYoYWuUA0xDiiLJsAkO05b/A=="], + "@midnightntwrk/onchain-runtime-v4": ["@midnightntwrk/onchain-runtime-v4@4.0.0-rc.3", "", {}, "sha512-LAf4g3vgwtPqActbi5RAoZcfYduqnFqtsHN+i1s/Mcb5vi2yMbPmpSOJ0YCCIGb2S/qY7G5tQARHVD0PJyHSNA=="], - "@midnight-ntwrk/wallet-sdk-address-format": ["@midnight-ntwrk/wallet-sdk-address-format@3.1.0", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.0.2", "@scure/base": "^2.0.0", "@subsquid/scale-codec": "^4.0.1" } }, "sha512-X/MQnbyQQ1SoFVJrxhczkHza1SMJghp3Eo49nXXnHZw2qKUUmpiNa8Hx3MYFq36NXi3m3gsMH7rW0bilMFvdhw=="], + "@midnightntwrk/wallet-sdk": ["@midnightntwrk/wallet-sdk@2.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-dust-wallet": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-facade": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-hd": "3.1.0-beta.1", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-node-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-prover-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-runtime": "1.0.6-beta.0", "@midnightntwrk/wallet-sdk-shielded": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-utilities": "1.2.0" } }, "sha512-XL0ZG7NuswssFnsJYlJzf7AcBizBF14Da67KhRegLFLuDb0OYj3ZQNNR/c3q+2KXoJ7TJ5s75hhPMsWfBZWakg=="], - "@midnight-ntwrk/zkir-v2": ["@midnight-ntwrk/zkir-v2@2.1.0", "", {}, "sha512-UDMujjzCt0SA89uqOFWUL4LZTkxVAS8JjvOaYMAgxlSrWfN7m5th1R1qGlpDJuSH39rbWt6WwtuK3k08Mta6LA=="], + "@midnightntwrk/wallet-sdk-abstractions": ["@midnightntwrk/wallet-sdk-abstractions@3.0.0-beta.0", "", { "dependencies": { "effect": "^3.19.19" } }, "sha512-9gzVaSd9dk1rymqd6CrqSSNGPoMtIbr24wVSwCfuB3L1y9wcNgzCw9l/RH744XJE+4RyDZODEIWo7WU5LCYvNw=="], - "@midnightntwrk/wallet-sdk-abstractions": ["@midnightntwrk/wallet-sdk-abstractions@2.1.0", "", { "dependencies": { "effect": "^3.19.19" } }, "sha512-56ErAc2eoJIICFXCe64x1uM0Xw6xfAoZwDqN1Nks5ZrQQvmPrNArS3s4SOEXhSR9X9TJ66T2KBx6M/jepyesfg=="], + "@midnightntwrk/wallet-sdk-address-format": ["@midnightntwrk/wallet-sdk-address-format@4.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@scure/base": "^2.0.0", "@subsquid/scale-codec": "^4.0.1" } }, "sha512-yK4jlntQ0Pgks8dKrPx6J7IMdzIznEYZ4yO9/msIJrn2IM4o1d8+MEh07OMFvZ9ui1YNQB272aUv5muopBCrdA=="], - "@midnightntwrk/wallet-sdk-address-format": ["@midnightntwrk/wallet-sdk-address-format@3.1.2", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@scure/base": "^2.0.0", "@subsquid/scale-codec": "^4.0.1" } }, "sha512-1eXt4eazKoT6C88/yy++fpxIBhF0o6iSqplc6DuCzNL0uePn7Opg0hiTIap2oEmC25XVXmzPhUa0xiWJzv3TIw=="], + "@midnightntwrk/wallet-sdk-capabilities": ["@midnightntwrk/wallet-sdk-capabilities@4.0.0-beta.2", "", { "dependencies": { "@midnight-ntwrk/zkir-v2": "^2.1.0", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-node-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-prover-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-QoeautcgfOgUMzbU5JAqhVP7n8K8fNdpQgoOwDwIdjJGpP+mH0f2/QtGia373OVTt1olf3cQN+7bLL9B0ihvlg=="], - "@midnightntwrk/wallet-sdk-capabilities": ["@midnightntwrk/wallet-sdk-capabilities@3.3.1", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnight-ntwrk/zkir-v2": "^2.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.2", "@midnightntwrk/wallet-sdk-node-client": "^1.1.2", "@midnightntwrk/wallet-sdk-prover-client": "^1.2.2", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-DpM9kkwFdAr/0Z0G62qL9U8hG5SOYMtwiPqbStvNhk97E2gGwmu5Yu0Zrdm9PDxCYjWgsudAdnVt0WxE8auUGA=="], + "@midnightntwrk/wallet-sdk-dust-wallet": ["@midnightntwrk/wallet-sdk-dust-wallet@5.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-runtime": "1.0.6-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-ILtpnmrx5mkMbDDAt1Az0qAdev3CtbTSsjk0PHh6sIowiaooQBSJ1GH043unYkpUj++OLlTcS2Dwf1VT2ya0oA=="], - "@midnightntwrk/wallet-sdk-dust-wallet": ["@midnightntwrk/wallet-sdk-dust-wallet@4.2.0", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "^3.3.1", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.3", "@midnightntwrk/wallet-sdk-runtime": "^1.0.5", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-L8BfDPfxh9AG/IPvlfqky8Y81Vg/9jYZ0w4UqYWxH5TNnzq6BwZHVGZTYc/iQLq02NwaGPtbrzePMXpH2gF0CA=="], + "@midnightntwrk/wallet-sdk-facade": ["@midnightntwrk/wallet-sdk-facade@5.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-dust-wallet": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-shielded": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-iDtxlilzBz2oPRJkGaktLS5hUkNXLwAZovYv99XLpoSg/+QYGpX3zWhFW5+OUV3kt9QYFLDSilRKdmtXa+WHJQ=="], - "@midnightntwrk/wallet-sdk-facade": ["@midnightntwrk/wallet-sdk-facade@4.1.0", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "^3.3.1", "@midnightntwrk/wallet-sdk-dust-wallet": "^4.2.0", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.3", "@midnightntwrk/wallet-sdk-shielded": "^3.0.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "^3.1.0", "rxjs": "^7.8.2" } }, "sha512-GH/iqokeXgazvyYnxVU6S2EWD/fJRxqkB+MNlsk04siyEKEj+jhFFyTsg+loHqGQ9P+9I9xA5k1+rFpTLhI5VA=="], + "@midnightntwrk/wallet-sdk-hd": ["@midnightntwrk/wallet-sdk-hd@3.1.0-beta.1", "", { "dependencies": { "@scure/bip32": "^2.0.1", "@scure/bip39": "^2.0.1" } }, "sha512-zQCucKVf7BXmTA6Clf5yHUsNspAiV0q+noEZVvHxd2yQTS6pXBmibUZ0wBWs1KG3V2tCfBllzoil7rS+L82IRQ=="], - "@midnightntwrk/wallet-sdk-hd": ["@midnightntwrk/wallet-sdk-hd@3.0.3", "", { "dependencies": { "@scure/bip32": "^2.0.1", "@scure/bip39": "^2.0.1" } }, "sha512-HDRKZdLvgNS9UkKw1W9V+XBCMpiwnBQl/4wyhu8KXy5sXgSRgN35qslrnzM9WtAQP6BzKek2vw7Dk/M8EZC5DA=="], + "@midnightntwrk/wallet-sdk-indexer-client": ["@midnightntwrk/wallet-sdk-indexer-client@1.3.0-beta.1", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "graphql": "^17.0.0", "graphql-http": "^1.22.4", "graphql-ws": "^6.0.7" } }, "sha512-Kn3RT3kpRlyTAmN9xhV98q8k8ZiLE40zOGte/++tHHE2k69jtCFNWHlKlJXTDpmFVBqGmJFb8Ih658n4xGgdJg=="], - "@midnightntwrk/wallet-sdk-indexer-client": ["@midnightntwrk/wallet-sdk-indexer-client@1.2.3", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "graphql": "^16.13.0", "graphql-http": "^1.22.4", "graphql-ws": "^6.0.7" } }, "sha512-iJ2FV33XxFqsoEYBICopsVDREoA8LkkTo+UKB1yx1GpAWe4B8I0TT+6Iyj0zX19LyEVm7dP5IpVROlOhWw9L3g=="], + "@midnightntwrk/wallet-sdk-node-client": ["@midnightntwrk/wallet-sdk-node-client@2.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "@polkadot/api": "^16.5.4", "@polkadot/types": "^16.5.4", "@polkadot/util": "^14.0.1", "@types/bn.js": "^5.2.0", "bn.js": "^5.2.3", "effect": "^3.19.19" }, "peerDependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-prover-client": "2.0.0-beta.2" }, "optionalPeers": ["@midnightntwrk/ledger-v9", "@midnightntwrk/wallet-sdk-prover-client"] }, "sha512-jW9Mu37a1B9kpUSVAg0PTu7agPza4ffUCLS8rCAWDbAfa65xoECFXUH2FzWR95uxVPes8XY7+onNeBQN7ffJ3w=="], - "@midnightntwrk/wallet-sdk-node-client": ["@midnightntwrk/wallet-sdk-node-client@1.1.3", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "@polkadot/api": "^16.5.4", "@polkadot/types": "^16.5.4", "@polkadot/util": "^14.0.1", "@types/bn.js": "^5.2.0", "bn.js": "^5.2.3", "effect": "^3.19.19" }, "peerDependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-prover-client": "^1.2.3" }, "optionalPeers": ["@midnight-ntwrk/ledger-v8", "@midnightntwrk/wallet-sdk-prover-client"] }, "sha512-ijf3EjDyuBxla2zl3yp/4CD5hsg10M61K8n033lRi7aC7kvUarbrIxUJQz4dgJQ0J73rGRDLyJi1D0II++FmVg=="], + "@midnightntwrk/wallet-sdk-prover-client": ["@midnightntwrk/wallet-sdk-prover-client@2.0.0-beta.2", "", { "dependencies": { "@effect/platform": "^0.96.0", "@midnight-ntwrk/zkir-v2": "^2.1.0", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "web-worker": "^1.5.0" } }, "sha512-hNHwsxRbg6HkkgTG4tE13ycKI1IwzMUVFLBgfLtt2/7TkbymyI9XkgollShNrcIQ5RzAg3WYX7d1sx9XIUxblA=="], - "@midnightntwrk/wallet-sdk-prover-client": ["@midnightntwrk/wallet-sdk-prover-client@1.2.3", "", { "dependencies": { "@effect/platform": "^0.96.0", "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnight-ntwrk/zkir-v2": "^2.1.0", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "web-worker": "^1.5.0" } }, "sha512-1gTpxRzFsXyZLcro0sBo7cgLXiHUbIgV/t/tTDDPwGeoPKX4pLP7go39XDxCtKhe1YjmKquVQ/Qtz7djpshgzw=="], + "@midnightntwrk/wallet-sdk-runtime": ["@midnightntwrk/wallet-sdk-runtime@1.0.6-beta.0", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-4Q/hTopMvLaiyncaIFiWQVPvXBHOg8tgPq4Aqx9ta+smuiPFbCAZRq7ezA7PMmKYAEqWeqaY93oK98NmeKUakg=="], - "@midnightntwrk/wallet-sdk-runtime": ["@midnightntwrk/wallet-sdk-runtime@1.0.5", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-0CHGeenRGcm1SommH/fDIXPU4jdee2giNOTDepyO6l46b3nqemhb/drv8RIrc4UIbxATgPJIcWsLrRX/fEu0mQ=="], + "@midnightntwrk/wallet-sdk-shielded": ["@midnightntwrk/wallet-sdk-shielded@4.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-runtime": "1.0.6-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-ecxajW6CS4+tNg0nMrofdwXzdhPCbpXADI1saMqP7bP9FJ3+BBIFfZtKIsHL+dN2RySa7+YOlFgeG4kzh/sIYA=="], - "@midnightntwrk/wallet-sdk-shielded": ["@midnightntwrk/wallet-sdk-shielded@3.0.2", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "^3.3.1", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.3", "@midnightntwrk/wallet-sdk-runtime": "^1.0.5", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-zzYDKrOXL+igNivpjgJKiHd8USETgAZyOLR2u8nDupHvIsmDlxScxzJO/gULr8Mon3SiCYUkElls5p4aFKz3vg=="], + "@midnightntwrk/wallet-sdk-unshielded-wallet": ["@midnightntwrk/wallet-sdk-unshielded-wallet@4.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-runtime": "1.0.6-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-SBhXPqzEWUybgYO5iLdcPwy1jy2gP4viqTiaWHWGwdkr6kTO1nsXLgq2ZCteWuypbRyMnKhP28z+uGzsrtaZcg=="], - "@midnightntwrk/wallet-sdk-unshielded-wallet": ["@midnightntwrk/wallet-sdk-unshielded-wallet@3.1.0", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "^3.3.1", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.2", "@midnightntwrk/wallet-sdk-runtime": "^1.0.4", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-nqeo1W+81n36T2VoF5/TJcaeXYh5+QE716VwMD/DjQ42+xvVLD2XlckRuUWPzYrVcMRvxaB+Up94K5WVCE+E+w=="], - - "@midnightntwrk/wallet-sdk-utilities": ["@midnightntwrk/wallet-sdk-utilities@1.2.1", "", { "dependencies": { "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-sQr6mMGMxrjMjVsPZJHkBwjHLavJpqrdmNddUqS8lQcjmrMI8+Npc3eaOu4mRnJF+kZPfxRIiYaGnj5ccuo8Bw=="], + "@midnightntwrk/wallet-sdk-utilities": ["@midnightntwrk/wallet-sdk-utilities@1.2.0", "", { "dependencies": { "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-Xh5uuCwg4FtAOQCYQ2wkBZtIEt0oCCt1mO3jHLnP+7cyMUQfMNbKwOVi85W3zq+84YFy5DVsN9xifFm75c1MQg=="], "@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw=="], @@ -811,7 +811,7 @@ "@polkadot/rpc-provider": ["@polkadot/rpc-provider@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types": "15.10.2", "@polkadot/types-support": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "@polkadot/x-fetch": "^13.4.4", "@polkadot/x-global": "^13.4.4", "@polkadot/x-ws": "^13.4.4", "eventemitter3": "^5.0.1", "mock-socket": "^9.3.1", "nock": "^13.5.5", "tslib": "^2.8.1" }, "optionalDependencies": { "@substrate/connect": "0.8.11" } }, "sha512-kqpPW8U0stVW+uOZP8g5d87Xb8rbXJR5PUub6xgGG6AOMbbvvuCU3GSohu/iozo4p9uD7TGH90jvbxj1rjJVMA=="], - "@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + "@polkadot/types": ["@polkadot/types@16.5.6", "", { "dependencies": { "@polkadot/keyring": "^14.0.3", "@polkadot/types-augment": "16.5.6", "@polkadot/types-codec": "16.5.6", "@polkadot/types-create": "16.5.6", "@polkadot/util": "^14.0.3", "@polkadot/util-crypto": "^14.0.3", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-X/sfMHJS4RkRhnsc4CQqzUy7BM/s2y71TrBFHPYAjs2q/rbZ/BwvBk70SrUiSa0+iRRn3RewbBZm+AB8CbkdKw=="], "@polkadot/types-augment": ["@polkadot/types-augment@15.10.2", "", { "dependencies": { "@polkadot/types": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/util": "^13.4.4", "tslib": "^2.8.1" } }, "sha512-X/xh+Dzud6OIyr7q8xttAwn+Fb5hKImIWEO1oG8WcInqv+P0vRyu7Tds+2ut9t64sJi3ydJ7I+T+WxZYheCU7g=="], @@ -949,7 +949,7 @@ "@sinclair/typebox": ["@sinclair/typebox@0.34.49", "", {}, "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A=="], - "@sindresorhus/is": ["@sindresorhus/is@4.6.0", "", {}, "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw=="], + "@sindresorhus/is": ["@sindresorhus/is@5.6.0", "", {}, "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g=="], "@solana/buffer-layout": ["@solana/buffer-layout@4.0.1", "", { "dependencies": { "buffer": "~6.0.3" } }, "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA=="], @@ -991,7 +991,11 @@ "@swc/helpers": ["@swc/helpers@0.5.23", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw=="], - "@szmarczak/http-timer": ["@szmarczak/http-timer@4.0.6", "", { "dependencies": { "defer-to-connect": "^2.0.0" } }, "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w=="], + "@szmarczak/http-timer": ["@szmarczak/http-timer@5.0.1", "", { "dependencies": { "defer-to-connect": "^2.0.1" } }, "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw=="], + + "@tokenizer/inflate": ["@tokenizer/inflate@0.2.7", "", { "dependencies": { "debug": "^4.4.0", "fflate": "^0.8.2", "token-types": "^6.0.0" } }, "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg=="], + + "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="], "@types/aws-lambda": ["@types/aws-lambda@8.10.143", "", {}, "sha512-u5vzlcR14ge/4pMTTMDQr3MF0wEe38B2F9o84uC4F43vN5DGTy63npRrB6jQhyt+C0lGv4ZfiRcRkqJoZuPnmg=="], @@ -1009,8 +1013,6 @@ "@types/bunyan": ["@types/bunyan@1.8.9", "", { "dependencies": { "@types/node": "*" } }, "sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw=="], - "@types/cacheable-request": ["@types/cacheable-request@6.0.3", "", { "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", "@types/node": "*", "@types/responselike": "^1.0.0" } }, "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw=="], - "@types/connect": ["@types/connect@3.4.36", "", { "dependencies": { "@types/node": "*" } }, "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w=="], "@types/debug": ["@types/debug@4.1.13", "", { "dependencies": { "@types/ms": "*" } }, "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw=="], @@ -1023,8 +1025,6 @@ "@types/json-bigint": ["@types/json-bigint@1.0.4", "", {}, "sha512-ydHooXLbOmxBbubnA7Eh+RpBzuaIiQjh8WGJYQB50JFGFrdxW7JzVlyEV7fAXw0T2sqJ1ysTneJbiyNLqZRAag=="], - "@types/keyv": ["@types/keyv@3.1.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg=="], - "@types/lodash": ["@types/lodash@4.17.24", "", {}, "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ=="], "@types/memcached": ["@types/memcached@2.2.10", "", { "dependencies": { "@types/node": "*" } }, "sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg=="], @@ -1047,8 +1047,6 @@ "@types/readable-stream": ["@types/readable-stream@4.0.23", "", { "dependencies": { "@types/node": "*" } }, "sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig=="], - "@types/responselike": ["@types/responselike@1.0.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw=="], - "@types/semver": ["@types/semver@7.7.1", "", {}, "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA=="], "@types/shimmer": ["@types/shimmer@1.2.0", "", {}, "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg=="], @@ -1109,11 +1107,25 @@ "@wry/trie": ["@wry/trie@0.5.0", "", { "dependencies": { "tslib": "^2.3.0" } }, "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA=="], - "@xhmikosr/bin-wrapper": ["@xhmikosr/bin-wrapper@5.0.1", "", { "dependencies": { "@xhmikosr/downloader": "^9.0.0", "bin-check": "^4.1.0", "bin-version-check": "^5.0.0", "os-filter-obj": "^2.0.0" } }, "sha512-p7GzmlOFIJERRJOsHPAMPDZ5nY7dZC+MLif+4iME8qAIK/mFwrbu61hFXf8MACm1fT/qLmWpOj3kZPFsEbzE4w=="], + "@xhmikosr/archive-type": ["@xhmikosr/archive-type@7.1.0", "", { "dependencies": { "file-type": "^20.5.0" } }, "sha512-xZEpnGplg1sNPyEgFh0zbHxqlw5dtYg6viplmWSxUj12+QjU9SKu3U/2G73a15pEjLaOqTefNSZ1fOPUOT4Xgg=="], - "@xhmikosr/decompress": ["@xhmikosr/decompress@5.0.0", "", { "dependencies": { "decompress-tar": "^4.1.1", "decompress-tarbz2": "^4.1.1", "decompress-targz": "^4.1.1", "decompress-unzip": "^4.0.1", "graceful-fs": "^4.2.10", "make-dir": "^3.1.0", "pify": "^5.0.0", "strip-dirs": "^3.0.0" } }, "sha512-2bcQXuPmtxlodAHdD0DVM/HTMwqaCiOAtqSBcqUhZVp+pGNCuwgaZfixlzFqb4h/o4ZVdMuFXfNdwkVBgzUxUA=="], + "@xhmikosr/bin-check": ["@xhmikosr/bin-check@7.1.0", "", { "dependencies": { "execa": "^5.1.1", "isexe": "^2.0.0" } }, "sha512-y1O95J4mnl+6MpVmKfMYXec17hMEwE/yeCglFNdx+QvLLtP0yN4rSYcbkXnth+lElBuKKek2NbvOfOGPpUXCvw=="], - "@xhmikosr/downloader": ["@xhmikosr/downloader@9.0.0", "", { "dependencies": { "@xhmikosr/decompress": "^5.0.0", "archive-type": "^4.0.0", "content-disposition": "^0.5.4", "ext-name": "^5.0.0", "file-type": "^12.4.2", "filenamify": "^5.1.1", "get-stream": "^6.0.1", "got": "^11.8.5", "p-event": "^5.0.1" } }, "sha512-HrYxZf63OJrH1WRl/H+2eJCoQA5VVRi6vYBHOUIHKx6N6nAFRuuUiomoAsA8ztj/onfLcfsy2JdQuMvSobHXsA=="], + "@xhmikosr/bin-wrapper": ["@xhmikosr/bin-wrapper@13.2.0", "", { "dependencies": { "@xhmikosr/bin-check": "^7.1.0", "@xhmikosr/downloader": "^15.2.0", "@xhmikosr/os-filter-obj": "^3.0.0", "bin-version-check": "^5.1.0" } }, "sha512-t9U9X0sDPRGDk5TGx4dv5xiOvniVJpXnfTuynVKwHgtib95NYEw4MkZdJqhoSiz820D9m0o6PCqOPMXz0N9fIw=="], + + "@xhmikosr/decompress": ["@xhmikosr/decompress@10.2.2", "", { "dependencies": { "@xhmikosr/decompress-tar": "^8.1.0", "@xhmikosr/decompress-tarbz2": "^8.1.0", "@xhmikosr/decompress-targz": "^8.1.0", "@xhmikosr/decompress-unzip": "^7.1.0", "graceful-fs": "^4.2.11", "strip-dirs": "^3.0.0" } }, "sha512-naYc2D/KCUDBx5VkohXp++TQB0IxLlUh8lbPX8DBTXB3HsDOsrp4pWP4V0cxBNEIhXEeN+Xma1hr9nuEGGW4TQ=="], + + "@xhmikosr/decompress-tar": ["@xhmikosr/decompress-tar@8.1.0", "", { "dependencies": { "file-type": "^20.5.0", "is-stream": "^2.0.1", "tar-stream": "^3.1.7" } }, "sha512-m0q8x6lwxenh1CrsTby0Jrjq4vzW/QU1OLhTHMQLEdHpmjR1lgahGz++seZI0bXF3XcZw3U3xHfqZSz+JPP2Gg=="], + + "@xhmikosr/decompress-tarbz2": ["@xhmikosr/decompress-tarbz2@8.1.0", "", { "dependencies": { "@xhmikosr/decompress-tar": "^8.0.1", "file-type": "^20.5.0", "is-stream": "^2.0.1", "seek-bzip": "^2.0.0", "unbzip2-stream": "^1.4.3" } }, "sha512-aCLfr3A/FWZnOu5eqnJfme1Z1aumai/WRw55pCvBP+hCGnTFrcpsuiaVN5zmWTR53a8umxncY2JuYsD42QQEbw=="], + + "@xhmikosr/decompress-targz": ["@xhmikosr/decompress-targz@8.1.0", "", { "dependencies": { "@xhmikosr/decompress-tar": "^8.0.1", "file-type": "^20.5.0", "is-stream": "^2.0.1" } }, "sha512-fhClQ2wTmzxzdz2OhSQNo9ExefrAagw93qaG1YggoIz/QpI7atSRa7eOHv4JZkpHWs91XNn8Hry3CwUlBQhfPA=="], + + "@xhmikosr/decompress-unzip": ["@xhmikosr/decompress-unzip@7.1.0", "", { "dependencies": { "file-type": "^20.5.0", "get-stream": "^6.0.1", "yauzl": "^3.1.2" } }, "sha512-oqTYAcObqTlg8owulxFTqiaJkfv2SHsxxxz9Wg4krJAHVzGWlZsU8tAB30R6ow+aHrfv4Kub6WQ8u04NWVPUpA=="], + + "@xhmikosr/downloader": ["@xhmikosr/downloader@15.2.0", "", { "dependencies": { "@xhmikosr/archive-type": "^7.1.0", "@xhmikosr/decompress": "^10.2.0", "content-disposition": "^0.5.4", "defaults": "^2.0.2", "ext-name": "^5.0.0", "file-type": "^20.5.0", "filenamify": "^6.0.0", "get-stream": "^6.0.1", "got": "^13.0.0" } }, "sha512-lAqbig3uRGTt0sHNIM4vUG9HoM+mRl8K28WuYxyXLCUT6pyzl4Y4i0LZ3jMEsCYZ6zjPZbO9XkG91OSTd4si7g=="], + + "@xhmikosr/os-filter-obj": ["@xhmikosr/os-filter-obj@3.0.0", "", { "dependencies": { "arch": "^3.0.0" } }, "sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A=="], "@zswap-da/batcher": ["@zswap-da/batcher@workspace:packages/batcher"], @@ -1173,9 +1185,7 @@ "antlr4ts": ["antlr4ts@0.5.0-alpha.4", "", {}, "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ=="], - "arch": ["arch@2.2.0", "", {}, "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ=="], - - "archive-type": ["archive-type@4.0.0", "", { "dependencies": { "file-type": "^4.2.0" } }, "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA=="], + "arch": ["arch@3.0.0", "", {}, "sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q=="], "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], @@ -1205,6 +1215,16 @@ "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "bare-events": ["bare-events@2.9.1", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg=="], + + "bare-fs": ["bare-fs@4.8.1", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-N1nnXdHZAOSstz0XiHikGS4HGMH4CnSwhqWdGQQMqqdvp4Jybm9sE3R1WVnpWVd4SFkc8ryPDBLViNLwiEqECg=="], + + "bare-path": ["bare-path@3.1.1", "", {}, "sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ=="], + + "bare-stream": ["bare-stream@2.13.3", "", { "dependencies": { "b4a": "^1.8.1", "streamx": "^2.25.0", "teex": "^1.0.1" }, "peerDependencies": { "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-abort-controller", "bare-buffer", "bare-events"] }, "sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ=="], + + "bare-url": ["bare-url@2.5.2", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-L13PCJzKG8RGvx8V1/DdMi12ERhC3tprr7/8a94BxpmnRsFqxh5XZNdhtMxu5HPkRshYOOWRGY8lDP7ZhpG9Cg=="], + "base-x": ["base-x@5.0.1", "", {}, "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg=="], "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], @@ -1215,8 +1235,6 @@ "bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="], - "bin-check": ["bin-check@4.1.0", "", { "dependencies": { "execa": "^0.7.0", "executable": "^4.1.0" } }, "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA=="], - "bin-version": ["bin-version@6.0.0", "", { "dependencies": { "execa": "^5.0.0", "find-versions": "^5.0.0" } }, "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw=="], "bin-version-check": ["bin-version-check@5.1.0", "", { "dependencies": { "bin-version": "^6.0.0", "semver": "^7.5.3", "semver-truncate": "^3.0.0" } }, "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g=="], @@ -1269,14 +1287,8 @@ "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], - "buffer-alloc": ["buffer-alloc@1.2.0", "", { "dependencies": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" } }, "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow=="], - - "buffer-alloc-unsafe": ["buffer-alloc-unsafe@1.1.0", "", {}, "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="], - "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], - "buffer-fill": ["buffer-fill@1.0.0", "", {}, "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="], - "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], "buffer-xor": ["buffer-xor@1.0.3", "", {}, "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ=="], @@ -1287,9 +1299,9 @@ "bun-types": ["bun-types@1.3.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-QXKeHLlOLqQX9LgYaHJfzdBaV21T63HhFJnvuRCcjZiaUDpbs5ED1MgxbMra71CsryN/1dAoXuJJJwIv/2drVA=="], - "cacheable-lookup": ["cacheable-lookup@5.0.4", "", {}, "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA=="], + "cacheable-lookup": ["cacheable-lookup@7.0.0", "", {}, "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w=="], - "cacheable-request": ["cacheable-request@7.0.4", "", { "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", "normalize-url": "^6.0.1", "responselike": "^2.0.0" } }, "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg=="], + "cacheable-request": ["cacheable-request@10.2.14", "", { "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", "http-cache-semantics": "^4.1.1", "keyv": "^4.5.3", "mimic-response": "^4.0.0", "normalize-url": "^8.0.0", "responselike": "^3.0.0" } }, "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ=="], "call-bind": ["call-bind@1.0.9", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" } }, "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ=="], @@ -1313,8 +1325,6 @@ "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], - "clone-response": ["clone-response@1.0.3", "", { "dependencies": { "mimic-response": "^1.0.0" } }, "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA=="], - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], @@ -1367,16 +1377,10 @@ "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="], - "decompress-tar": ["decompress-tar@4.1.1", "", { "dependencies": { "file-type": "^5.2.0", "is-stream": "^1.1.0", "tar-stream": "^1.5.2" } }, "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ=="], - - "decompress-tarbz2": ["decompress-tarbz2@4.1.1", "", { "dependencies": { "decompress-tar": "^4.1.0", "file-type": "^6.1.0", "is-stream": "^1.1.0", "seek-bzip": "^1.0.5", "unbzip2-stream": "^1.0.9" } }, "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A=="], - - "decompress-targz": ["decompress-targz@4.1.1", "", { "dependencies": { "decompress-tar": "^4.1.1", "file-type": "^5.2.0", "is-stream": "^1.1.0" } }, "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w=="], - - "decompress-unzip": ["decompress-unzip@4.0.1", "", { "dependencies": { "file-type": "^3.8.0", "get-stream": "^2.2.0", "pify": "^2.3.0", "yauzl": "^2.4.2" } }, "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw=="], - "deep-freeze-strict": ["deep-freeze-strict@1.1.1", "", {}, "sha512-QemROZMM2IvhAcCFvahdX2Vbm4S/txeq5rFYU9fh4mQP79WTMW5c/HkQ2ICl1zuzcDZdPZ6zarDxQeQMsVYoNA=="], + "defaults": ["defaults@2.0.2", "", {}, "sha512-cuIw0PImdp76AOfgkjbW4VhQODRmNNcKR73vdCH5cLd/ifj7aamfoXvYgfGkEAjNJZ3ozMIy9Gu2LutUkGEPbA=="], + "defer-to-connect": ["defer-to-connect@2.0.1", "", {}, "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg=="], "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], @@ -1409,7 +1413,7 @@ "ecpair": ["ecpair@2.1.0", "", { "dependencies": { "randombytes": "^2.1.0", "typeforce": "^1.18.0", "wif": "^2.0.6" } }, "sha512-cL/mh3MtJutFOvFc27GPZE2pWL3a3k4YvzUWEOvilnfZVlH3Jwgx/7d6tlD7/75tNk8TG2m+7Kgtz0SI1tWcqw=="], - "effect": ["effect@3.21.2", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-rXd2FGDM8KdjSIrc+mqEELo7ScW7xTVxEf1iInmPSpIde9/nyGuFM710cjTo7/EreGXiUX2MOonPpprbz2XHCg=="], + "effect": ["effect@3.22.1", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-TNoXushmPOBAjJlthF5d2QwnX2xBPEtcNJr5XKNKbRLbDvBcOYkXlYDfvGfSA0zriwLFuCll5MDtNMAdZL17PQ=="], "effection": ["effection@3.6.1", "", {}, "sha512-ogsuH/cgxfOOaVUf53pYqhPJth4WhPlva0hGb4Roh6cZhttMoanMqwADkDk9ych28lKuQgntpCszbFRyRFifqg=="], @@ -1439,8 +1443,6 @@ "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], - "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], - "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "ethereum-cryptography": ["ethereum-cryptography@2.2.1", "", { "dependencies": { "@noble/curves": "1.4.2", "@noble/hashes": "1.4.0", "@scure/bip32": "1.4.0", "@scure/bip39": "1.3.0" } }, "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg=="], @@ -1453,11 +1455,11 @@ "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], - "evp_bytestokey": ["evp_bytestokey@1.0.3", "", { "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" } }, "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA=="], + "events-universal": ["events-universal@1.0.1", "", { "dependencies": { "bare-events": "^2.7.0" } }, "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw=="], - "execa": ["execa@0.7.0", "", { "dependencies": { "cross-spawn": "^5.0.1", "get-stream": "^3.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" } }, "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw=="], + "evp_bytestokey": ["evp_bytestokey@1.0.3", "", { "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" } }, "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA=="], - "executable": ["executable@4.1.1", "", { "dependencies": { "pify": "^2.2.0" } }, "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg=="], + "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], "ext-list": ["ext-list@2.2.2", "", { "dependencies": { "mime-db": "^1.28.0" } }, "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA=="], @@ -1477,6 +1479,8 @@ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + "fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="], + "fast-json-stringify": ["fast-json-stringify@6.4.0", "", { "dependencies": { "@fastify/merge-json-schemas": "^0.2.0", "ajv": "^8.12.0", "ajv-formats": "^3.0.1", "fast-uri": "^3.0.0", "json-schema-ref-resolver": "^3.0.0", "rfdc": "^1.2.0" } }, "sha512-ibRCQ0GZKJIQ+P3Et1h0LhPgp3PMTYk0MH8O+kW3lNYsvmaQww5Nn3f1jf73Q0jR1Yz3a1CDP4/NZD3vOajWJQ=="], "fast-querystring": ["fast-querystring@1.1.2", "", { "dependencies": { "fast-decode-uri-component": "^1.0.1" } }, "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg=="], @@ -1503,11 +1507,13 @@ "fetch-retry": ["fetch-retry@6.0.0", "", {}, "sha512-BUFj1aMubgib37I3v4q78fYo63Po7t4HUPTpQ6/QE6yK6cIQrP+W43FYToeTEyg5m2Y7eFUtijUuAv/PDlWuag=="], - "file-type": ["file-type@12.4.2", "", {}, "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg=="], + "fflate": ["fflate@0.8.3", "", {}, "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA=="], + + "file-type": ["file-type@20.5.0", "", { "dependencies": { "@tokenizer/inflate": "^0.2.6", "strtok3": "^10.2.0", "token-types": "^6.0.0", "uint8array-extras": "^1.4.0" } }, "sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg=="], "filename-reserved-regex": ["filename-reserved-regex@3.0.0", "", {}, "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw=="], - "filenamify": ["filenamify@5.1.1", "", { "dependencies": { "filename-reserved-regex": "^3.0.0", "strip-outer": "^2.0.0", "trim-repeated": "^2.0.0" } }, "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA=="], + "filenamify": ["filenamify@6.0.0", "", { "dependencies": { "filename-reserved-regex": "^3.0.0" } }, "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ=="], "find-my-way": ["find-my-way@9.6.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-querystring": "^1.0.0", "safe-regex2": "^5.0.0" } }, "sha512-Zf4Xve4RymLl7NgaavNebZ01joJ8MfVerOG43wy7SHLO+r+K0C6d/SE0BiR7AV5V1VOCFlOP7ecdo+I4qmiHrQ=="], @@ -1525,6 +1531,8 @@ "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], + "form-data-encoder": ["form-data-encoder@2.1.4", "", {}, "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw=="], + "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], "forwarded-parse": ["forwarded-parse@2.1.2", "", {}, "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw=="], @@ -1533,8 +1541,6 @@ "fraction.js": ["fraction.js@4.0.1", "", {}, "sha512-NQYzZw8MUsxSZFQo6E8tKOlmSd/BlDTNOR4puXFSHSwFwNaIlmbortQy5PDN/KnVQ4xWG2NtN0J0hjPw7eE06A=="], - "fs-constants": ["fs-constants@1.0.0", "", {}, "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="], - "fs-extra": ["fs-extra@11.3.5", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg=="], "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], @@ -1563,11 +1569,11 @@ "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], - "got": ["got@11.8.6", "", { "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", "@types/cacheable-request": "^6.0.1", "@types/responselike": "^1.0.0", "cacheable-lookup": "^5.0.3", "cacheable-request": "^7.0.2", "decompress-response": "^6.0.0", "http2-wrapper": "^1.0.0-beta.5.2", "lowercase-keys": "^2.0.0", "p-cancelable": "^2.0.0", "responselike": "^2.0.0" } }, "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g=="], + "got": ["got@13.0.0", "", { "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", "cacheable-lookup": "^7.0.0", "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", "form-data-encoder": "^2.1.2", "get-stream": "^6.0.1", "http2-wrapper": "^2.1.10", "lowercase-keys": "^3.0.0", "p-cancelable": "^3.0.0", "responselike": "^3.0.0" } }, "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA=="], "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "graphql": ["graphql@16.14.0", "", {}, "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q=="], + "graphql": ["graphql@17.0.2", "", {}, "sha512-FRWbddMxfkjiB7z+aQDWIR+E34xo9I8c9mtK2RPv8PmMzKRvrdsreHL/Ui/TmwHJfhHChEtsFPyMHKI+xuarQQ=="], "graphql-http": ["graphql-http@1.22.4", "", { "peerDependencies": { "graphql": ">=0.11 <=16" } }, "sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA=="], @@ -1601,7 +1607,7 @@ "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], - "http2-wrapper": ["http2-wrapper@1.0.3", "", { "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" } }, "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg=="], + "http2-wrapper": ["http2-wrapper@2.2.1", "", { "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" } }, "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ=="], "https-browserify": ["https-browserify@1.0.0", "", {}, "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg=="], @@ -1741,7 +1747,7 @@ "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], - "lowercase-keys": ["lowercase-keys@2.0.0", "", {}, "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="], + "lowercase-keys": ["lowercase-keys@3.0.0", "", {}, "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ=="], "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], @@ -1749,8 +1755,6 @@ "main-event": ["main-event@1.0.4", "", {}, "sha512-sKazUjIy2Jalv5lkQ446iOcrx8Q7TkaCuk6xfnzg5uUqMusMLDMPmRDmSNE2kjSVpSTJo4j1bQZusS+Ib7Bvrg=="], - "make-dir": ["make-dir@3.1.0", "", { "dependencies": { "semver": "^6.0.0" } }, "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw=="], - "material-chalk": ["material-chalk@1.1.1", "", { "dependencies": { "@material/material-color-utilities": "^0.3.0" }, "peerDependencies": { "chalk": "^5.3.0" }, "optionalPeers": ["chalk"] }, "sha512-GDO/69mS1vLQfX9T4THPCJb1vu0renYxfn4rtYDzldrKsXuXSZOin5VZTTlO5U4dDMRnXqPp0WdY320v6iwcdw=="], "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], @@ -1773,7 +1777,7 @@ "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], - "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], + "mimic-response": ["mimic-response@4.0.0", "", {}, "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg=="], "mina-signer": ["mina-signer@3.1.0", "", { "dependencies": { "blakejs": "^1.2.1", "js-sha256": "^0.9.0" } }, "sha512-YG6AeukSglI+A9ZH0qCxjDwiE0jLpP84z18ulHr+DWHvezZ0rJFOsT04YgurErOzFYHsToEtWr1zO7Ufc0zXPg=="], @@ -1837,9 +1841,9 @@ "node-stdlib-browser": ["node-stdlib-browser@1.3.1", "", { "dependencies": { "assert": "^2.0.0", "browser-resolve": "^2.0.0", "browserify-zlib": "^0.2.0", "buffer": "^5.7.1", "console-browserify": "^1.1.0", "constants-browserify": "^1.0.0", "create-require": "^1.1.1", "crypto-browserify": "^3.12.1", "domain-browser": "4.22.0", "events": "^3.0.0", "https-browserify": "^1.0.0", "isomorphic-timers-promises": "^1.0.1", "os-browserify": "^0.3.0", "path-browserify": "^1.0.1", "pkg-dir": "^5.0.0", "process": "^0.11.10", "punycode": "^1.4.1", "querystring-es3": "^0.2.1", "readable-stream": "^3.6.0", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", "string_decoder": "^1.0.0", "timers-browserify": "^2.0.4", "tty-browserify": "0.0.1", "url": "^0.11.4", "util": "^0.12.4", "vm-browserify": "^1.0.1" } }, "sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw=="], - "normalize-url": ["normalize-url@6.1.0", "", {}, "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="], + "normalize-url": ["normalize-url@8.1.1", "", {}, "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ=="], - "npm-run-path": ["npm-run-path@2.0.2", "", { "dependencies": { "path-key": "^2.0.0" } }, "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw=="], + "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], "ntp-packet-parser": ["ntp-packet-parser@0.5.0", "", {}, "sha512-W18iLyaV17jH4inpvSu2gPep2f1Gs3oABra5NXXzG7MXhLcdHqJrJBO23bTMLkRf4HP9SWHL7FEwwtUf6R1q+g=="], @@ -1849,8 +1853,6 @@ "nunjucks": ["nunjucks@3.2.4", "", { "dependencies": { "a-sync-waterfall": "^1.0.0", "asap": "^2.0.3", "commander": "^5.1.0" }, "peerDependencies": { "chokidar": "^3.3.0" }, "optionalPeers": ["chokidar"], "bin": { "nunjucks-precompile": "bin/precompile" } }, "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ=="], - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], - "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], "object-is": ["object-is@1.1.6", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" } }, "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q=="], @@ -1871,15 +1873,9 @@ "os-browserify": ["os-browserify@0.3.0", "", {}, "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A=="], - "os-filter-obj": ["os-filter-obj@2.0.0", "", { "dependencies": { "arch": "^2.1.0" } }, "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg=="], - "ox": ["ox@0.9.3", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.0.9", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg=="], - "p-cancelable": ["p-cancelable@2.1.1", "", {}, "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="], - - "p-event": ["p-event@5.0.1", "", { "dependencies": { "p-timeout": "^5.0.2" } }, "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ=="], - - "p-finally": ["p-finally@1.0.0", "", {}, "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow=="], + "p-cancelable": ["p-cancelable@3.0.0", "", {}, "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw=="], "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], @@ -1887,7 +1883,7 @@ "p-queue": ["p-queue@9.2.0", "", { "dependencies": { "eventemitter3": "^5.0.4", "p-timeout": "^7.0.0" } }, "sha512-dWgLE8AH0HjQ9fe74pUkKkvzzYT18Inp4zra3lKHnnwqGvcfcUBrvF2EAVX+envufDNBOzpPq/IBUONDbI7+3g=="], - "p-timeout": ["p-timeout@5.1.0", "", {}, "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew=="], + "p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], @@ -1935,12 +1931,6 @@ "picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], - "pify": ["pify@5.0.0", "", {}, "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA=="], - - "pinkie": ["pinkie@2.0.4", "", {}, "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg=="], - - "pinkie-promise": ["pinkie-promise@2.0.1", "", { "dependencies": { "pinkie": "^2.0.0" } }, "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw=="], - "pino": ["pino@10.3.1", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^3.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^4.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg=="], "pino-abstract-transport": ["pino-abstract-transport@3.0.0", "", { "dependencies": { "split2": "^4.0.0" } }, "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg=="], @@ -1979,8 +1969,6 @@ "proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="], - "pseudomap": ["pseudomap@1.0.2", "", {}, "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="], - "public-encrypt": ["public-encrypt@4.0.3", "", { "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" } }, "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q=="], "pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="], @@ -2029,7 +2017,7 @@ "resolve-alpn": ["resolve-alpn@1.2.1", "", {}, "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="], - "responselike": ["responselike@2.0.1", "", { "dependencies": { "lowercase-keys": "^2.0.0" } }, "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw=="], + "responselike": ["responselike@3.0.0", "", { "dependencies": { "lowercase-keys": "^3.0.0" } }, "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg=="], "ret": ["ret@0.5.0", "", {}, "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw=="], @@ -2059,7 +2047,7 @@ "secure-json-parse": ["secure-json-parse@4.1.0", "", {}, "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA=="], - "seek-bzip": ["seek-bzip@1.0.6", "", { "dependencies": { "commander": "^2.8.1" }, "bin": { "seek-bunzip": "bin/seek-bunzip", "seek-table": "bin/seek-bzip-table" } }, "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ=="], + "seek-bzip": ["seek-bzip@2.0.0", "", { "dependencies": { "commander": "^6.0.0" }, "bin": { "seek-bunzip": "bin/seek-bunzip", "seek-table": "bin/seek-bzip-table" } }, "sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg=="], "semver": ["semver@7.8.0", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA=="], @@ -2125,6 +2113,8 @@ "stream-json": ["stream-json@1.9.1", "", { "dependencies": { "stream-chain": "^2.2.5" } }, "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw=="], + "streamx": ["streamx@2.28.1", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA=="], + "strict-uri-encode": ["strict-uri-encode@2.0.0", "", {}, "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ=="], "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -2135,11 +2125,9 @@ "strip-dirs": ["strip-dirs@3.0.0", "", { "dependencies": { "inspect-with-kind": "^1.0.5", "is-plain-obj": "^1.1.0" } }, "sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ=="], - "strip-eof": ["strip-eof@1.0.0", "", {}, "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q=="], - "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], - "strip-outer": ["strip-outer@2.0.0", "", {}, "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg=="], + "strtok3": ["strtok3@10.3.5", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA=="], "superjson": ["superjson@2.2.6", "", { "dependencies": { "copy-anything": "^4" } }, "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA=="], @@ -2149,7 +2137,11 @@ "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - "tar-stream": ["tar-stream@1.6.2", "", { "dependencies": { "bl": "^1.0.0", "buffer-alloc": "^1.2.0", "end-of-stream": "^1.0.0", "fs-constants": "^1.0.0", "readable-stream": "^2.3.0", "to-buffer": "^1.1.1", "xtend": "^4.0.0" } }, "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A=="], + "tar-stream": ["tar-stream@3.2.1", "", { "dependencies": { "b4a": "^1.6.4", "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-nqsEO8zLZJvrOMdEwkA0QdCLFbetHMn95Zqu4fKwX+hkaTWJPZZOrxx/PwtxoK0MMGQmBQNRW3CPs8IFYQz4cQ=="], + + "teex": ["teex@1.0.1", "", { "dependencies": { "streamx": "^2.12.5" } }, "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg=="], + + "text-decoder": ["text-decoder@1.2.7", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ=="], "text-encoding-utf-8": ["text-encoding-utf-8@1.0.2", "", {}, "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg=="], @@ -2171,9 +2163,9 @@ "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], - "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + "token-types": ["token-types@6.1.2", "", { "dependencies": { "@borewit/text-codec": "^0.2.1", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww=="], - "trim-repeated": ["trim-repeated@2.0.0", "", { "dependencies": { "escape-string-regexp": "^5.0.0" } }, "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg=="], + "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], "ts-custom-error": ["ts-custom-error@3.3.1", "", {}, "sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A=="], @@ -2209,6 +2201,8 @@ "uint8-varint": ["uint8-varint@2.0.5", "", { "dependencies": { "uint8arraylist": "^2.0.0", "uint8arrays": "^5.0.0" } }, "sha512-jeFLbL/x30wBRnWjKE1qVBXeumG46r7XmYkpis955lTQ+blccGKFrOsSMHlxePwYB1pI7L8YPHz1t4jLxEs3nA=="], + "uint8array-extras": ["uint8array-extras@1.5.0", "", {}, "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A=="], + "uint8array-tools": ["uint8array-tools@0.0.7", "", {}, "sha512-vrrNZJiusLWoFWBqz5Y5KMCgP9W9hnjZHzZiZRT8oNAkq3d5Z5Oe76jAvVVSRh4U8GGR90N2X1dWtrhvx6L8UQ=="], "uint8arraylist": ["uint8arraylist@2.4.9", "", { "dependencies": { "uint8arrays": "^5.0.1" } }, "sha512-KxWjyEFzchzik3aoQlK66oaoxIReoMo5bQRm1fcjBUZvE8xv/tyR3CTKhjh6K/faV8VaF6hd5pjr45CzbwuwkA=="], @@ -2359,10 +2353,6 @@ "@dcspark/carp-client/axios": ["axios@0.27.2", "", { "dependencies": { "follow-redirects": "^1.14.9", "form-data": "^4.0.0" } }, "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ=="], - "@effectstream/batcher-sdk/@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.1", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-UO0+tDiRadYFO2kaUu9PIhAOISvDKvmiyh9vSOyKEZLj3AUAY1qmmHm/oQrzPqrkiWHO0Rnln/j/zZ5dvc5vxg=="], - - "@effectstream/batcher-sdk/@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.16.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-UR8+MI5zol+gkne17ZZru8xmZNf11xMgQJkiLT9KWsF+QD8Wuz1WONaqQLL0RAZ2aN2XlRsBFd0ViKDVh8prFw=="], - "@effectstream/batcher-sdk/@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], "@effectstream/batcher-sdk/@sinclair/typebox": ["@sinclair/typebox@0.34.41", "", {}, "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g=="], @@ -2381,10 +2371,10 @@ "@effectstream/log/effection": ["effection@3.5.0", "", {}, "sha512-PcKRGoP68CM3c/DODTc38xp0rIjfREH7/fBGu4tiHU/aPb/PvSxv3tvWaJt6JxpxqT0jIXvcOyn+yjk46KcNXw=="], - "@effectstream/midnight-contracts/@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.1", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-UO0+tDiRadYFO2kaUu9PIhAOISvDKvmiyh9vSOyKEZLj3AUAY1qmmHm/oQrzPqrkiWHO0Rnln/j/zZ5dvc5vxg=="], - "@effectstream/runtime/@sinclair/typebox": ["@sinclair/typebox@0.34.41", "", {}, "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g=="], + "@effectstream/sm/@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], + "@effectstream/sm/@sinclair/typebox": ["@sinclair/typebox@0.34.41", "", {}, "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g=="], "@effectstream/sync/@sinclair/typebox": ["@sinclair/typebox@0.34.41", "", {}, "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g=="], @@ -2403,19 +2393,19 @@ "@metamask/utils/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], - "@midnight-ntwrk/midnight-js-level-private-state-provider/@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], + "@midnight-ntwrk/compact-js/@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], - "@midnight-ntwrk/midnight-js-protocol/@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.1", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-UO0+tDiRadYFO2kaUu9PIhAOISvDKvmiyh9vSOyKEZLj3AUAY1qmmHm/oQrzPqrkiWHO0Rnln/j/zZ5dvc5vxg=="], + "@midnight-ntwrk/compact-runtime/@noble/curves": ["@noble/curves@2.2.0", "", { "dependencies": { "@noble/hashes": "2.2.0" } }, "sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ=="], - "@midnight-ntwrk/midnight-js-protocol/@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.16.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-UR8+MI5zol+gkne17ZZru8xmZNf11xMgQJkiLT9KWsF+QD8Wuz1WONaqQLL0RAZ2aN2XlRsBFd0ViKDVh8prFw=="], + "@midnight-ntwrk/compact-runtime/@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], - "@midnightntwrk/wallet-sdk-node-client/@polkadot/api": ["@polkadot/api@16.5.6", "", { "dependencies": { "@polkadot/api-augment": "16.5.6", "@polkadot/api-base": "16.5.6", "@polkadot/api-derive": "16.5.6", "@polkadot/keyring": "^14.0.3", "@polkadot/rpc-augment": "16.5.6", "@polkadot/rpc-core": "16.5.6", "@polkadot/rpc-provider": "16.5.6", "@polkadot/types": "16.5.6", "@polkadot/types-augment": "16.5.6", "@polkadot/types-codec": "16.5.6", "@polkadot/types-create": "16.5.6", "@polkadot/types-known": "16.5.6", "@polkadot/util": "^14.0.3", "@polkadot/util-crypto": "^14.0.3", "eventemitter3": "^5.0.1", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-5h/X3pY8WpqGk4XTaiIUjKD6Pnk8k4bJ6EIwPKLP8/kfFWKSOenpN6ggZxANr+Qj+RgXrp4TxJVcuhXSiBh9Sg=="], + "@midnight-ntwrk/midnight-js-level-private-state-provider/@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types": ["@polkadot/types@16.5.6", "", { "dependencies": { "@polkadot/keyring": "^14.0.3", "@polkadot/types-augment": "16.5.6", "@polkadot/types-codec": "16.5.6", "@polkadot/types-create": "16.5.6", "@polkadot/util": "^14.0.3", "@polkadot/util-crypto": "^14.0.3", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-X/sfMHJS4RkRhnsc4CQqzUy7BM/s2y71TrBFHPYAjs2q/rbZ/BwvBk70SrUiSa0+iRRn3RewbBZm+AB8CbkdKw=="], + "@midnight-ntwrk/midnight-js-utils/@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], - "@midnightntwrk/wallet-sdk-node-client/@polkadot/util": ["@polkadot/util@14.0.3", "", { "dependencies": { "@polkadot/x-bigint": "14.0.3", "@polkadot/x-global": "14.0.3", "@polkadot/x-textdecoder": "14.0.3", "@polkadot/x-textencoder": "14.0.3", "@types/bn.js": "^5.1.6", "bn.js": "^5.2.1", "tslib": "^2.8.0" } }, "sha512-mg1NR7ixHlNiz2zbvdcdy1OXZmca2tVA4DpewGpY/qFkW/gq9HdDrHLu7g0k90QnunDcFW4emb7NB60sGJQ0bw=="], + "@midnightntwrk/wallet-sdk-node-client/@polkadot/api": ["@polkadot/api@16.5.6", "", { "dependencies": { "@polkadot/api-augment": "16.5.6", "@polkadot/api-base": "16.5.6", "@polkadot/api-derive": "16.5.6", "@polkadot/keyring": "^14.0.3", "@polkadot/rpc-augment": "16.5.6", "@polkadot/rpc-core": "16.5.6", "@polkadot/rpc-provider": "16.5.6", "@polkadot/types": "16.5.6", "@polkadot/types-augment": "16.5.6", "@polkadot/types-codec": "16.5.6", "@polkadot/types-create": "16.5.6", "@polkadot/types-known": "16.5.6", "@polkadot/util": "^14.0.3", "@polkadot/util-crypto": "^14.0.3", "eventemitter3": "^5.0.1", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-5h/X3pY8WpqGk4XTaiIUjKD6Pnk8k4bJ6EIwPKLP8/kfFWKSOenpN6ggZxANr+Qj+RgXrp4TxJVcuhXSiBh9Sg=="], - "@midnightntwrk/wallet-sdk-prover-client/@effect/platform": ["@effect/platform@0.96.1", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.10", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.21.2" } }, "sha512-cjB1QZZYEP8JXCFNGvBLVi0T6YUBQTmOVEUA3SDbiQ6RUO+p6CE3eyD2vMWmrz5nE8yY5QSAuOV9v0boEcUv+A=="], + "@midnightntwrk/wallet-sdk-node-client/@polkadot/util": ["@polkadot/util@14.0.3", "", { "dependencies": { "@polkadot/x-bigint": "14.0.3", "@polkadot/x-global": "14.0.3", "@polkadot/x-textdecoder": "14.0.3", "@polkadot/x-textencoder": "14.0.3", "@types/bn.js": "^5.1.6", "bn.js": "^5.2.1", "tslib": "^2.8.0" } }, "sha512-mg1NR7ixHlNiz2zbvdcdy1OXZmca2tVA4DpewGpY/qFkW/gq9HdDrHLu7g0k90QnunDcFW4emb7NB60sGJQ0bw=="], "@opentelemetry/instrumentation-pg/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], @@ -2423,10 +2413,42 @@ "@polkadot-api/substrate-bindings/@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], + "@polkadot/api/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + "@polkadot/api/eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], + "@polkadot/api-augment/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + + "@polkadot/api-base/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + + "@polkadot/api-derive/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + + "@polkadot/extension-inject/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + + "@polkadot/rpc-augment/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + + "@polkadot/rpc-core/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + + "@polkadot/rpc-provider/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + "@polkadot/rpc-provider/eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], + "@polkadot/types/@polkadot/keyring": ["@polkadot/keyring@14.0.3", "", { "dependencies": { "@polkadot/util": "14.0.3", "@polkadot/util-crypto": "14.0.3", "tslib": "^2.8.0" } }, "sha512-ozp1dQwaHCjgX/fpTTORmHjxdUNQnyiTVJszpzUaUpvtH/IGZhSU/mSHXMqNETS/g57vQa7NatIDcWfyR9abyA=="], + + "@polkadot/types/@polkadot/types-augment": ["@polkadot/types-augment@16.5.6", "", { "dependencies": { "@polkadot/types": "16.5.6", "@polkadot/types-codec": "16.5.6", "@polkadot/util": "^14.0.3", "tslib": "^2.8.1" } }, "sha512-QN5UrluUZCVgknUDW0gps/FRQ13Qgm24w53pCd2HgD0nmTtXDt9D4psjWwx5JkGTkUAvpzFWwN41bkxAeCiV6g=="], + + "@polkadot/types/@polkadot/types-codec": ["@polkadot/types-codec@16.5.6", "", { "dependencies": { "@polkadot/util": "^14.0.3", "@polkadot/x-bigint": "^14.0.3", "tslib": "^2.8.1" } }, "sha512-3tzUv1LZOL97IlQmko4dqbfRC0cg9IQ2QAHRVoDIWsXrVovp1V3kPdP0o6e3I8T2XB9IlbabK91v+ZiIxhGMZw=="], + + "@polkadot/types/@polkadot/types-create": ["@polkadot/types-create@16.5.6", "", { "dependencies": { "@polkadot/types-codec": "16.5.6", "@polkadot/util": "^14.0.3", "tslib": "^2.8.1" } }, "sha512-g7g3hrjpz4KgqQqei9PU0JY9fsFHBmThWALZk5pWB32vyDyDcXZiyhH3agDhqfmzQiolTW2FuvcNJxgS634J1w=="], + + "@polkadot/types/@polkadot/util": ["@polkadot/util@14.0.3", "", { "dependencies": { "@polkadot/x-bigint": "14.0.3", "@polkadot/x-global": "14.0.3", "@polkadot/x-textdecoder": "14.0.3", "@polkadot/x-textencoder": "14.0.3", "@types/bn.js": "^5.1.6", "bn.js": "^5.2.1", "tslib": "^2.8.0" } }, "sha512-mg1NR7ixHlNiz2zbvdcdy1OXZmca2tVA4DpewGpY/qFkW/gq9HdDrHLu7g0k90QnunDcFW4emb7NB60sGJQ0bw=="], + + "@polkadot/types/@polkadot/util-crypto": ["@polkadot/util-crypto@14.0.3", "", { "dependencies": { "@noble/curves": "^1.3.0", "@noble/hashes": "^1.3.3", "@polkadot/networks": "14.0.3", "@polkadot/util": "14.0.3", "@polkadot/wasm-crypto": "^7.5.3", "@polkadot/wasm-util": "^7.5.3", "@polkadot/x-bigint": "14.0.3", "@polkadot/x-randomvalues": "14.0.3", "@scure/base": "^1.1.7", "@scure/sr25519": "^0.2.0", "tslib": "^2.8.0" } }, "sha512-V00BI6XnZLCkrAmV8uN0eSB6fy48CkxdDZT29cgSMSwHPtY6oKUNgd1ST07PGCL5x8XflwjoA7CTlhdbp1Y9gw=="], + + "@polkadot/types-augment/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + + "@polkadot/types-known/@polkadot/types": ["@polkadot/types@15.10.2", "", { "dependencies": { "@polkadot/keyring": "^13.4.4", "@polkadot/types-augment": "15.10.2", "@polkadot/types-codec": "15.10.2", "@polkadot/types-create": "15.10.2", "@polkadot/util": "^13.4.4", "@polkadot/util-crypto": "^13.4.4", "rxjs": "^7.8.1", "tslib": "^2.8.1" } }, "sha512-/wDwKdDijxSXyNk5YezhVitdFxoQaTSSG9KXa7dEWujtmS/51UHmt9+P3W8b8D8kKaCvumahf/ww3GJI6s0Eqw=="], + "@polkadot/util-crypto/@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], "@polkadot/x-fetch/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], @@ -2477,26 +2499,18 @@ "@walletconnect/utils/js-sha3": ["js-sha3@0.8.0", "", {}, "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="], - "@xhmikosr/downloader/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], - - "@zswap-da/contracts-midnight/@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.1", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-UO0+tDiRadYFO2kaUu9PIhAOISvDKvmiyh9vSOyKEZLj3AUAY1qmmHm/oQrzPqrkiWHO0Rnln/j/zZ5dvc5vxg=="], + "@xhmikosr/decompress-unzip/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], - "@zswap-da/docs-playground/@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.1", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-UO0+tDiRadYFO2kaUu9PIhAOISvDKvmiyh9vSOyKEZLj3AUAY1qmmHm/oQrzPqrkiWHO0Rnln/j/zZ5dvc5vxg=="], + "@xhmikosr/decompress-unzip/yauzl": ["yauzl@3.4.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw=="], - "@zswap-da/node/@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.1", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-UO0+tDiRadYFO2kaUu9PIhAOISvDKvmiyh9vSOyKEZLj3AUAY1qmmHm/oQrzPqrkiWHO0Rnln/j/zZ5dvc5vxg=="], - - "@zswap-da/tests/@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.1", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-UO0+tDiRadYFO2kaUu9PIhAOISvDKvmiyh9vSOyKEZLj3AUAY1qmmHm/oQrzPqrkiWHO0Rnln/j/zZ5dvc5vxg=="], + "@xhmikosr/downloader/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], "algosdk/js-sha3": ["js-sha3@0.8.0", "", {}, "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="], "algosdk/js-sha512": ["js-sha512@0.8.0", "", {}, "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ=="], - "archive-type/file-type": ["file-type@4.4.0", "", {}, "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ=="], - "asn1.js/bn.js": ["bn.js@4.12.3", "", {}, "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g=="], - "bin-version/execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], - "bitcoinjs-lib/bs58check": ["bs58check@3.0.1", "", { "dependencies": { "@noble/hashes": "^1.2.0", "bs58": "^5.0.0" } }, "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ=="], "bl/readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], @@ -2505,27 +2519,11 @@ "browserify-sign/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], - "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="], + "cacheable-request/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], "create-ecdh/bn.js": ["bn.js@4.12.3", "", {}, "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g=="], - "decompress-tar/file-type": ["file-type@5.2.0", "", {}, "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ=="], - - "decompress-tar/is-stream": ["is-stream@1.1.0", "", {}, "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="], - - "decompress-tarbz2/file-type": ["file-type@6.2.0", "", {}, "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg=="], - - "decompress-tarbz2/is-stream": ["is-stream@1.1.0", "", {}, "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="], - - "decompress-targz/file-type": ["file-type@5.2.0", "", {}, "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ=="], - - "decompress-targz/is-stream": ["is-stream@1.1.0", "", {}, "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="], - - "decompress-unzip/file-type": ["file-type@3.9.0", "", {}, "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA=="], - - "decompress-unzip/get-stream": ["get-stream@2.3.1", "", { "dependencies": { "object-assign": "^4.0.1", "pinkie-promise": "^2.0.0" } }, "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA=="], - - "decompress-unzip/pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], + "decompress-response/mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], "diffie-hellman/bn.js": ["bn.js@4.12.3", "", {}, "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g=="], @@ -2547,20 +2545,22 @@ "ethers/tslib": ["tslib@2.7.0", "", {}, "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA=="], - "execa/cross-spawn": ["cross-spawn@5.1.0", "", { "dependencies": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", "which": "^1.2.9" } }, "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A=="], - - "execa/get-stream": ["get-stream@3.0.0", "", {}, "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ=="], - - "execa/is-stream": ["is-stream@1.1.0", "", {}, "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="], + "execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], "execa/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - "executable/pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], - "extension-port-stream/readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], "gaxios/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], + "got/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], + + "graphql-http/graphql": ["graphql@16.14.0", "", {}, "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q=="], + + "graphql-tag/graphql": ["graphql@16.14.0", "", {}, "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q=="], + + "graphql-ws/graphql": ["graphql@16.14.0", "", {}, "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q=="], + "jayson/@types/node": ["@types/node@12.20.55", "", {}, "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ=="], "jayson/@types/ws": ["@types/ws@7.4.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww=="], @@ -2573,8 +2573,6 @@ "light-my-request/process-warning": ["process-warning@4.0.1", "", {}, "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q=="], - "make-dir/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "miller-rabin/bn.js": ["bn.js@4.12.3", "", {}, "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g=="], "mqtt/readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], @@ -2585,8 +2583,6 @@ "node-stdlib-browser/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], - "npm-run-path/path-key": ["path-key@2.0.1", "", {}, "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="], - "ox/@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], "ox/@noble/curves": ["@noble/curves@1.9.1", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA=="], @@ -2599,8 +2595,6 @@ "p-queue/eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], - "p-queue/p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], - "path-scurry/lru-cache": ["lru-cache@11.3.6", "", {}, "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A=="], "pg-tx/pg": ["pg@8.20.0", "", { "dependencies": { "pg-connection-string": "^2.12.0", "pg-pool": "^3.13.0", "pg-protocol": "^1.13.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.3.0" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA=="], @@ -2611,16 +2605,12 @@ "rpc-websockets/eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], - "seek-bzip/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + "seek-bzip/commander": ["commander@6.2.1", "", {}, "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA=="], "smoldot/ws": ["ws@8.20.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w=="], "socks/ip-address": ["ip-address@10.2.0", "", {}, "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA=="], - "tar-stream/bl": ["bl@1.2.3", "", { "dependencies": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" } }, "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww=="], - - "tar-stream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], - "thread-stream/real-require": ["real-require@1.0.0", "", {}, "sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g=="], "tweetnacl-ts/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], @@ -2645,8 +2635,6 @@ "wif/bs58check": ["bs58check@2.1.2", "", { "dependencies": { "bs58": "^4.0.0", "create-hash": "^1.1.0", "safe-buffer": "^5.1.2" } }, "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA=="], - "@effectstream/midnight-contracts/@midnight-ntwrk/compact-js/@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.16.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-UR8+MI5zol+gkne17ZZru8xmZNf11xMgQJkiLT9KWsF+QD8Wuz1WONaqQLL0RAZ2aN2XlRsBFd0ViKDVh8prFw=="], - "@libp2p/interface/@multiformats/multiaddr/multiformats": ["multiformats@14.0.0", "", {}, "sha512-iWK1RrAS58p2NDfeZFuSUSv3ZPewTIhsGbh/5NgeGGJwJmRljLxGtjRR3nkn+loG3zl+IrfR/W1590QnrSK+Gg=="], "@libp2p/interface/@multiformats/multiaddr/uint8-varint": ["uint8-varint@3.0.0", "", { "dependencies": { "uint8arraylist": "^3.0.1", "uint8arrays": "^6.1.0" } }, "sha512-S4DdpXBaLwKcFo7f0bWzWfHjbZ/i3QhM842qn+ZvHjxqFCfUcEB9SQNcmI69S+zMlcmIcKxsk9Iyw77S2Kxv6Q=="], @@ -2679,16 +2667,6 @@ "@midnightntwrk/wallet-sdk-node-client/@polkadot/api/eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/keyring": ["@polkadot/keyring@14.0.3", "", { "dependencies": { "@polkadot/util": "14.0.3", "@polkadot/util-crypto": "14.0.3", "tslib": "^2.8.0" } }, "sha512-ozp1dQwaHCjgX/fpTTORmHjxdUNQnyiTVJszpzUaUpvtH/IGZhSU/mSHXMqNETS/g57vQa7NatIDcWfyR9abyA=="], - - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/types-augment": ["@polkadot/types-augment@16.5.6", "", { "dependencies": { "@polkadot/types": "16.5.6", "@polkadot/types-codec": "16.5.6", "@polkadot/util": "^14.0.3", "tslib": "^2.8.1" } }, "sha512-QN5UrluUZCVgknUDW0gps/FRQ13Qgm24w53pCd2HgD0nmTtXDt9D4psjWwx5JkGTkUAvpzFWwN41bkxAeCiV6g=="], - - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/types-codec": ["@polkadot/types-codec@16.5.6", "", { "dependencies": { "@polkadot/util": "^14.0.3", "@polkadot/x-bigint": "^14.0.3", "tslib": "^2.8.1" } }, "sha512-3tzUv1LZOL97IlQmko4dqbfRC0cg9IQ2QAHRVoDIWsXrVovp1V3kPdP0o6e3I8T2XB9IlbabK91v+ZiIxhGMZw=="], - - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/types-create": ["@polkadot/types-create@16.5.6", "", { "dependencies": { "@polkadot/types-codec": "16.5.6", "@polkadot/util": "^14.0.3", "tslib": "^2.8.1" } }, "sha512-g7g3hrjpz4KgqQqei9PU0JY9fsFHBmThWALZk5pWB32vyDyDcXZiyhH3agDhqfmzQiolTW2FuvcNJxgS634J1w=="], - - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/util-crypto": ["@polkadot/util-crypto@14.0.3", "", { "dependencies": { "@noble/curves": "^1.3.0", "@noble/hashes": "^1.3.3", "@polkadot/networks": "14.0.3", "@polkadot/util": "14.0.3", "@polkadot/wasm-crypto": "^7.5.3", "@polkadot/wasm-util": "^7.5.3", "@polkadot/x-bigint": "14.0.3", "@polkadot/x-randomvalues": "14.0.3", "@scure/base": "^1.1.7", "@scure/sr25519": "^0.2.0", "tslib": "^2.8.0" } }, "sha512-V00BI6XnZLCkrAmV8uN0eSB6fy48CkxdDZT29cgSMSwHPtY6oKUNgd1ST07PGCL5x8XflwjoA7CTlhdbp1Y9gw=="], - "@midnightntwrk/wallet-sdk-node-client/@polkadot/util/@polkadot/x-bigint": ["@polkadot/x-bigint@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" } }, "sha512-U0al6BKgldFrEbmSObRAlzv9VDs5SMa/rbvZKvvkVec0sWTzYPWQZU1ZC/biXLYdjdKML89BeuCKmXZtCcGhUQ=="], "@midnightntwrk/wallet-sdk-node-client/@polkadot/util/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], @@ -2699,23 +2677,27 @@ "@opentelemetry/instrumentation-pg/@types/pg/pg-protocol": ["pg-protocol@1.13.0", "", {}, "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w=="], - "@solana/web3.js/bs58/base-x": ["base-x@3.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA=="], + "@polkadot/types/@polkadot/types-codec/@polkadot/x-bigint": ["@polkadot/x-bigint@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" } }, "sha512-U0al6BKgldFrEbmSObRAlzv9VDs5SMa/rbvZKvvkVec0sWTzYPWQZU1ZC/biXLYdjdKML89BeuCKmXZtCcGhUQ=="], - "@stricahq/typhonjs/bs58/base-x": ["base-x@4.0.1", "", {}, "sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw=="], + "@polkadot/types/@polkadot/util/@polkadot/x-bigint": ["@polkadot/x-bigint@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" } }, "sha512-U0al6BKgldFrEbmSObRAlzv9VDs5SMa/rbvZKvvkVec0sWTzYPWQZU1ZC/biXLYdjdKML89BeuCKmXZtCcGhUQ=="], - "@zswap-da/contracts-midnight/@midnight-ntwrk/compact-js/@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.16.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-UR8+MI5zol+gkne17ZZru8xmZNf11xMgQJkiLT9KWsF+QD8Wuz1WONaqQLL0RAZ2aN2XlRsBFd0ViKDVh8prFw=="], + "@polkadot/types/@polkadot/util/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], - "@zswap-da/docs-playground/@midnight-ntwrk/compact-js/@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.16.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-UR8+MI5zol+gkne17ZZru8xmZNf11xMgQJkiLT9KWsF+QD8Wuz1WONaqQLL0RAZ2aN2XlRsBFd0ViKDVh8prFw=="], + "@polkadot/types/@polkadot/util/@polkadot/x-textdecoder": ["@polkadot/x-textdecoder@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" } }, "sha512-4RJYDG00iUzQ7YAuS/yvkWRZlkjYU8PUNdJHRfqtJ+SjrSPB7LYYxFhLgw43TZUtHmIueNTsml2Ukv3xXTr2kA=="], - "@zswap-da/node/@midnight-ntwrk/compact-js/@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.16.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-UR8+MI5zol+gkne17ZZru8xmZNf11xMgQJkiLT9KWsF+QD8Wuz1WONaqQLL0RAZ2aN2XlRsBFd0ViKDVh8prFw=="], + "@polkadot/types/@polkadot/util/@polkadot/x-textencoder": ["@polkadot/x-textencoder@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" } }, "sha512-9HH6o2L+r99wEfXhPb5g+Xwn7qouqD32PsMux7B0dFGR2KNqP4KwO19Hu+gdij6wsEhy7delhZwzHenrWwDfhQ=="], - "@zswap-da/tests/@midnight-ntwrk/compact-js/@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.16.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-UR8+MI5zol+gkne17ZZru8xmZNf11xMgQJkiLT9KWsF+QD8Wuz1WONaqQLL0RAZ2aN2XlRsBFd0ViKDVh8prFw=="], + "@polkadot/types/@polkadot/util-crypto/@polkadot/networks": ["@polkadot/networks@14.0.3", "", { "dependencies": { "@polkadot/util": "14.0.3", "@substrate/ss58-registry": "^1.51.0", "tslib": "^2.8.0" } }, "sha512-/VqTLUDn+Wm8S2L/yaGFddo3oW4vRYav0Rg4pLg/semMZLaN8PJ6h927ucn9JyWdH82QfZfyiIPORt0ZF3isyw=="], - "bin-version/execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], + "@polkadot/types/@polkadot/util-crypto/@polkadot/x-bigint": ["@polkadot/x-bigint@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" } }, "sha512-U0al6BKgldFrEbmSObRAlzv9VDs5SMa/rbvZKvvkVec0sWTzYPWQZU1ZC/biXLYdjdKML89BeuCKmXZtCcGhUQ=="], - "bin-version/execa/npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], + "@polkadot/types/@polkadot/util-crypto/@polkadot/x-randomvalues": ["@polkadot/x-randomvalues@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" }, "peerDependencies": { "@polkadot/util": "14.0.3", "@polkadot/wasm-util": "*" } }, "sha512-qTPcrk0nIHL2tIu5e0cLj3puQvjCK7onehnqO2fvlmWeIlvDel66fwWs06Ipsib+CwLJdmE6WgNy+8Jv74r6YA=="], - "bin-version/execa/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + "@polkadot/types/@polkadot/util-crypto/@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], + + "@solana/web3.js/bs58/base-x": ["base-x@3.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA=="], + + "@stricahq/typhonjs/bs58/base-x": ["base-x@4.0.1", "", {}, "sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw=="], "bitcoinjs-lib/bs58check/bs58": ["bs58@5.0.0", "", { "dependencies": { "base-x": "^4.0.0" } }, "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ=="], @@ -2733,12 +2715,6 @@ "ethers/@types/node/undici-types": ["undici-types@6.19.8", "", {}, "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="], - "execa/cross-spawn/lru-cache": ["lru-cache@4.1.5", "", { "dependencies": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" } }, "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g=="], - - "execa/cross-spawn/shebang-command": ["shebang-command@1.2.0", "", { "dependencies": { "shebang-regex": "^1.0.0" } }, "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg=="], - - "execa/cross-spawn/which": ["which@1.3.1", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "which": "./bin/which" } }, "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="], - "jayson/@types/ws/@types/node": ["@types/node@22.19.19", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew=="], "ox/@scure/bip32/@noble/curves": ["@noble/curves@1.9.7", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw=="], @@ -2757,12 +2733,6 @@ "ripemd160/hash-base/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], - "tar-stream/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], - - "tar-stream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], - - "tar-stream/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - "viem/@scure/bip32/@noble/curves": ["@noble/curves@1.9.7", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw=="], "viem/@scure/bip32/@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], @@ -2793,22 +2763,14 @@ "@midnightntwrk/wallet-sdk-node-client/@polkadot/api/@polkadot/util-crypto/@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/types-codec/@polkadot/x-bigint": ["@polkadot/x-bigint@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" } }, "sha512-U0al6BKgldFrEbmSObRAlzv9VDs5SMa/rbvZKvvkVec0sWTzYPWQZU1ZC/biXLYdjdKML89BeuCKmXZtCcGhUQ=="], - - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/util-crypto/@polkadot/networks": ["@polkadot/networks@14.0.3", "", { "dependencies": { "@polkadot/util": "14.0.3", "@substrate/ss58-registry": "^1.51.0", "tslib": "^2.8.0" } }, "sha512-/VqTLUDn+Wm8S2L/yaGFddo3oW4vRYav0Rg4pLg/semMZLaN8PJ6h927ucn9JyWdH82QfZfyiIPORt0ZF3isyw=="], + "@polkadot/types/@polkadot/types-codec/@polkadot/x-bigint/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/util-crypto/@polkadot/x-bigint": ["@polkadot/x-bigint@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" } }, "sha512-U0al6BKgldFrEbmSObRAlzv9VDs5SMa/rbvZKvvkVec0sWTzYPWQZU1ZC/biXLYdjdKML89BeuCKmXZtCcGhUQ=="], + "@polkadot/types/@polkadot/util-crypto/@polkadot/x-bigint/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/util-crypto/@polkadot/x-randomvalues": ["@polkadot/x-randomvalues@14.0.3", "", { "dependencies": { "@polkadot/x-global": "14.0.3", "tslib": "^2.8.0" }, "peerDependencies": { "@polkadot/util": "14.0.3", "@polkadot/wasm-util": "*" } }, "sha512-qTPcrk0nIHL2tIu5e0cLj3puQvjCK7onehnqO2fvlmWeIlvDel66fwWs06Ipsib+CwLJdmE6WgNy+8Jv74r6YA=="], - - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/util-crypto/@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], + "@polkadot/types/@polkadot/util-crypto/@polkadot/x-randomvalues/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], "bitcoinjs-lib/bs58check/bs58/base-x": ["base-x@4.0.1", "", {}, "sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw=="], - "execa/cross-spawn/lru-cache/yallist": ["yallist@2.1.2", "", {}, "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="], - - "execa/cross-spawn/shebang-command/shebang-regex": ["shebang-regex@1.0.0", "", {}, "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="], - "ripemd160/hash-base/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "ripemd160/hash-base/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], @@ -2826,11 +2788,5 @@ "@midnightntwrk/wallet-sdk-node-client/@polkadot/api/@polkadot/util-crypto/@polkadot/x-bigint/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], "@midnightntwrk/wallet-sdk-node-client/@polkadot/api/@polkadot/util-crypto/@polkadot/x-randomvalues/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], - - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/types-codec/@polkadot/x-bigint/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], - - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/util-crypto/@polkadot/x-bigint/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], - - "@midnightntwrk/wallet-sdk-node-client/@polkadot/types/@polkadot/util-crypto/@polkadot/x-randomvalues/@polkadot/x-global": ["@polkadot/x-global@14.0.3", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw=="], } } diff --git a/docs/package.json b/docs/package.json index 7385817..b67dd8e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -12,20 +12,20 @@ "react": "^19.2.0", "react-dom": "^19.2.0", "@scure/base": "^2.0.0", - "@effectstream/mip-zswap-offer": "0.3.0", - "@midnight-ntwrk/ledger-v8": "8.1.0", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnight-ntwrk/dapp-connector-api": "4.0.1", - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/midnight-js-contracts": "4.1.1", - "@midnight-ntwrk/midnight-js-types": "4.1.1", - "@midnight-ntwrk/midnight-js-utils": "4.1.1", - "@midnight-ntwrk/midnight-js-network-id": "4.1.1", - "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-http-client-proof-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-level-private-state-provider": "4.1.1", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0", - "@effectstream/wallets": "0.103.1", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7", + "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-http-client-proof-provider": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-level-private-state-provider": "5.0.0-beta.6", + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", + "@effectstream/wallets": "0.200.2", "@zswap-da/contract-offer-files": "workspace:*" }, "devDependencies": { diff --git a/docs/src/wallet/browserContract.ts b/docs/src/wallet/browserContract.ts index bbe2a88..b289c5a 100644 --- a/docs/src/wallet/browserContract.ts +++ b/docs/src/wallet/browserContract.ts @@ -8,9 +8,9 @@ import { type CoinPublicKey, type EncPublicKey, type FinalizedTransaction, - Transaction as LedgerV8Transaction, + Transaction as LedgerV9Transaction, type TransactionId, -} from '@midnight-ntwrk/ledger-v8' +} from '@midnightntwrk/ledger-v9' import { type MidnightProvider, type MidnightProviders, @@ -67,7 +67,7 @@ function createWalletProvider( async balanceTx(tx: UnboundTransaction): Promise { const serialized = toHex(tx.serialize()) const { tx: balancedHex } = await connectedApi.balanceUnsealedTransaction(serialized, { payFees: false }) - return LedgerV8Transaction.deserialize('signature', 'proof', 'binding', fromHex(balancedHex)) as FinalizedTransaction + return LedgerV9Transaction.deserialize('signature', 'proof', 'binding', fromHex(balancedHex)) as FinalizedTransaction }, async submitTx(tx: FinalizedTransaction): Promise { const serializedHex = toHex(tx.serialize()) @@ -105,7 +105,11 @@ async function buildProviders(connectedApi: ConnectedAPI, config: MidnightConfig return res }) as typeof fetch - const zkConfigProvider = new FetchZkConfigProvider(API_BASE, safeFetch.bind(window)) + // midnight-js 5: the custom fetch moved from a positional argument into an + // options object ({ fetchFunc }), which also carries the compactc integrity + // options — the v5 provider verifies artifacts against the compiler's + // integrity manifest by default, so the API must serve that manifest too. + const zkConfigProvider = new FetchZkConfigProvider(API_BASE, { fetchFunc: safeFetch.bind(window) }) // VITE_PROOF_SERVER_URL wins over whatever /v1/midnight/config reports. const proofServerUri = PROOF_SERVER_URL || config.proofServerUri diff --git a/docs/src/wallet/takerSettle.ts b/docs/src/wallet/takerSettle.ts index add7816..587769c 100644 --- a/docs/src/wallet/takerSettle.ts +++ b/docs/src/wallet/takerSettle.ts @@ -10,7 +10,7 @@ // (mirror+merge would collide on Lace's structural Intent[1]). import type { ConnectedAPI } from '@midnight-ntwrk/dapp-connector-api' -import { Transaction as LedgerV8Transaction } from '@midnight-ntwrk/ledger-v8' +import { Transaction as LedgerV9Transaction } from '@midnightntwrk/ledger-v9' import { type NetworkId, setNetworkId } from '@midnight-ntwrk/midnight-js-network-id' import { OfferFiles } from '@effectstream/mip-zswap-offer/mip5' import { fromHex, toHex } from '../hex' @@ -75,7 +75,7 @@ async function balanceViaMirrorMerge( intentId: 1000, payFees: false, }) - const takerTx = LedgerV8Transaction.deserialize('signature', 'proof', 'binding', fromHex(takerTxHex)) + const takerTx = LedgerV9Transaction.deserialize('signature', 'proof', 'binding', fromHex(takerTxHex)) const merged = makerTx.merge(takerTx) return toHex(merged.serialize()) } @@ -91,7 +91,7 @@ export async function buildSettlementTxHex( ): Promise { setNetworkId(networkId as NetworkId) const rawBytes = OfferFiles.decode(offerBech32m.trim()) - const makerTx = LedgerV8Transaction.deserialize('signature', 'proof', 'binding', rawBytes) + const makerTx = LedgerV9Transaction.deserialize('signature', 'proof', 'binding', rawBytes) const swap = pickSwapSegment(makerTx) const makerHasIntents = !!makerTx.intents && Array.from(makerTx.intents.keys() as Iterable).length > 0 diff --git a/docs/src/wallet/useContract.ts b/docs/src/wallet/useContract.ts index 27a2a88..9f26e13 100644 --- a/docs/src/wallet/useContract.ts +++ b/docs/src/wallet/useContract.ts @@ -1,6 +1,6 @@ import { useCallback, useEffect, useRef, useState } from 'react' import type { ConnectedAPI } from '@midnight-ntwrk/dapp-connector-api' -import { MidnightBech32m, UnshieldedAddress } from '@midnight-ntwrk/wallet-sdk-address-format' +import { MidnightBech32m, UnshieldedAddress } from '@midnightntwrk/wallet-sdk-address-format' import { api, run, type MidnightConfig } from '../api' import { connectBrowserContract, type ConnectedContract } from './browserContract' import { PROOF_SERVER_URL } from '../config' diff --git a/docs/src/wallet/wallet.ts b/docs/src/wallet/wallet.ts index a2f03ae..0e7723f 100644 --- a/docs/src/wallet/wallet.ts +++ b/docs/src/wallet/wallet.ts @@ -108,8 +108,8 @@ export async function connectLocal(seed?: string): Promise { const httpScheme = secure ? 'https' : 'http' const wsScheme = secure ? 'wss' : 'ws' const networkUrls = { - indexer: cfg?.indexerUri ?? `${httpScheme}://${host}:8088/api/v3/graphql`, - indexerWS: cfg?.indexerWsUri ?? `${wsScheme}://${host}:8088/api/v3/graphql/ws`, + indexer: cfg?.indexerUri ?? `${httpScheme}://${host}:8088/api/v4/graphql`, + indexerWS: cfg?.indexerWsUri ?? `${wsScheme}://${host}:8088/api/v4/graphql/ws`, node: (cfg as any)?.nodeUri ?? `${httpScheme}://${host}:9944`, proofServer: PROOF_SERVER_URL || cfg?.proofServerUri || `${httpScheme}://${host}:6300`, } diff --git a/docs/vite.config.ts b/docs/vite.config.ts index e5d421a..564f154 100644 --- a/docs/vite.config.ts +++ b/docs/vite.config.ts @@ -36,7 +36,7 @@ export default defineConfig({ }, }, optimizeDeps: { - exclude: ['@midnight-ntwrk/onchain-runtime'], + exclude: ['@midnightntwrk/onchain-runtime-v4'], esbuildOptions: { target: 'esnext', plugins: [ diff --git a/infra/compact-toolchain.Dockerfile b/infra/compact-toolchain.Dockerfile new file mode 100644 index 0000000..7586053 --- /dev/null +++ b/infra/compact-toolchain.Dockerfile @@ -0,0 +1,61 @@ +# compact-toolchain — the pinned compactc compiler in a container, so no host +# machine needs a matching Compact install to build this contract. +# +# WHY A CONTAINER AND NOT `compact update`: the `compact` version manager does +# not publish the 0.33 line. On a current install `compact list` tops out at +# 0.31.1 and `compact check` reports "Up to date -- 0.31.1", so +# `compact compile +0.33.0-rc.2` cannot resolve. The 0.33 release candidates are +# published as prebuilt release assets on LFDT-Minokawa/compact instead, so we +# fetch the pinned asset directly. Same binary, same tag, no version-manager +# indirection. +# +# ENTRYPOINT is compactc itself (the version manager is not installed), so the +# invocation is `compactc ` — see +# packages/contracts-midnight/contract-offer-files/package.json. +# +# NOTE ON ZKIR: we deliberately do NOT pass `--feature-zkir-v3`. compactc 0.33 +# defaults to ZKIR version 2, which emits `verifier-key[v6]` keys; the ledger +# maps those to ProofVersioned::V2, which the PLAIN `proof-server:9.0.0-rc.5` +# image proves. Passing `--feature-zkir-v3` would emit `verifier-key[v7]` keys +# and require the `9.0.0-rc.5_experimental` proof-server build instead. This +# contract has no cross-contract calls and no secp256k1/keccak primitives, so +# there is nothing to gain from the v3 lane and a harder deployment if we take it. + +FROM debian:stable-slim + +# e.g. 0.33.0-rc.2 -> release tag compactc-v0.33.0-rc.2 +ARG COMPACT_VERSION +ARG TARGETARCH + +RUN apt-get update \ + && apt-get install -y --no-install-recommends curl ca-certificates unzip bash \ + && rm -rf /var/lib/apt/lists/* + +RUN test -n "$COMPACT_VERSION" || { echo "COMPACT_VERSION build arg is required" >&2; exit 1; } + +# The assets are musl-static, one per platform triple. +RUN set -eux; \ + case "${TARGETARCH:-arm64}" in \ + arm64) triple="aarch64-unknown-linux-musl" ;; \ + amd64) triple="x86_64-unknown-linux-musl" ;; \ + *) echo "unsupported TARGETARCH=${TARGETARCH}" >&2; exit 1 ;; \ + esac; \ + url="https://github.com/LFDT-Minokawa/compact/releases/download/compactc-v${COMPACT_VERSION}/compactc_v${COMPACT_VERSION}_${triple}.zip"; \ + curl --proto '=https' --tlsv1.2 -fLsS -o /tmp/compactc.zip "$url"; \ + mkdir -p /opt/compactc; \ + unzip -q /tmp/compactc.zip -d /opt/compactc; \ + rm /tmp/compactc.zip; \ + chmod +x /opt/compactc/*; \ + # NOT a symlink: the bundled `compactc` wrapper resolves its siblings from + # `dirname $0`, which through a symlink in /usr/local/bin points at the wrong + # directory and fails with "compactc.bin: No such file or directory". + printf '#!/bin/sh\nexec /opt/compactc/compactc "$@"\n' > /usr/local/bin/compactc; \ + chmod +x /usr/local/bin/compactc + +# Fail the BUILD, not some later contract compile, if the default (v2) zkir +# backend is missing: without it compactc silently emits no verifier keys after +# printing a warning, and the failure would only surface at proving time. +RUN test -x /opt/compactc/zkir || { echo "image lacks the default zkir backend" >&2; exit 1; } + +WORKDIR /work +ENTRYPOINT ["compactc"] diff --git a/infra/compact-version.txt b/infra/compact-version.txt new file mode 100644 index 0000000..48cbab9 --- /dev/null +++ b/infra/compact-version.txt @@ -0,0 +1 @@ +0.33.0-rc.2 diff --git a/infra/compact.sh b/infra/compact.sh new file mode 100755 index 0000000..5232a9f --- /dev/null +++ b/infra/compact.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# Run the pinned compactc against this repo. +# +# infra/compact.sh +# +# Two routes, in order of preference: +# 1. $COMPACTC points at a host compactc binary of the pinned version -> use it. +# 2. otherwise build (once, idempotently) and run compact-toolchain:$COMPACT_VERSION. +# +# The `compact` version manager is NOT a route: it does not publish the 0.33 +# line (see infra/compact-toolchain.Dockerfile for the details). +set -euo pipefail + +INFRA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$INFRA_DIR/.." && pwd)" + +# Single source of truth for the compiler pin. +COMPACT_VERSION="${COMPACT_VERSION:-$(tr -d ' \t\n' < "$INFRA_DIR/compact-version.txt")}" +IMAGE="${COMPACT_IMAGE:-compact-toolchain:${COMPACT_VERSION}}" + +if [[ -n "${COMPACTC:-}" ]]; then + exec "$COMPACTC" "$@" +fi + +if ! docker image inspect "$IMAGE" >/dev/null 2>&1; then + echo "building ${IMAGE} from release asset compactc-v${COMPACT_VERSION} ..." >&2 + docker build \ + --build-arg "COMPACT_VERSION=${COMPACT_VERSION}" \ + -f "$INFRA_DIR/compact-toolchain.Dockerfile" \ + -t "$IMAGE" \ + "$INFRA_DIR" >&2 +fi + +# Mount the repo root (not the package dir) so relative include paths and +# COMPACT_PATH lookups resolve the same way they do on a host install. The +# caller's cwd inside the repo is preserved. +rel_cwd="${PWD#"$REPO_ROOT"}" +rel_cwd="${rel_cwd#/}" + +# Key generation downloads the universal SRS ("params") from srs.midnight.network +# and caches it under $XDG_CACHE_HOME. Persist that outside the container so +# repeat compiles need no network. Cache dir is gitignored. +CACHE_DIR="${MIDNIGHT_ZK_PARAMS_DIR:-$REPO_ROOT/.compact-cache}" +mkdir -p "$CACHE_DIR" + +# We run as the host user so the emitted src/managed/ tree is not root-owned. +# That makes the image's default HOME (/root) unwritable, and zkir then dies with +# "Permission denied (os error 13)" / "zkir returned a non-zero exit status 1" +# while writing its params cache — hence the explicit HOME and XDG_CACHE_HOME. +exec docker run --rm \ + -v "$REPO_ROOT:/repo" \ + -v "$CACHE_DIR:/cache" \ + -w "/repo${rel_cwd:+/$rel_cwd}" \ + -u "$(id -u):$(id -g)" \ + -e HOME=/tmp \ + -e XDG_CACHE_HOME=/cache \ + "$IMAGE" "$@" diff --git a/package.json b/package.json index c611550..e00f1f6 100644 --- a/package.json +++ b/package.json @@ -24,12 +24,12 @@ "test:held-open": "bun test ./packages/database/held-open-transaction.pgtest.ts" }, "dependencies": { - "@effectstream/celestia": "0.103.1", - "@effectstream/midnight-contracts": "0.103.1", - "@effectstream/mip-zswap-offer": "0.3.0", - "@effectstream/orchestrator": "0.103.1", + "@effectstream/celestia": "0.200.2", + "@effectstream/midnight-contracts": "0.200.2", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", + "@effectstream/orchestrator": "0.200.2", "@electric-sql/pglite": "^0.3.14", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0", + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@scure/bip39": "^2.2.0", "wait-on": "8.0.3" }, @@ -40,6 +40,6 @@ "@types/bun": "^1.3.13" }, "overrides": { - "@midnight-ntwrk/ledger-v8": "8.1.0" + "@midnightntwrk/ledger-v9": "1.0.0-rc.3" } } diff --git a/packages/batcher/celestia.ts b/packages/batcher/celestia.ts index a02091c..1d6c6d2 100644 --- a/packages/batcher/celestia.ts +++ b/packages/batcher/celestia.ts @@ -83,6 +83,8 @@ export class ZswapCelestiaAdapter extends CelestiaAdapter { refState: getBlankRefState(this.networkId), tblock: new Date(), maxBytes: OFFER_MAX_BYTES, + // Same lane as the node — see ValidateOpts.contractMakerRetry. + contractMakerRetry: /^(1|true|yes)$/i.test(process.env["ALLOW_CONTRACT_MAKER_OFFERS"] ?? ""), }); if (!result.ok) { return { valid: false, error: `${result.code}: ${result.reason ?? ""}` }; diff --git a/packages/batcher/night-utxo-bootstrap.ts b/packages/batcher/night-utxo-bootstrap.ts index ffc1ca9..e1d24d0 100644 --- a/packages/batcher/night-utxo-bootstrap.ts +++ b/packages/batcher/night-utxo-bootstrap.ts @@ -113,7 +113,7 @@ async function defaultSubmitSelfSplit( try { const signed = await (walletResult.wallet as any).signRecipe( recipe, - (payload: Uint8Array) => walletResult.unshieldedKeystore.signData(payload), + (payload: Uint8Array) => walletResult.unshieldedKeystore.signDataAsync(payload), ); finalized = await walletResult.wallet.finalizeRecipe(signed); await walletResult.wallet.submitTransaction(finalized); diff --git a/packages/batcher/package.json b/packages/batcher/package.json index 2a95328..34225e3 100644 --- a/packages/batcher/package.json +++ b/packages/batcher/package.json @@ -12,15 +12,15 @@ "start:preview": "bun run batcher.preview.ts" }, "dependencies": { - "@effectstream/batcher-sdk": "0.103.1", - "@effectstream/midnight-contracts": "0.103.1", - "@effectstream/utils": "0.103.1", + "@effectstream/batcher-sdk": "0.200.2", + "@effectstream/midnight-contracts": "0.200.2", + "@effectstream/utils": "0.200.2", "@zswap-da/validator": "workspace:*", "effection": "^3.5.0", "@zswap-da/offer-guard": "workspace:*" }, "devDependencies": { "@scure/base": "^2.0.0", - "@effectstream/mip-zswap-offer": "0.3.0" + "@effectstream/mip-zswap-offer": "0.4.0-v9.0" } } diff --git a/packages/contracts-celestia/package.json b/packages/contracts-celestia/package.json index 135c8bd..d289555 100644 --- a/packages/contracts-celestia/package.json +++ b/packages/contracts-celestia/package.json @@ -11,7 +11,7 @@ "celestia-fund:bridge": "bun ./fund-bridge.ts" }, "dependencies": { - "@effectstream/celestia": "0.103.1" + "@effectstream/celestia": "0.200.2" }, "devDependencies": { "wait-on": "8.0.3" diff --git a/packages/contracts-midnight/contract-offer-files/node_modules/@midnight-ntwrk/compact-js b/packages/contracts-midnight/contract-offer-files/node_modules/@midnight-ntwrk/compact-js index 1099d64..bd8672a 120000 --- a/packages/contracts-midnight/contract-offer-files/node_modules/@midnight-ntwrk/compact-js +++ b/packages/contracts-midnight/contract-offer-files/node_modules/@midnight-ntwrk/compact-js @@ -1 +1 @@ -../../../../../node_modules/.bun/@midnight-ntwrk+compact-js@2.5.0/node_modules/@midnight-ntwrk/compact-js \ No newline at end of file +../../../../../node_modules/.bun/@midnight-ntwrk+compact-js@2.5.5-rc.7/node_modules/@midnight-ntwrk/compact-js \ No newline at end of file diff --git a/packages/contracts-midnight/contract-offer-files/node_modules/@midnight-ntwrk/compact-runtime b/packages/contracts-midnight/contract-offer-files/node_modules/@midnight-ntwrk/compact-runtime index 4453a0e..6a52dc7 120000 --- a/packages/contracts-midnight/contract-offer-files/node_modules/@midnight-ntwrk/compact-runtime +++ b/packages/contracts-midnight/contract-offer-files/node_modules/@midnight-ntwrk/compact-runtime @@ -1 +1 @@ -../../../../../node_modules/.bun/@midnight-ntwrk+compact-runtime@0.15.0/node_modules/@midnight-ntwrk/compact-runtime \ No newline at end of file +../../../../../node_modules/.bun/@midnight-ntwrk+compact-runtime@0.18.0-rc.1/node_modules/@midnight-ntwrk/compact-runtime \ No newline at end of file diff --git a/packages/contracts-midnight/contract-offer-files/package.json b/packages/contracts-midnight/contract-offer-files/package.json index 12ee6c3..8d56c15 100644 --- a/packages/contracts-midnight/contract-offer-files/package.json +++ b/packages/contracts-midnight/contract-offer-files/package.json @@ -9,10 +9,10 @@ "./contract": "./src/managed/contract/index.js" }, "scripts": { - "compact": "compact compile +0.30.0 src/offer-files.compact src/managed/" + "compact": "../../../infra/compact.sh src/offer-files.compact src/managed/" }, "dependencies": { - "@midnight-ntwrk/compact-runtime": "0.15.0", - "@midnight-ntwrk/compact-js": "2.5.0" + "@midnight-ntwrk/compact-runtime": "0.18.0-rc.1", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7" } } diff --git a/packages/contracts-midnight/mint-test-tokens.ts b/packages/contracts-midnight/mint-test-tokens.ts index 40ba066..da272cb 100644 --- a/packages/contracts-midnight/mint-test-tokens.ts +++ b/packages/contracts-midnight/mint-test-tokens.ts @@ -21,8 +21,8 @@ import * as Rx from "rxjs"; import { findDeployedContract } from "@midnight-ntwrk/midnight-js-contracts"; import { CompiledContract } from "@midnight-ntwrk/compact-js"; import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; -import { NetworkId } from "@midnight-ntwrk/wallet-sdk-abstractions"; -import { MidnightBech32m } from "@midnight-ntwrk/wallet-sdk-address-format"; +import { NetworkId } from "@midnightntwrk/wallet-sdk-abstractions"; +import { MidnightBech32m } from "@midnightntwrk/wallet-sdk-address-format"; import { buildWalletFacade, registerNightForDust, diff --git a/packages/contracts-midnight/package.json b/packages/contracts-midnight/package.json index 1871bf2..410f6e1 100644 --- a/packages/contracts-midnight/package.json +++ b/packages/contracts-midnight/package.json @@ -14,19 +14,19 @@ "midnight-contract:deploy": "bun run midnight-contract:clean && bun run deploy.ts" }, "dependencies": { - "@effectstream/midnight-contracts": "0.103.1", - "@effectstream/npm-midnight-indexer": "0.103.1", - "@effectstream/npm-midnight-node": "0.103.1", - "@effectstream/npm-midnight-proof-server": "0.103.1", - "@effectstream/utils": "0.103.1", - "@midnight-ntwrk/compact-runtime": "0.15.0", - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/ledger-v8": "8.1.0", - "@midnight-ntwrk/midnight-js-contracts": "4.1.1", - "@midnight-ntwrk/midnight-js-network-id": "4.1.1", - "@midnight-ntwrk/onchain-runtime-v3": "3.0.0", - "@midnight-ntwrk/wallet-sdk-abstractions": "2.0.0", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0", + "@effectstream/midnight-contracts": "0.200.2", + "@effectstream/npm-midnight-indexer": "0.200.2", + "@effectstream/npm-midnight-node": "0.200.2", + "@effectstream/npm-midnight-proof-server": "0.200.2", + "@effectstream/utils": "0.200.2", + "@midnight-ntwrk/compact-runtime": "0.18.0-rc.1", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", + "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3", + "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@zswap-da/contract-offer-files": "workspace:*", "rxjs": "^7.8.2", "wait-on": "8.0.3" diff --git a/packages/database/package.json b/packages/database/package.json index b735ecd..c8a05e1 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -7,10 +7,10 @@ "pgtyped:update": "bun run ./node_modules/@effectstream/db/scripts/pgtyped-update.ts" }, "dependencies": { - "@effectstream/runtime": "0.103.1", - "@effectstream/db": "0.103.1", - "@effectstream/config": "0.103.1", - "@effectstream/sm": "0.103.1", + "@effectstream/runtime": "0.200.2", + "@effectstream/db": "0.200.2", + "@effectstream/config": "0.200.2", + "@effectstream/sm": "0.200.2", "@pgtyped/runtime": "2.4.2", "effection": "^3.5.0", "pg": "^8.14.0" diff --git a/packages/node/api.ts b/packages/node/api.ts index a20ae73..ff2d827 100644 --- a/packages/node/api.ts +++ b/packages/node/api.ts @@ -26,7 +26,7 @@ import { findActiveOfferByUnshieldedOutput, } from "@zswap-da/database"; -import { isTokenRegistryEnabled, MIDNIGHT_NETWORK_ID, OFFER_MAX_BYTES, ROOT_WINDOW_SECONDS, midnightContract } from "./env.ts"; +import { ALLOW_CONTRACT_MAKER_OFFERS, isTokenRegistryEnabled, MIDNIGHT_NETWORK_ID, OFFER_MAX_BYTES, ROOT_WINDOW_SECONDS, midnightContract } from "./env.ts"; import { midnightNetworkConfig } from "@effectstream/midnight-contracts/midnight-env"; import { submitBlobViaBatcher } from "./batcher-client.ts"; import { getBlankRefState, validateZswapOffer, verifyOfferCrypto } from "@zswap-da/validator"; @@ -745,6 +745,7 @@ export const apiRouter: StartConfigApiRouter = async function ( const crypto = verifyOfferCrypto(validation.tx!, { refState: getBlankRefState(MIDNIGHT_NETWORK_ID), tblock: new Date(), + contractMakerRetry: ALLOW_CONTRACT_MAKER_OFFERS, }); if (!crypto.ok) { return reply.code(400).send({ error: crypto.code, reason: crypto.reason }); diff --git a/packages/node/config.dev.ts b/packages/node/config.dev.ts index 4cebd83..e77f853 100644 --- a/packages/node/config.dev.ts +++ b/packages/node/config.dev.ts @@ -25,6 +25,32 @@ import { midnightContract, } from "./env.ts"; +/** + * The offer-files contract this node indexes. + * + * Two sources, env first — the same precedence `config.preview.ts` already + * uses, and the reason it exists here now: when the deploy is a SEPARATE + * one-shot container (demo-infra Phase 11), the address is produced before + * this process starts and has to be injectable. The file remains the default + * for a single-checkout dev run, where `midnight-contract:deploy` writes it. + * + * This replaces an unguarded `midnightContract!.contractAddress`. A missing + * artifact used to surface as a bare TypeError on a non-null assertion, which + * says nothing about what to do; the throw below names both ways to fix it. + */ +const contractAddress = + process.env.MIDNIGHT_CONTRACT_ADDRESS ?? midnightContract?.contractAddress; + +if (!contractAddress) { + throw new Error( + `No Midnight contract address for network '${midnightNetworkConfig.id}'.\n` + + "Either:\n" + + " 1. Set MIDNIGHT_CONTRACT_ADDRESS, or\n" + + ` 2. Provide packages/contracts-midnight/contract-offer-files.${midnightNetworkConfig.id}.json\n` + + " (written by `bun run --filter @zswap-da/contracts-midnight midnight-contract:deploy`).", + ); +} + const mainSyncProtocolName = "mainNtp"; let launchStartTime: number | undefined; @@ -124,7 +150,7 @@ export const config = new ConfigBuilder() name: "ZswapMidnightState", type: PrimitiveTypeMidnightGeneric, startBlockHeight: 1, - contractAddress: midnightContract!.contractAddress, + contractAddress, stateMachinePrefix: "midnight-zswap", contract: { ledger: OfferFilesContract.ledger }, networkId: midnightNetworkConfig.id, diff --git a/packages/node/env.ts b/packages/node/env.ts index 524546f..288cb10 100644 --- a/packages/node/env.ts +++ b/packages/node/env.ts @@ -16,6 +16,13 @@ import { MIP6_NAMESPACE_ID_SUFFIX_HEX } from "@zswap-da/offer-guard"; // rejected-blob cleanup can never drift apart. export const CELESTIA_PRIMITIVE_NAME = "ZswapBlob"; +// Accept offers whose maker is a CONTRACT CALL (e.g. an AA-Manager open swap). +// Default OFF. See ValidateOpts.contractMakerRetry in @zswap-da/validator for +// exactly what is and is not verified on this lane. +export const ALLOW_CONTRACT_MAKER_OFFERS = /^(1|true|yes)$/i.test( + getEnv("ALLOW_CONTRACT_MAKER_OFFERS") ?? "", +); + export const CELESTIA_RPC_URL = getEnv("CELESTIA_RPC_URL") ?? "http://127.0.0.1:26658"; // MIP-0006 shared namespace by default — see MIP6_NAMESPACE_ID_SUFFIX_HEX in // @zswap-da/offer-guard for why overriding re-silos liquidity (dev/e2e only). diff --git a/packages/node/main.dev.ts b/packages/node/main.dev.ts index bc7d889..36b93b6 100644 --- a/packages/node/main.dev.ts +++ b/packages/node/main.dev.ts @@ -1,12 +1,12 @@ // NOTE & TODO: -// Importing "@midnight-ntwrk/onchain-runtime" here is a workaround. +// Importing "@midnightntwrk/onchain-runtime-v4" here is a workaround. // Loading this package in a dependency makes the onchain-runtime wasm // fail in runtime when trying to parse the state. // This side-effect import ensures the wasm bundle is registered. -import "@midnight-ntwrk/onchain-runtime-v3"; +import "@midnightntwrk/onchain-runtime-v4"; // NOTE: This is a fix for Midnight ZSwap. -import { ZswapChainState } from "@midnight-ntwrk/ledger-v8"; +import { ZswapChainState } from "@midnightntwrk/ledger-v9"; const origTryApply = ZswapChainState.prototype.tryApply; ZswapChainState.prototype.tryApply = function (...args) { diff --git a/packages/node/main.grand-b.ts b/packages/node/main.grand-b.ts index f5c54c8..7b52cdf 100644 --- a/packages/node/main.grand-b.ts +++ b/packages/node/main.grand-b.ts @@ -12,9 +12,9 @@ // MQTT_*_PORT) — the MQTT ports matter because they default to fixed values // that instance A already holds. -import "@midnight-ntwrk/onchain-runtime-v3"; +import "@midnightntwrk/onchain-runtime-v4"; -import { ZswapChainState } from "@midnight-ntwrk/ledger-v8"; +import { ZswapChainState } from "@midnightntwrk/ledger-v9"; // Same ZSwap tryApply guard as main.dev.ts — required for identical STF // behavior between the two instances. @@ -61,6 +61,23 @@ import { midnightContract, } from "./env.ts"; +// Same env-first resolution as config.dev.ts (see the note there): the deploy +// may be a separate one-shot, so the address has to be injectable. Kept +// identical on purpose — grand-b-config-drift.test.ts asserts these two +// configs do not diverge. +const contractAddress = + process.env.MIDNIGHT_CONTRACT_ADDRESS ?? midnightContract?.contractAddress; + +if (!contractAddress) { + throw new Error( + `No Midnight contract address for network '${midnightNetworkConfig.id}'.\n` + + "Either:\n" + + " 1. Set MIDNIGHT_CONTRACT_ADDRESS, or\n" + + ` 2. Provide packages/contracts-midnight/contract-offer-files.${midnightNetworkConfig.id}.json\n` + + " (written by `bun run --filter @zswap-da/contracts-midnight midnight-contract:deploy`).", + ); +} + const startTimeRaw = process.env["GRAND_NTP_START_TIME"]; if (!startTimeRaw || !Number.isFinite(Number(startTimeRaw))) { throw new Error("main.grand-b.ts requires GRAND_NTP_START_TIME (ms epoch of instance A's NTP anchor)"); @@ -146,7 +163,7 @@ const config = new ConfigBuilder() name: "ZswapMidnightState", type: PrimitiveTypeMidnightGeneric, startBlockHeight: 1, - contractAddress: midnightContract!.contractAddress, + contractAddress, stateMachinePrefix: "midnight-zswap", contract: { ledger: OfferFilesContract.ledger }, networkId: midnightNetworkConfig.id, diff --git a/packages/node/main.mainnet.ts b/packages/node/main.mainnet.ts index a07892d..65bf4e9 100644 --- a/packages/node/main.mainnet.ts +++ b/packages/node/main.mainnet.ts @@ -1,9 +1,9 @@ // Side-effect import: registers the Midnight onchain-runtime wasm bundle. -import "@midnight-ntwrk/onchain-runtime-v3"; +import "@midnightntwrk/onchain-runtime-v4"; // Midnight ZSwap fix: swallow tryApply errors from already-spent inputs so the // sync node doesn't crash on historic state. -import { ZswapChainState } from "@midnight-ntwrk/ledger-v8"; +import { ZswapChainState } from "@midnightntwrk/ledger-v9"; const origTryApply = ZswapChainState.prototype.tryApply; ZswapChainState.prototype.tryApply = function (...args) { diff --git a/packages/node/main.preview.ts b/packages/node/main.preview.ts index be68f1b..6b05765 100644 --- a/packages/node/main.preview.ts +++ b/packages/node/main.preview.ts @@ -1,6 +1,6 @@ -import "@midnight-ntwrk/onchain-runtime-v3"; +import "@midnightntwrk/onchain-runtime-v4"; -import { ZswapChainState } from "@midnight-ntwrk/ledger-v8"; +import { ZswapChainState } from "@midnightntwrk/ledger-v9"; const origTryApply = ZswapChainState.prototype.tryApply; ZswapChainState.prototype.tryApply = function (...args) { diff --git a/packages/node/marker-dedup.ts b/packages/node/marker-dedup.ts index 6785c1e..1494696 100644 --- a/packages/node/marker-dedup.ts +++ b/packages/node/marker-dedup.ts @@ -54,7 +54,7 @@ // compares state, so a winner chosen by a local id would diverge there rather // than fail here. -import type { UnprovenTransaction } from "@midnight-ntwrk/ledger-v8"; +import type { UnprovenTransaction } from "@midnightntwrk/ledger-v9"; import { collectOutputCommitments, collectUnshieldedOutputs } from "@zswap-da/validator"; /** diff --git a/packages/node/package.json b/packages/node/package.json index 938a175..3985185 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -12,30 +12,30 @@ "start:preview": "bun run main.preview.ts" }, "dependencies": { - "@effectstream/config": "0.103.1", - "@effectstream/concise": "0.103.1", - "@effectstream/coroutine": "0.103.1", - "@effectstream/db": "0.103.1", - "@effectstream/log": "0.103.1", - "@effectstream/midnight-contracts": "0.103.1", - "@effectstream/runtime": "0.103.1", - "@effectstream/sm": "0.103.1", - "@effectstream/utils": "0.103.1", + "@effectstream/config": "0.200.2", + "@effectstream/concise": "0.200.2", + "@effectstream/coroutine": "0.200.2", + "@effectstream/db": "0.200.2", + "@effectstream/log": "0.200.2", + "@effectstream/midnight-contracts": "0.200.2", + "@effectstream/runtime": "0.200.2", + "@effectstream/sm": "0.200.2", + "@effectstream/utils": "0.200.2", "@zswap-da/database": "workspace:*", "@zswap-da/validator": "workspace:*", "@zswap-da/contract-offer-files": "workspace:*", - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/ledger-v8": "8.1.0", - "@midnight-ntwrk/midnight-js-contracts": "4.1.1", - "@midnight-ntwrk/midnight-js-network-id": "4.1.1", - "@midnight-ntwrk/onchain-runtime-v3": "3.0.0", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", + "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3", + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0", "@scure/base": "^2.0.0", "@sinclair/typebox": "^0.34.30", "effection": "^3.5.0", - "@effectstream/mip-zswap-offer": "0.3.0", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", "@fastify/rate-limit": "^10.0.0", "rxjs": "^7.8.2", "@zswap-da/offer-guard": "workspace:*" diff --git a/packages/node/preflight-external.ts b/packages/node/preflight-external.ts new file mode 100644 index 0000000..2c183ba --- /dev/null +++ b/packages/node/preflight-external.ts @@ -0,0 +1,101 @@ +// Pre-flight for EXTERNAL-STACK mode (start.external.ts): verify every +// out-of-process dependency is reachable before launching any kernel process. +// +// Why this file exists: the dev orchestrator's `launchMidnight` cannot be +// pointed at an external stack — its process list is static AND it declares +// `stopProcessAtPort: [9944, 8088, 6300]`, so against a running external stack +// it would first KILL the listeners on those ports and then start its own +// devnet. External mode therefore uses a separate entrypoint that launches no +// Midnight/Celestia infrastructure at all, and this probe is its fail-fast. +// +// Endpoints come from the same env the SDK reads (midnight-env / +// batcher config), so a probe success here means the kernel processes will +// dial the same addresses that just answered: +// MIDNIGHT_NODE_HTTP / MIDNIGHT_INDEXER_HTTP / MIDNIGHT_PROOF_SERVER_URL +// CELESTIA_RPC_URL + CELESTIA_AUTH_TOKEN + +import { midnightNetworkConfig } from "@effectstream/midnight-contracts/midnight-env"; + +const TIMEOUT_MS = 5_000; + +async function probe( + name: string, + fn: () => Promise, +): Promise { + try { + const detail = await fn(); + console.log(`[preflight] OK ${name}${detail ? ` — ${detail}` : ""}`); + return true; + } catch (e) { + console.error(`[preflight] FAIL ${name} — ${(e as Error).message}`); + return false; + } +} + +const withTimeout = (init?: RequestInit): RequestInit => ({ + ...init, + signal: AbortSignal.timeout(TIMEOUT_MS), +}); + +const net = midnightNetworkConfig; +console.log( + `[preflight] external stack: node=${net.node} indexer=${net.indexer} proofServer=${net.proofServer}`, +); + +const results = await Promise.all([ + probe("midnight node RPC", async () => { + const res = await fetch(net.node, withTimeout({ + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "chain_getHeader", params: [] }), + })); + const json = (await res.json()) as any; + if (!json?.result?.number) throw new Error(`unexpected RPC answer: ${JSON.stringify(json).slice(0, 120)}`); + return `head #${parseInt(json.result.number, 16)}`; + }), + + probe("midnight indexer GraphQL", async () => { + const res = await fetch(net.indexer, withTimeout({ + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ query: "{ __typename }" }), + })); + const json = (await res.json()) as any; + if (!json?.data?.__typename) throw new Error(`unexpected GraphQL answer: ${JSON.stringify(json).slice(0, 120)}`); + return json.data.__typename; + }), + + probe("midnight proof server", async () => { + // No health endpoint on the proof server — any HTTP answer proves the + // listener is there (the root path 404s, which is fine). + const res = await fetch(net.proofServer, withTimeout()); + return `HTTP ${res.status}`; + }), + + probe("celestia RPC (authed)", async () => { + const rpcUrl = process.env["CELESTIA_RPC_URL"] ?? "http://127.0.0.1:26658"; + const token = process.env["CELESTIA_AUTH_TOKEN"]; + if (!token) { + throw new Error( + "CELESTIA_AUTH_TOKEN is not set. In the demo-infra compose it is " + + "written by the celestia service to the shared `celestia-auth` volume.", + ); + } + const res = await fetch(rpcUrl, withTimeout({ + method: "POST", + headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}` }, + body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "header.NetworkHead", params: [] }), + })); + const json = (await res.json()) as any; + if (json.error) throw new Error(`header.NetworkHead: ${JSON.stringify(json.error)}`); + return `head height ${json.result?.header?.height ?? "?"}`; + }), +]); + +if (results.some((ok) => !ok)) { + console.error( + "[preflight] external stack is not ready — fix the failing endpoint(s) above and retry.", + ); + process.exit(1); +} +console.log("[preflight] all external dependencies reachable"); diff --git a/packages/node/state-machine.ts b/packages/node/state-machine.ts index e4a7269..d98c5b4 100644 --- a/packages/node/state-machine.ts +++ b/packages/node/state-machine.ts @@ -3,7 +3,7 @@ import { World } from "@effectstream/coroutine"; import { Stm } from "@effectstream/sm"; import type { BaseStfInput } from "@effectstream/sm"; import type { StartConfigGameStateTransitions } from "@effectstream/runtime"; -import { MidnightBech32m } from "@midnight-ntwrk/wallet-sdk-address-format"; +import { MidnightBech32m } from "@midnightntwrk/wallet-sdk-address-format"; import { Buffer } from "node:buffer"; import { newScheduledTimestampData } from "@effectstream/db"; import { AddressType } from "@effectstream/utils"; @@ -88,11 +88,12 @@ import { OFFER_MAX_BYTES, OFFER_TTL_SECONDS, ROOT_WINDOW_SECONDS, + ALLOW_CONTRACT_MAKER_OFFERS, } from "./env.ts"; // Normalize a value that may be a Uint8Array or a hex string into lowercase // hex (no `0x` prefix). Used at offer-indexing for nullifiers, owner keys, -// and intent hashes — ledger-v8 returns these as either form depending on +// and intent hashes — the ledger returns these as either form depending on // the field. function bytesOrStringToHex(value: unknown): string { if (value instanceof Uint8Array) { @@ -582,6 +583,7 @@ addTransition("celestia-zswap", function* (data) { const crypto = verifyOfferCrypto(result.tx!, { refState: getBlankRefState(MIDNIGHT_NETWORK_ID), tblock: new Date(data.blockTimestamp), + contractMakerRetry: ALLOW_CONTRACT_MAKER_OFFERS, }); if (!crypto.ok) { yield* rejectOffer(crypto.code, crypto.reason, { offerHash }); diff --git a/packages/node/sync-health.ts b/packages/node/sync-health.ts index 341cb11..8f21ebf 100644 --- a/packages/node/sync-health.ts +++ b/packages/node/sync-health.ts @@ -61,9 +61,18 @@ async function fetchCelestiaTip(): Promise { const ac = new AbortController(); const t = setTimeout(() => ac.abort(), 5000); try { + // Same bearer the DA write path sends. Without it, an auth-enabled + // Celestia node 401s this probe, the tip reads as null forever, and + // /v1/health/sync reports "syncing" on a fully-caught-up kernel — which + // starves every consumer that gates on currentness (measured live + // 2026-08-26: the solver's readiness gate). + const token = process.env["CELESTIA_AUTH_TOKEN"] ?? ""; const res = await fetch(CELESTIA_RPC_URL, { method: "POST", - headers: { "Content-Type": "application/json" }, + headers: { + "Content-Type": "application/json", + ...(token ? { Authorization: `Bearer ${token}` } : {}), + }, body: JSON.stringify({ jsonrpc: "2.0", method: "header.NetworkHead", params: [], id: 1 }), signal: ac.signal, }); diff --git a/packages/offer-guard/package.json b/packages/offer-guard/package.json index a6c1649..619de80 100644 --- a/packages/offer-guard/package.json +++ b/packages/offer-guard/package.json @@ -7,7 +7,7 @@ ".": "./mod.ts" }, "dependencies": { - "@effectstream/mip-zswap-offer": "0.3.0", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", "@zswap-da/validator": "workspace:*" }, "devDependencies": { diff --git a/packages/tests/discover-root-layout.ts b/packages/tests/discover-root-layout.ts index e005689..da7c169 100644 --- a/packages/tests/discover-root-layout.ts +++ b/packages/tests/discover-root-layout.ts @@ -10,7 +10,7 @@ // the exact byte offset of the root in the Input AND confirms the encoding is // directly comparable — the foundation for a verified byte-slice extractor. -import { Transaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; import { Buffer } from "node:buffer"; import { buildWalletAndWaitForFunds } from "@effectstream/midnight-contracts"; diff --git a/packages/tests/full-lifecycle-e2e.ts b/packages/tests/full-lifecycle-e2e.ts index 04c311d..d37b2bb 100644 --- a/packages/tests/full-lifecycle-e2e.ts +++ b/packages/tests/full-lifecycle-e2e.ts @@ -11,7 +11,7 @@ // // bun packages/tests/full-lifecycle-e2e.ts -import { Transaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; import pg from "pg"; import { buildWalletAndWaitForFunds } from "@effectstream/midnight-contracts"; diff --git a/packages/tests/grand-e2e/actors/wallets.ts b/packages/tests/grand-e2e/actors/wallets.ts index 1e1aa16..1baf39d 100644 --- a/packages/tests/grand-e2e/actors/wallets.ts +++ b/packages/tests/grand-e2e/actors/wallets.ts @@ -22,7 +22,7 @@ import * as fs from "node:fs"; import type { Client } from "pg"; import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; -import { Transaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; import { registerNightForDust } from "@effectstream/midnight-contracts"; import { midnightNetworkConfig as net } from "@effectstream/midnight-contracts/midnight-env"; @@ -209,7 +209,7 @@ export async function selfSplit( const maybeSigned = shielded ? recipe : await (pw.wr.wallet as any).signRecipe(recipe, (p: Uint8Array) => - pw.wr.unshieldedKeystore.signData(p), + pw.wr.unshieldedKeystore.signDataAsync(p), ); tx = await withProveSlot(() => pw.wr.wallet.finalizeRecipe(maybeSigned)); } catch (e) { @@ -376,7 +376,7 @@ async function genesisTransferOnce( const maybeSigned = shielded ? recipe : await (genesis.wallet as any).signRecipe(recipe, (p: Uint8Array) => - genesis.unshieldedKeystore.signData(p), + genesis.unshieldedKeystore.signDataAsync(p), ); const finalized = await withProveSlot(() => genesis.wallet.finalizeRecipe(maybeSigned)); try { @@ -704,13 +704,13 @@ async function buildOfferOnce(pw: PoolWallet, rec: OfferRecord): Promise - pw.wr.unshieldedKeystore.signData(p), + pw.wr.unshieldedKeystore.signDataAsync(p), ); finalized = await withProveSlot(() => pw.wr.wallet.finalizeRecipe(signed)); } } else { const signed = await (pw.wr.wallet as any).signRecipe(recipe, (p: Uint8Array) => - pw.wr.unshieldedKeystore.signData(p), + pw.wr.unshieldedKeystore.signDataAsync(p), ); finalized = await withProveSlot(() => pw.wr.wallet.finalizeRecipe(signed)); } @@ -1044,7 +1044,7 @@ export async function buildSameIntentWrapperPair( const sign = async (tx: any) => { const signed = await (pw.wr.wallet as any).signUnprovenTransaction( - tx, (data: Uint8Array) => pw.wr.unshieldedKeystore.signData(data), + tx, (data: Uint8Array) => pw.wr.unshieldedKeystore.signDataAsync(data), ); return withProveSlot(() => pw.wr.wallet.finalizeTransaction(signed)); }; @@ -1209,7 +1209,7 @@ async function prepareSettlementOnce( let recipe = balRecipe; if (kinds.has("unshielded")) { recipe = await (taker.wr.wallet as any).signRecipe(balRecipe, (p: Uint8Array) => - taker.wr.unshieldedKeystore.signData(p), + taker.wr.unshieldedKeystore.signDataAsync(p), ); } settleTx = await withProveSlot(() => taker.wr.wallet.finalizeRecipe(recipe)); diff --git a/packages/tests/grand-e2e/probe-cross-layer.ts b/packages/tests/grand-e2e/probe-cross-layer.ts index 9f3edea..c8b2c71 100644 --- a/packages/tests/grand-e2e/probe-cross-layer.ts +++ b/packages/tests/grand-e2e/probe-cross-layer.ts @@ -18,7 +18,7 @@ // bun run packages/tests/grand-e2e/probe-cross-layer.ts import { readFileSync } from "node:fs"; -import { Transaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; import { P2pAtomicSwaps } from "@effectstream/mip-zswap-offer/mip6"; import { getBlankRefState, validateZswapOfferBytes } from "@zswap-da/validator"; diff --git a/packages/tests/grand-e2e/probe-segments.ts b/packages/tests/grand-e2e/probe-segments.ts index a097044..a870f6d 100644 --- a/packages/tests/grand-e2e/probe-segments.ts +++ b/packages/tests/grand-e2e/probe-segments.ts @@ -11,7 +11,7 @@ // directly: what does imbalances(segId) return, per segment, before flattening? import { readFileSync } from "node:fs"; -import { Transaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; import { blobStorePath } from "./actors/wallets.ts"; import { OUT_DIR } from "./config.ts"; diff --git a/packages/tests/grand-e2e/provision-batcher-dust.ts b/packages/tests/grand-e2e/provision-batcher-dust.ts index f4ad858..0111ccc 100644 --- a/packages/tests/grand-e2e/provision-batcher-dust.ts +++ b/packages/tests/grand-e2e/provision-batcher-dust.ts @@ -85,7 +85,7 @@ async function main(): Promise { // Decode the Bech32m OBJECT (not its string form) — same call shape as // unshieldedAddressObj() in packages/tests/lib/wallet.ts. - const { UnshieldedAddress } = await import("@midnight-ntwrk/wallet-sdk-address-format"); + const { UnshieldedAddress } = await import("@midnightntwrk/wallet-sdk-address-format"); const receiver = UnshieldedAddress.codec.decode(net.id as any, targetBech32 as any); // Chunked: one output per UTXO, ≤12 per tx (the node rejects large @@ -107,7 +107,7 @@ async function main(): Promise { { ttl: new Date(Date.now() + 30 * 60_000), payFees: true }, ); const signed = await (genesis.wallet as any).signRecipe(recipe, (p: Uint8Array) => - genesis.unshieldedKeystore.signData(p), + genesis.unshieldedKeystore.signDataAsync(p), ); const finalized = await genesis.wallet.finalizeRecipe(signed); await genesis.wallet.submitTransaction(finalized); diff --git a/packages/tests/grand-e2e/triage-mixed-offer.ts b/packages/tests/grand-e2e/triage-mixed-offer.ts index ea817b3..e31a150 100644 --- a/packages/tests/grand-e2e/triage-mixed-offer.ts +++ b/packages/tests/grand-e2e/triage-mixed-offer.ts @@ -60,7 +60,7 @@ try { console.log("finalized via finalizeTransaction()"); } catch { const signed = await (w.wallet as any).signRecipe(recipe, (p: Uint8Array) => - w.unshieldedKeystore.signData(p), + w.unshieldedKeystore.signDataAsync(p), ); finalized = await w.wallet.finalizeRecipe(signed); console.log("finalized via signRecipe() + finalizeRecipe()"); diff --git a/packages/tests/infra/midnight-ready.test.ts b/packages/tests/infra/midnight-ready.test.ts index 514227a..5c500fb 100644 --- a/packages/tests/infra/midnight-ready.test.ts +++ b/packages/tests/infra/midnight-ready.test.ts @@ -17,7 +17,7 @@ export async function midnightReadyTest(): Promise { }); await assert("Midnight indexer responds on 8088", async () => { - const res = await fetch("http://localhost:8088/api/v3/graphql", { + const res = await fetch("http://localhost:8088/api/v4/graphql", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ query: "{ __typename }" }), diff --git a/packages/tests/lib/api.ts b/packages/tests/lib/api.ts index 4bc377d..1bee64b 100644 --- a/packages/tests/lib/api.ts +++ b/packages/tests/lib/api.ts @@ -3,7 +3,7 @@ // is the faithful path — it exercises the Celestia fetch + validate + index + // serve primitives, not an in-memory shortcut. -import { Transaction, type FinalizedTransaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction, type FinalizedTransaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; const API = process.env["ZSWAP_API"] ?? "http://127.0.0.1:9999"; diff --git a/packages/tests/lib/batcher.ts b/packages/tests/lib/batcher.ts index 53536cc..75f61b2 100644 --- a/packages/tests/lib/batcher.ts +++ b/packages/tests/lib/batcher.ts @@ -6,7 +6,7 @@ // transaction before it is handed to the batcher; the batcher then only adds // dust, proves, and submits. No swap participant needs dust — only the batcher. -import type { FinalizedTransaction } from "@midnight-ntwrk/ledger-v8"; +import type { FinalizedTransaction } from "@midnightntwrk/ledger-v9"; const BALANCER_URL = process.env["BATCHER_SUBMIT_URL"] ?? "http://127.0.0.1:3334"; diff --git a/packages/tests/lib/offer-files.ts b/packages/tests/lib/offer-files.ts index 4f26b91..a5e205a 100644 --- a/packages/tests/lib/offer-files.ts +++ b/packages/tests/lib/offer-files.ts @@ -11,7 +11,7 @@ import { dirname, resolve } from "node:path"; import { readFile } from "node:fs/promises"; import { findDeployedContract } from "@midnight-ntwrk/midnight-js-contracts"; import { CompiledContract } from "@midnight-ntwrk/compact-js"; -import { MidnightBech32m } from "@midnight-ntwrk/wallet-sdk-address-format"; +import { MidnightBech32m } from "@midnightntwrk/wallet-sdk-address-format"; import { configureMidnightNodeProviders } from "@effectstream/midnight-contracts"; import { midnightNetworkConfig as net } from "@effectstream/midnight-contracts/midnight-env"; import type { WalletResult } from "@effectstream/midnight-contracts/types"; diff --git a/packages/tests/lib/wallet.ts b/packages/tests/lib/wallet.ts index 55501e2..f68e467 100644 --- a/packages/tests/lib/wallet.ts +++ b/packages/tests/lib/wallet.ts @@ -4,7 +4,7 @@ // template's contracts-midnight scripts use). import * as Rx from "rxjs"; -import { UnshieldedAddress } from "@midnight-ntwrk/wallet-sdk-address-format"; +import { UnshieldedAddress } from "@midnightntwrk/wallet-sdk-address-format"; import { buildWalletFacade } from "@effectstream/midnight-contracts"; import { midnightNetworkConfig as net } from "@effectstream/midnight-contracts/midnight-env"; import type { WalletResult } from "@effectstream/midnight-contracts/types"; @@ -56,6 +56,66 @@ export async function waitForSync( ); } +/** + * Wait until a facade is fully SETTLED — not merely synced. `isSynced` / + * strict-complete progress only proves catch-up to the previously observed + * tip, NOT that the wallet has replayed its own just-finalized transaction + * (proven by the 00016 ledger-v9 migration's lifecycle diagnostic). Reusing a + * facade for a second prove+submit while its DUST state is stale is exactly + * what node rc.4 rejects with `1010: Invalid Transaction: Custom error: 170` + * (= MalformedError::InvalidDustSpendProof). Gate on: zero pending + * transactions, zero pending coins on all three subtrees, strict-complete + * progress. Port of the settlement gate that took the effectstream e2e from + * a timing-sensitive 170 to a deterministic pass. + */ +export async function waitForWalletSettlement( + w: WalletResult, + opts: { timeoutMs?: number; label?: string } = {}, +): Promise { + const { timeoutMs = 180_000, label = "wallet-settlement" } = opts; + const progress = (part: any) => part?.progress ?? part?.state?.progress; + const strictlyComplete = (part: any) => progress(part)?.isStrictlyComplete?.() === true; + const pendingCoins = (part: any) => + (part?.pendingCoins ?? part?.state?.pendingCoins)?.length ?? 0; + // DELIBERATELY NOT the full-quiescence gate the effectstream e2e uses + // (pending.all == 0 && every subtree's pendingCoins == 0): in THIS repo the + // wallet finalizes offer transactions that are never submitted on-chain — + // they are published to Celestia and only land when a taker settles — so + // pending.all and the shielded pendingCoins stay non-zero BY DESIGN and a + // full-quiescence gate deadlocks (measured: 180s timeout on the first run). + // Error 170 is InvalidDustSpendProof, a DUST-state disagreement — so the + // gate is DUST-subtree quiescence (the fee-paying state the next + // balance+prove will declare) plus strict-complete progress everywhere. + let last: any = null; + try { + await Rx.firstValueFrom( + (w.wallet as any).state().pipe( + Rx.tap((s: any) => { last = s; }), + Rx.filter((s: any) => + strictlyComplete(s.shielded) && + strictlyComplete(s.unshielded) && + strictlyComplete(s.dust) && + pendingCoins(s.dust) === 0, + ), + Rx.timeout({ + each: timeoutMs, + with: () => + Rx.throwError(() => new Error(`${label}: settlement timeout after ${timeoutMs}ms`)), + }), + ), + ); + } catch (e) { + // Dump what the gate saw so a timeout is diagnosable from the log alone. + console.error(`[${label}] last state: ` + JSON.stringify({ + pendingAll: last?.pending?.all?.length ?? null, + shielded: { strict: strictlyComplete(last?.shielded), pendingCoins: pendingCoins(last?.shielded) }, + unshielded: { strict: strictlyComplete(last?.unshielded), pendingCoins: pendingCoins(last?.unshielded) }, + dust: { strict: strictlyComplete(last?.dust), pendingCoins: pendingCoins(last?.dust) }, + })); + throw e; + } +} + /** Read the current shielded balances (color → amount). */ export async function shieldedBalances(w: WalletResult): Promise> { const st = await w.wallet.shielded.waitForSyncedState(); @@ -120,4 +180,8 @@ export async function transferShielded( ); const finalized = await from.wallet.finalizeRecipe(recipe); await from.wallet.submitTransaction(finalized); + // Never leave the facade with stale DUST state: a caller that immediately + // sends again (serial transfers are common in these tests) would hit rc.4 + // error 170 (InvalidDustSpendProof). See waitForWalletSettlement. + await waitForWalletSettlement(from, { label: "post-transfer" }); } diff --git a/packages/tests/package.json b/packages/tests/package.json index fb80c33..80b85d0 100644 --- a/packages/tests/package.json +++ b/packages/tests/package.json @@ -7,11 +7,11 @@ "test": "bun run run-tests.ts" }, "dependencies": { - "@effectstream/midnight-contracts": "0.103.1", - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/ledger-v8": "8.1.0", - "@midnight-ntwrk/midnight-js-contracts": "4.1.1", - "@midnight-ntwrk/midnight-js-network-id": "4.1.1", + "@effectstream/midnight-contracts": "0.200.2", + "@midnight-ntwrk/compact-js": "2.5.5-rc.7", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.6", + "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.6", "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0", "@scure/base": "^2.0.0", @@ -19,11 +19,11 @@ "@zswap-da/offer-guard": "workspace:*", "@zswap-da/validator": "workspace:*", "effection": "^3.5.0", - "@effectstream/mip-zswap-offer": "0.3.0", + "@effectstream/mip-zswap-offer": "0.4.0-v9.0", "pg": "^8.14.0", "rxjs": "^7.8.2", - "@midnightntwrk/wallet-sdk-hd": "3.0.3", - "@midnightntwrk/wallet-sdk-unshielded-wallet": "3.1.0" + "@midnightntwrk/wallet-sdk-hd": "3.1.0-beta.1", + "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2" }, "devDependencies": { "@types/pg": "^8.11.10" diff --git a/packages/tests/ring-swap-e2e.ts b/packages/tests/ring-swap-e2e.ts index c693f0f..0e436b7 100644 --- a/packages/tests/ring-swap-e2e.ts +++ b/packages/tests/ring-swap-e2e.ts @@ -16,7 +16,7 @@ import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; -import type { FinalizedTransaction } from "@midnight-ntwrk/ledger-v8"; +import type { FinalizedTransaction } from "@midnightntwrk/ledger-v9"; import pg from "pg"; import { registerNightForDust } from "@effectstream/midnight-contracts"; import { midnightNetworkConfig as net } from "@effectstream/midnight-contracts/midnight-env"; diff --git a/packages/tests/stm/api.test.ts b/packages/tests/stm/api.test.ts index 7ec589f..22535e8 100644 --- a/packages/tests/stm/api.test.ts +++ b/packages/tests/stm/api.test.ts @@ -146,6 +146,17 @@ export async function apiTest(db: Client): Promise { ); await assert("API returned my 2 offers", async () => apiOffers.length === 2); + // Resolve the DB row ids NOW, while the offers are still live in + // offer_file — after settlement they move to offer_file_history and a + // by-hash lookup in offer_file returns nothing (measured: the archive + // assertions timed out on exactly that). + const ids = ( + await db.query<{ id: number }>( + `SELECT id FROM offer_file WHERE offer_hash = ANY($1::text[])`, + [apiOffers.map((o: any) => o.offerId)], + ) + ).rows.map((r) => r.id); + const giveColors = new Set(apiOffers.flatMap((o) => o.computed.gives.map((g) => g.token))); const wantColors = new Set(apiOffers.flatMap((o) => o.computed.wants.map((w) => w.token))); await assert( @@ -205,7 +216,6 @@ export async function apiTest(db: Client): Promise { async () => spentOk, ); - const ids = apiOffers.map((o) => o.id); const archivedOk = await waitFor( "both offers archived", async () => offersGone(db, ids), @@ -247,10 +257,18 @@ export async function apiTest(db: Client): Promise { console.log(`${TAG} NEGATIVE: re-submitting the already-settled P0 offer…`); const beforeBad2 = await count(db, "offer_file"); const badRes2 = await submitOffer(blob0); + // A BYTE-IDENTICAL re-submit hits the submit gate's dedup rule FIRST — it + // probes offer_file AND offer_file_history by hash (deliberately, see the + // api.ts comment: cheapest check against the cheapest attack), so an + // archived offer answers 409 DUPLICATE_OFFER before the nullifier + // liveness rule can answer 400 NULLIFIER_SPENT. Both are correct + // fee-free rejections of a spent offer; NULLIFIER_SPENT is reserved for a + // DIFFERENT offer spending the same coins. await assert( - "spent-offer re-submit rejected (NULLIFIER_SPENT)", + "spent-offer re-submit rejected (DUPLICATE_OFFER or NULLIFIER_SPENT)", async () => - badRes2.status === 400 && badRes2.body?.error === "NULLIFIER_SPENT", + (badRes2.status === 409 && badRes2.body?.error === "DUPLICATE_OFFER") || + (badRes2.status === 400 && badRes2.body?.error === "NULLIFIER_SPENT"), ); await sleep(8000); await assert( diff --git a/packages/tests/stm/multi-token.test.ts b/packages/tests/stm/multi-token.test.ts index 6c03349..465b4bd 100644 --- a/packages/tests/stm/multi-token.test.ts +++ b/packages/tests/stm/multi-token.test.ts @@ -21,6 +21,7 @@ import { transferShielded, waitForShielded, waitForSync, + waitForWalletSettlement, } from "../lib/wallet.ts"; import { describeImbalances, @@ -81,9 +82,15 @@ export async function multiTokenTest(db: Client): Promise { console.log(`${TAG} minting T0,T1,T2…`); const deployed = await joinOfferFiles(genesis); const nonce = BigInt(Date.now()); + // Serial mints on ONE facade: each mint is a prove+submit, and reusing the + // facade before it replays its own submission is the rc.4 error-170 + // (InvalidDustSpendProof) trap — gate between them (see waitForWalletSettlement). const T0 = await mintShielded(deployed, SEP.T0, MINT_AMOUNT, nonce); + await waitForWalletSettlement(genesis, { label: `${TAG} post-mint-T0` }); const T1 = await mintShielded(deployed, SEP.T1, MINT_AMOUNT, nonce + 1n); + await waitForWalletSettlement(genesis, { label: `${TAG} post-mint-T1` }); const T2 = await mintShielded(deployed, SEP.T2, MINT_AMOUNT, nonce + 2n); + await waitForWalletSettlement(genesis, { label: `${TAG} post-mint-T2` }); await assert("T0,T1,T2 minted", async () => !!T0 && !!T1 && !!T2); for (const [color, label] of [[T0, "T0"], [T1, "T1"], [T2, "T2"]] as const) { diff --git a/packages/tests/stm/unshielded-only.test.ts b/packages/tests/stm/unshielded-only.test.ts index 8a73dbd..fcd09dc 100644 --- a/packages/tests/stm/unshielded-only.test.ts +++ b/packages/tests/stm/unshielded-only.test.ts @@ -7,7 +7,7 @@ import { assert } from "../helpers.ts"; import { count, offerArchivedConsumed, waitFor } from "../lib/db.ts"; import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; -import { MidnightBech32m } from "@midnight-ntwrk/wallet-sdk-address-format"; +import { MidnightBech32m } from "@midnightntwrk/wallet-sdk-address-format"; import { registerNightForDust } from "@effectstream/midnight-contracts"; import { midnightNetworkConfig as net } from "@effectstream/midnight-contracts/midnight-env"; import { joinOfferFiles, mintUnshielded } from "../lib/offer-files.ts"; @@ -17,6 +17,7 @@ import { unshieldedAddressObj, waitForSync, waitForUnshielded, + waitForWalletSettlement, } from "../lib/wallet.ts"; import { describeImbalances, @@ -118,7 +119,7 @@ export async function unshieldedOnlyTest(db: Client): Promise { { ttl: new Date(Date.now() + 30 * 60_000), payFees: false }, ); const signedRecipe = await (m0.wallet as any).signRecipe(recipe, (p: Uint8Array) => - m0.unshieldedKeystore.signData(p), + m0.unshieldedKeystore.signDataAsync(p), ); const offer0 = await m0.wallet.finalizeRecipe(signedRecipe); console.log(`${TAG} offer imbalances: ${describeImbalances(offer0 as any)}`); @@ -153,6 +154,9 @@ export async function unshieldedOnlyTest(db: Client): Promise { if (!offerRow) return; console.log(`${TAG} M1 balancing unshielded-only…`); + // Same error-170 guard as zswap-flow: M1 made the offer above; let its + // wallet replay it before the second prove+submit. + await waitForWalletSettlement(m1, { label: `${TAG} pre-settle` }); const balRecipe = await (m1.wallet as any).balanceFinalizedTransaction( offer0, shieldedKeys(m1), @@ -162,7 +166,7 @@ export async function unshieldedOnlyTest(db: Client): Promise { }, ); const balSigned = await (m1.wallet as any).signRecipe(balRecipe, (p: Uint8Array) => - m1.unshieldedKeystore.signData(p), + m1.unshieldedKeystore.signDataAsync(p), ); const balancedTx = await m1.wallet.finalizeRecipe(balSigned); await assert( diff --git a/packages/tests/stm/zswap-flow.test.ts b/packages/tests/stm/zswap-flow.test.ts index 3b7e410..878d0df 100644 --- a/packages/tests/stm/zswap-flow.test.ts +++ b/packages/tests/stm/zswap-flow.test.ts @@ -17,7 +17,7 @@ import { waitFor, } from "../lib/db.ts"; import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; -import { Transaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; import { registerNightForDust } from "@effectstream/midnight-contracts"; import { midnightNetworkConfig as net } from "@effectstream/midnight-contracts/midnight-env"; @@ -27,6 +27,7 @@ import { shieldedKeys, waitForShielded, waitForSync, + waitForWalletSettlement, } from "../lib/wallet.ts"; import { submitOffer } from "../lib/api.ts"; @@ -76,7 +77,11 @@ export async function zswapFlowTest(db: Client): Promise { const deployed = await joinOfferFiles(genesis); const nonce = BigInt(Date.now()); const shieldedA = await mintShielded(deployed, SEP.A, MINT_AMOUNT, nonce); + // Same error-170 guard as multi-token: never reuse the facade for a second + // prove+submit before it has replayed the first. + await waitForWalletSettlement(genesis, { label: "post-mint-A" }); const shieldedB = await mintShielded(deployed, SEP.B, MINT_AMOUNT, nonce + 1n); + await waitForWalletSettlement(genesis, { label: "post-mint-B" }); const haveMinted = (await waitForShielded(genesis, shieldedA, GIVE_AMOUNT, 24)) >= GIVE_AMOUNT && @@ -127,6 +132,10 @@ export async function zswapFlowTest(db: Client): Promise { if (!offerRow) return; console.log("[lifecycle] balancing + settling the A↔B offer on Midnight…"); + // The genesis facade just minted and made offers; reusing it for a second + // prove+submit before it has replayed its own transactions is the exact + // rc.4 error-170 (InvalidDustSpendProof) trap — see waitForWalletSettlement. + await waitForWalletSettlement(genesis, { label: "pre-settle" }); const offerTx = Transaction.deserialize( "signature", "proof", diff --git a/packages/tests/two-wallet-swap-e2e.ts b/packages/tests/two-wallet-swap-e2e.ts index e4a4d2d..44a6cc3 100644 --- a/packages/tests/two-wallet-swap-e2e.ts +++ b/packages/tests/two-wallet-swap-e2e.ts @@ -17,7 +17,7 @@ // // bun packages/tests/two-wallet-swap-e2e.ts -import { Transaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; import pg from "pg"; diff --git a/packages/tests/unshielded-diagnose.ts b/packages/tests/unshielded-diagnose.ts index a088a73..2cc2d9c 100644 --- a/packages/tests/unshielded-diagnose.ts +++ b/packages/tests/unshielded-diagnose.ts @@ -12,7 +12,7 @@ // bun packages/tests/unshielded-diagnose.ts import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; -import { UnshieldedAddress } from "@midnight-ntwrk/wallet-sdk-address-format"; +import { UnshieldedAddress } from "@midnightntwrk/wallet-sdk-address-format"; import { registerNightForDust } from "@effectstream/midnight-contracts"; import { midnightNetworkConfig as net } from "@effectstream/midnight-contracts/midnight-env"; import { deriveLegs } from "@zswap-da/validator"; @@ -148,7 +148,7 @@ try { ); const cSigned = await (pC.wallet as any).signUnprovenTransaction( c0.transaction, - (data: Uint8Array) => pC.unshieldedKeystore.signData(data), + (data: Uint8Array) => pC.unshieldedKeystore.signDataAsync(data), ); introspect("C) cross-kind give UNSHIELDED U / want shielded T0", cSigned); } catch (e) { diff --git a/packages/tests/unshielded-swap-e2e.ts b/packages/tests/unshielded-swap-e2e.ts index 3f50af4..8831c42 100644 --- a/packages/tests/unshielded-swap-e2e.ts +++ b/packages/tests/unshielded-swap-e2e.ts @@ -18,8 +18,8 @@ import { setNetworkId } from "@midnight-ntwrk/midnight-js-network-id"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; -import type { FinalizedTransaction } from "@midnight-ntwrk/ledger-v8"; -import { MidnightBech32m, UnshieldedAddress } from "@midnight-ntwrk/wallet-sdk-address-format"; +import type { FinalizedTransaction } from "@midnightntwrk/ledger-v9"; +import { MidnightBech32m, UnshieldedAddress } from "@midnightntwrk/wallet-sdk-address-format"; import pg from "pg"; import { registerNightForDust } from "@effectstream/midnight-contracts"; import { midnightNetworkConfig as net } from "@effectstream/midnight-contracts/midnight-env"; @@ -157,7 +157,7 @@ try { ); const signed = await (p1.wallet as any).signUnprovenTransaction( r1.transaction, - (data: Uint8Array) => p1.unshieldedKeystore.signData(data), + (data: Uint8Array) => p1.unshieldedKeystore.signDataAsync(data), ); offer1 = await p1.wallet.finalizeTransaction(signed); check("P1 unshielded-give offer built + signed", true); diff --git a/packages/validator/derive.ts b/packages/validator/derive.ts index 2cf19d5..47d1008 100644 --- a/packages/validator/derive.ts +++ b/packages/validator/derive.ts @@ -1,6 +1,6 @@ import { Buffer } from "node:buffer"; -import { addressFromKey } from "@midnight-ntwrk/ledger-v8"; -import type { UnprovenTransaction } from "@midnight-ntwrk/ledger-v8"; +import { addressFromKey } from "@midnightntwrk/ledger-v9"; +import type { UnprovenTransaction } from "@midnightntwrk/ledger-v9"; import { P2pAtomicSwaps, UnknownTokenTagError } from "@effectstream/mip-zswap-offer/mip6"; import type { @@ -26,7 +26,7 @@ import type { export { UnknownTokenTagError }; // Normalize a value that may be a Uint8Array or a hex string into lowercase -// hex (no `0x` prefix). ledger-v8 returns nullifiers / owner keys / intent +// hex (no `0x` prefix). The ledger returns nullifiers / owner keys / intent // hashes as either form depending on the field. Mirrors the helper in the // node's state-machine so indexing and validation agree byte-for-byte. export function bytesOrStringToHex(value: unknown): string { @@ -73,9 +73,12 @@ export function collectNullifiers(tx: UnprovenTransaction): string[] { } // Collect the (owner, intentHash, outputNo) triples for every unshielded UTXO -// the offer spends. `UtxoSpend.owner` is a raw SignatureVerifyingKey; apply -// `addressFromKey` so it matches the 32-byte address the indexer reports on -// consumption (the `midnight-unshielded-spend` path). +// the offer spends. `UtxoSpend.owner` is a SignatureVerifyingKey — in v9 a +// TAGGED object `{ tag: 'schnorr' | 'ecdsa', value: hex }`, no longer v8's +// bare hex string. `addressFromKey` takes the tagged object and returns the +// 32-byte address the indexer reports on consumption (the +// `midnight-unshielded-spend` path). Bare-string owners (old fixtures) are +// wrapped as schnorr, v8's only kind. export function collectUnshieldedSpends( tx: UnprovenTransaction, ): UnshieldedSpendRef[] { @@ -89,7 +92,9 @@ export function collectUnshieldedSpends( ].filter(Boolean); for (const offer of unshieldedOffers) { for (const spend of offer.inputs ?? []) { - const ownerSvk = bytesOrStringToHex(spend.owner); + const ownerSvk = typeof spend.owner === "object" && spend.owner !== null + ? spend.owner + : { tag: "schnorr" as const, value: bytesOrStringToHex(spend.owner) }; spends.push({ owner: addressFromKey(ownerSvk).toLowerCase(), intentHash: bytesOrStringToHex(spend.intentHash).toLowerCase(), diff --git a/packages/validator/extract-root.test.ts b/packages/validator/extract-root.test.ts index e4260f7..ecef598 100644 --- a/packages/validator/extract-root.test.ts +++ b/packages/validator/extract-root.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"; import { existsSync, readFileSync } from "node:fs"; import { join } from "node:path"; import { Buffer } from "node:buffer"; -import { Transaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; import { diff --git a/packages/validator/extract-root.ts b/packages/validator/extract-root.ts index a16e7b7..650db5f 100644 --- a/packages/validator/extract-root.ts +++ b/packages/validator/extract-root.ts @@ -1,8 +1,8 @@ import { Buffer } from "node:buffer"; -import type { UnprovenTransaction } from "@midnight-ntwrk/ledger-v8"; +import type { UnprovenTransaction } from "@midnightntwrk/ledger-v9"; // Extracts a shielded input's merkle_tree_root from a serialized ZswapInput, -// pinned to the `zswap-input[v2]` layout. The ledger-v8 binding does not expose +// pinned to the `zswap-input[v2]` layout. The ledger binding (v8 and v9 alike) does not expose // the root as a getter, so we read it from the serialized bytes. // // Layout (verified empirically against the live devnet — see @@ -76,7 +76,7 @@ export function canonicalRootHex(hexOrBytes: string | Uint8Array): string { return Buffer.from(hexOrBytes).toString("hex"); } -// Extract one shielded input's root as canonical hex. `input` is a ledger-v8 +// Extract one shielded input's root as canonical hex. `input` is a ledger // `ZswapInput` (we only use `serialize()` + the `nullifier` getter). export function extractInputRoot(input: { serialize(): Uint8Array; diff --git a/packages/validator/fixtures/valid-offer.bech32 b/packages/validator/fixtures/valid-offer.bech32 index 018b87f..84fb7ae 100644 --- a/packages/validator/fixtures/valid-offer.bech32 +++ b/packages/validator/fixtures/valid-offer.bech32 @@ -1 +1 @@ -swapoffer1d45kgmnfva58gwn5wfskuumpvd6xjmmwtdmrjhfgwd5kwmnpw36hye2mwcc46trswfhk7e3vwpjkgetjwdjkuttnvd5xummjwfdhvv2a9yaygqq3f5zs6f7ekskatxa2q52upzgdazehv6c49l7za64twkt889g4hns8pfe8ed4jj3csgqglh30y5txxy3hlpwmx8eyddyusjyz36uz33ekkq9emxk763hms9gjq72mkqk7286j000d5zy84cmf4ck8d2yh67a5hxqupfw62pf954uahzx7wdmrsynpvxu7sja0693ektwacj6xs3tu8egr3dhqzw7xsdx4w6py2u795ypqg2pyev2xutumwuy3gycu342zpq8g335tsknhykc3tvfkqp2dz3l5kggp09w6wf7x9vfctvnrnrnjudjagywv7cgwdg7ctxajaxvlzksufld7fd435f6jgqeel5hwcpjjk6mknn2zrq7e7azjfxvp85ws7h2z63jxml6uyyhx0kha7jzvwpzw4mueav2lzvgmqxe6lxkhsvzpm7u5txc6vf8c2rwnwd8293l75ujq8hd50t25egjugmtd55m4werfpylrvj7qpfy390ezzt7654mew3vn9qvz6tlt0aa2gs4vwx6ygem84p2qt7mqtgjanldpf2fyt37yv0yzv4p98w6z344vwrjn2k9ctj3e2qna9ms35777krj93nx9l874rk8y9tgwepqjf8nmu89eyft447elry734422epu0vmw32eqeua4fdpge0d4z7l2j6kglutu9kmjt9xgymwe8fkm68m4app3zlzt8lk87sadq6ggf785jktrqvr3ahtuxmrk55ppg49hyxcrwzalrglgw247n550f8wratrk0wznfmy9ylc2qqypjsj5amdpghleqfa0qjg9c29cjs639yxvh4nht8pyngz29ghap79gdw7gqn9yey8f4jljw8atnl7t7jweudrdqpuygvuhaquljd0rxwd5l982f7c7y32wpku3n85l73v2tp2te3wkp8k2lw6wh6k5eyjgkyuln72xxkn547mfm625gj26l4h3fwmdsywhq9kkegkvrk4lla995e4z4y3a6gvhh06r6vjtzv4f39hhmekv6hcarhkw48xus4qyw0fyv4ss9wr65rp6fl9c5tsuv237gf9x56nktuq2j8hng0a4m4eluknlmw6j35f4zt52syp3v3lns0r397l5sdmv50rstr8608j6zxsmvlhzu2xra66v8f0c0c4ageypcve2smrxnpucrdkvpmwzw3umy4d3uj2u8xgprjt0q9v4xtagatdvjsr9sqqwt6khvx4yd3d2m2lcc8q53mhtrdgq0vn854ns66tssvm948lwtn8g38r5ll5p6qan4tfm6lkxf403s7h6nek3fchmwhux9w48fqdf8vvrk6zm3yn9vdv94ejrer0hdja07p0cphxvnyj26ayf69zv9hst8nfjw8lwwpcn8d77j5ql2tf6rdlqqqtpn794u33rsas5l5gykf9nkug9tpq9cscs8dfgpy9sd297jnlttyu439gel7wmf52e9nznz0w80r7wzepduaafv4cegmus6juc7vmnk2dg36qdatrejhy6nyj253kspnme6xdffple8myux84630m8x7v5t7k95c7nule5ev43hleag7utcfxvm2geqnuyg9qed93ydj498shxepy62gl3sw2edrxpljjp0cjvuclpj4v0kv2fyss2jxxn53ygea5j32usm0pnvhwnu47jv0su5ljttj4thyt53dk9mhpmfqrw5ctkvujq4u7v34vqsmw3zepcc0gj426hs23kmzanunhlwgpad5ewjzz0c32ehzd02nsw7m7kvecvq85v2eqlfsz86mrrwhhuk7m2vz3tz37trml6eeuml69aevmej2dxs4k7ktr8ajscuk9wvmt9x4pwa6xgex7j3nrsu30fulvvtvm9f6ydq5uz2e4k3m5xvtsyrl3pl85yqz7ag6s43ul7mncdj93jyqpyq9sln3kdzp7dztwfv9jcm8mepyt970nvsevpye7y7suysm626h4gpuqlaksl3l5pwg4u8lsjuefyr5k568gcaagnga2da6m92fxew0yur0075vxaqjfn03sd2k5n7wgjnukrhlzvj05wacgvq5nevzspns4vl22ys0jehcp0a53xnua8pwj58a6dkf6zsyaxhrzqpnzg8djeaw8r3ejxn6ezujyq6xgta74vnj0pyut7c8l896m8ylnug9m0ajtd3qr7gy7k8jdvdp9wyn7cfxfakgm4wju4ae4qsj6zwy8xk5j39gpx4mtfgy6qamlv6kfu4txntlwqx5m6avahxffulg4x4hcmkelljjqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqyqquymweavrjz69lunlx7rtlqnjwscghy2cth4krgsptsky6azxuuhv3l487gvaz49qhzkh9nazfzkpmphumvmxrvkf29t4v44lamqgaf4tug8vqlpx5vaegxmzzedv6adjl2qhj7p08m8kwd45hcnm4p5zyhsq99c5az37lqttghazmp4ls5q2kyp57jp4a5y9fghdt4qtg8rjagk89cylxyr88rw27vupeagu78r6ym0gpmlcpk6f7srsfrca8y5g4q3hxgyk3xpe4kyv5a246n3z3d67nq9tuyz8l26ljewdhujkau686t3kcvr04ma3eujwtk2fjpn65gkzu4j3e489dngj4s52wgf9xtchk6gcp998fst7mnmsmtar50dcv7qvlqlxexlxph6w8ju24q58lsflq4wqx0ufuqdf3wf5pyvgvz248jzhjyvhr8usdzxrnpcqem6v8g4nrhg9w3fsuwyuc5qk2vq4e9q7avpg5h3l4rlrehmrh0mfd45tf9sgkwn4vtwc7n0nkp7cjq72xfh3hp73x48m4ra9hn6d44vft9jfctyv09l5tfkacwvzzvazx3lm9w4j3nqy49ydymjtrj6x8rwg3p7j3hzv73p0gwkdvdkzwshzna5tdyypq23c05trx7tdct5axymg3lxnearqdgquznz7ueg95rvdgea9pfqlfce9e5gqykdkx9c367djsvuy98ecdcyfvcav5mz4vvz8lj45z5vgjl57lj6lufsdddmff5sm26mm7gtrddddkf3t6xghp6jy3edwdflg9u5365ru0yypkkzwhytu6pn9gxsd4vfejwrrtfja9w5d60nv9n385jp8xwk7fkke9n84dhc3v75njx3lrylsl64zyw6h8ydaj20uxs9g5hk8wc8vu0v7z5rv2r85ek6r8suqym8k8hhfdfgrc50g0pv2j6xzgh89f2jagul72v6jmmnpwhhppjah8r6m0xklhen33e59vqztepya2r5r0t92t0gs0fvum47vccy5rg4636srt767pc6nktxx7az286497277wwwgtqcc4acgn3j5xhwu0fdm2hlqpeqealux5yv5dpx5ntckmhwcaeu6dug0p3dq0xvhes30m7h0dx60s6cm8k89gqd75ufekqqkhpkxyafh6z5wm4xf6jyhehhj39k36mwretde8cdytfgvw9dk4g39tssxj8rg2x7kl0dv3a0jw564yx5yfykl6yzzmquxfa9xmey99lgj3ypf242ayqeexgrnuelygnpfnn8j5ay64d0dzl7knehzamfglsnhpx50vr29jsfnwrdndsxr3s02cjn04hzhnanlevl3ycwc6z79p49mwy3x932tvey7sk4nlpy64eyvkq3j8c858cxfjsvx58q8tp3x8mdurkskvs3kq2yl404drghtsffz6wlxzyur0r6akea8h739rkuzjwslnj973druq4krmhdpc4yhdzgw4rcpa3gr0hfdtdeyw7cntgvy78arw9ps9sa8ekzksn0d3r9jay5qszu6x5zq9prwyythlen4f9jk49ec45js4ffcvzh34ryeqlvnjpzt5c22lc0hv7dgszrep2gd9xjmmry62gryq7zcr4setdwwgwyppj4nmnq5s4gjcdm6rgueedxutw6schdxck2j6meapdyepq8dg8nyqmf7hc6p4pwe4u9cl9xdt4qpjuyd0542e2mtgrch8j3mskm02d8tpl2p2aqjvyvyy2mds0jccf3gszra8qucuwmm0za5q0zhqs0wlx6asvk5ty0umz8cd28dxey4jc33s2w6c9z5xrkxg0w630yxxlst6npjarvzw0fwvxdw74sr7ww9p3p364wlzkxl6x57r2yye6n9hh8wv3xcqacs6urh9gc2mkhy8rstwt9xxn55hrey4ag92r9hrzy5r6tptgcwzzpl2f80fr23mc90749sccp7n5rvrtnuarzegq4qjx6dun6ea2ezqne9m4xdq58e0rxyt92zxw5j60mcd9z8s44ghwj5zp3vmgtu9hw96d7ekq6ewez3dg4p5tlqjua49wywfe03mzspfk2z44hra5cr0kdesdmq07cpm9z5eu0pwn487jkxmpdyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpujv9xx8ftv2eem3x8gkm2p3zc4zvjf63fwpz3ar5hd4jerjfan8vktryue2k9xsaujv3uplemdp5gahlv07xjv2ee67k0njc6wrfqzrn7qp89fdet4keecy4vkuvdq9teakenylt89z7pxkw9d58d84z3mypw3ktg2rk03mfgdgy20z0kszlqncej54lj3h5vda3ruyw7ylyzp7c3l3ehlqqap3f48z2vuqkywshpsystautv0d9w0dpfgsy9ej8nps7udrwrc57lyf8zwu9lg44j8zgr8r83cz4u4tz9ptnaeqt0p9dmu3h8khrcfkp8vvh8quk934gy3a7c3rnhjfq4ep24hf4wr5le84lk5mhfejyzjcxls5y60evksahaeeafu3kmt52csm8u25889equffsvqle5m3cut7zqcxm9njjx7fq83lfefrpy3pmpwcl3pkjfv7q4r8ylc7h63qalap4sf7w2w4sd95xdg823vrxsv9lxgwz7uvserntngu5unyw89nun4sg9rtvu6rv3mm6p3l6w9d8f60lmrn88wfw3jy4eanv9hv64f5crxr2uuu7a9hn08u9qyc5l7us2hnvyatd0edvvym2cgkkqfy37hl2yhgtru8mnnkegq5afvstz0c3q3udv2tm43yxcjpkxwpgc65fsdcztuj82np7spvlkry7ahz5q2pjcwyvln97tsq8n8k40030hmy8phd83x3ukfns2944wjycsh79kfa6t977g2nz6t3279md3rveq2weh6pq0svcr87h3dsuyzkhnhn7ldqpr703slrfsp2sltuvn9wen0xuepprajmclhs9yp5h7ymmz02elht5xykh8k3dyygej5080wrvgjk2ptmd395kxk0jrt6q7730wuk7c6escza9nwhck8dyynhluj2x9jvgnvvfyjj2y9yrn8k4ptjzr00mgl0x7ha2f4rg3kpr5ftr5yyzc95j9c33rryc3xuywc23jg07a8p9wdjxfw9k0q3v4gm9jlcx5cyraun4wr9un6tredzd99xvlqrexyscdf7dle5zwpnkqv8akzflqh6n2zm3etcyj7f4ggz0zwxmqxzrpg9ruycepfpgvnq3chpl7j0gc49gny8365mcm9x64064kh39ecu9vck98hmza8d7ezxv6mx42drshut8het7udxlll7k2k5uh6ujj85l8nuuanr2na4ft5u4dqvhhjqpncn78gc6dzj0966p4gwgkxvh2yhhnyg47jlnpmyxut600ckv8af76llgu5z0sehrrae8zy4ly5r6h09zudhkr7nv0nn46gfx45g09wsjjwt596qd2tt8m0uv77j7dl4cn64zlxdk7thxqj6ja8zfux9egy0xu7knmjxwxmlkpyx6khs8y23e4n65y9cxmw47yqmvsrrehp5gsyy4fzmpv5xff0tlmk2pfp4q8zgemqzvm0dy8tvyzafmup8k0a6d5320syp4w30y0mrnmrws5rvst3zvwtuvhugdrhq5226e5applsh864ysent06ru6z6ykyvmluga83jcfrur5crhvxgdyy3hf3zvpc5ja4xwtju7klajd6jwm443tkayzze9q9gl74gspy0m55ge9kflnc2gv42q7eppg5kf5029eqex6kx987xzqshx0mgrx2jvm0mkj2djqw9er6d3rkk9a5cvmcwsjkg84flp0fmsynf45dasy9cf6v5arl6n4zua6a900eeps23rw2c853rnd9dh568kqlysx6exqemxetp2g7zmutsyuc2gtwchdyxl6wz6vse2h86rwwqfpfwm0vrvzat0uwt0yp2fj5zm5vxgkyx3t0d7j9lv326rr4vu5dawa33l29vzaav0tl340zlfcgx08hfzpzvq03pz4znldxgdhpa5d9z86t2sysceacxlhyvn658gvkl97st6aeuqfzh96qzltyxk3ra52nh4jcpkp4wjc8nx6f490t5fms7vyda2t0kedn7zkzhswuzu07ddmexxa2wpad82alqk4sg0wc8gy6z69gaakyfpu2548lf6nac2j79tnc76garrnjc395046gatwdnh8yxcechn88rmzwkqx64eqs6zza78ke0vc5ukwk2yalc7upcnd0xmw39mya7gly0chvydezh6yrx2jjep7xrx5wvmyrj2zv8u65tmju63pgmj8vahnq77ys6fv5jg3rrkdkprkv0h9fyfe29wc0u6luxtzja0g30mf90l6n87nvqhmq9sfnqkrf8qgrsyzy8cs8ep4fzgekf3uxd59encfep8ypsusa80dx7zf2rq4y5gvkcprhvkgy3vcj50p6dk8pdv72p9l8kkv4v99y6v3065j5hhfhzw64jacqfl5kj843q7us8v387tdq2sv8gfk72qr5g5ealganjvl5zlzr5t826nwce5hy9lepq0aqw8aewdghp9dquxsh7qk3mgvu6xrl0v8dgynm8a26sqlex6hk9k9xs44u4mw8shuw0kkqkhk636jelytfgnrgempje6jh63j0uk6swvgfda3k7fxr5gfp7ekhq5anydtt95cezcta0elzp65gfr6vpw0q8p5ntcphyqf7928w4h80vqd239q5nweyuc9uk3nl9j3xmlwpl7h7rxc0fkrz8lesn5vg0thyx84d53n970j4fmuc0czkurfxvyunc3dsvqlw7ju8qqnqjk4c23fh7hzxx74za9d3kez2pjldm7hap2h6574lqlcx4dv4cc0lt20mc73sz94s633d455mrsx7vxj6xyaqpsmcwgzhggrpxfvhmzp5wlsrn3mrhkka9njgqrxy9gj5vsw7vpwtzg723z2smr9rp34lv3h2m09v2j5ztue23ru42m073y3vldd0tcv9gsjupn7855vph55huhc08sytjn9hdar26mev0lwksryjuve2gfk6hm30l2hta0g4nq889ve987qpmtl8hulwy9aq439d02t3f3kjjg7lcdm7ka5dyqn5adzwagnyzhpraxnwr94x7edf2va6s0xk3pe8alaay67qzlsqh2qe82akpyy5cy03tqhaxkx00vqr7qzjujtqex3vzy9c29z3ruz3hy82slgqvt0a8zflmzttp5pemgw74fnz83u29f3efauavysdjngx333v4tt9h6yje5nrxtxd9r3dd2d2dc83w9l9456aat6nae3xg24emn8e3hjlr6aewc7dux0sanmkxh4t7xka2grqu0hm09j9mee83mk5r5slj90gzc7pl7x2c6zzgdypqqpqqsgqyeq0urwz7l3f3ly3dv6t6cvsha597ht6nhaalenh25ymga6fs5zgwqvum759u7xh6y37mj8xj7vxc28k534u7jjeazad2zr8nealq7u2j083ekqumk2ggk9hqxaprykw9e8agh7j3p0w0yhz8nza9fvn88lt40vyrny2asjdazt0gwzvjghrr5jakmeksd5e706u389ds25uzsauyhae3h834jz65wmc9wtnn7qp7zqfcrxfhp9v5kmt26lnca543m0h0mszsew0u0ear4dh8vzuharugrkr8y0qklwnx4n9p6zxu4hc5k99tlpme4vuul4488gquwksdce4hxnlkj6jpphxwmks279eehgp902d2k23q0pyzq3y2vku3eaq5s5mdaxefq837m72z6g3d98vtut2pd60mn0742wwrpd6xkj5fdpysrg8spvmgxws3syf0k57v56lhu3d2smdlltydp9kwvucspqzq5hwyvc304kj9vtlsxclp3glquhxpg5clg6kc6pkz5wetztvpkgq64edxwhc0wq944xxx74xzfw6ma2j497lvv8c2tjj275uy9jdz924q42e6j8kmtcv6mmw07vnt3anr6485xx23lajl5x4gjzrgq8k4wcrvtjd5nrx90wtrvk3w8493nvkt6qx5h8rtxyfhjk8kjga37mh68kt0sqmw3ckp5u946s8fglnz3wufghhsvw7fzuykyjpm0gdvgcf9zj5sm290en2nhtff7lfwdt5x4w28uadluntm2q998uwanftytcc8ws5wjr9ea7gw27ck3a52m65vvkmzecztjakq2ayn8nc2345hgyk78er63wv904ds4qdl6rx5a00effvmajpqldkt6g2sxegsajw2xtu8zakr63fk2tya8p6uncdg78g4mf5qdsjf72rlhdhf9ql868qksdk4ldqantuulfuyjvve0lzt7f6h4tt4pyl57vdkf5g8ewlta2n4n0mq97q2djajuag0d6nx9pw04dj9k4szrlt9anwsfqmgv52asgfm9q7v2x0qu3c45dgyw6aemch8e7rh66hxsnuty6mkhyj4fs8pxx68g05t4gl2zltaxs6ejw63f7cfyms656s5qvqayglp0zlvehdlnemg7hyuy2ym8p425754prmrgeeds4m6uc0cyczc23v4m5v5ean5lhwr3j89uu6vwvw8vef8zkt2rud9d57rvwzh23v6fqdh299uzhqvpep0qm0p072mr2fjt5733kgrfkcr9chzc93wwe4hfwpcw9euk2mxf09jh4mjxd2k96xd4fel40chfv6q45nxzx4x44t4fgy2gesvdyv8dlfrh7u7sr00jxflhfw2f4eh3e53rehn2qnsmrz6fvj88z9z5ckd34xzjjkxgp0p3kctv76rpgeuae879j7yk4skzsau5alw304r6zlyx74ll3qq7mqf52gqal3slyt8twcs52ftw2xza033ymccc7v9nh369ejux5ycf9h7hnvv56s2nzd647uhyx0xy6gnjgw0mt8ept2a7k2e0hyyg6d5wf5675st2y6mcmjjlen7j9g4vp2cylrs403u0u6rfpqscs5msflexdwjmw8apvgrd0f5zw0s4sst835snphh732yntckx0nmjymj4tdqfar670vf7a086ekzfmj4lw6zn9rnlh2adx8tuuzgh2c0wpcaq8229pvz5t7m3h23xg2ma8jx8hj083zf54t6jy67urhrl3ytmy8a0tnj7pe2m653x20are7x0p0a42uw2sp7lwcuvp7hvxqj8xkrrqt45hpw7xwterw2acad8wc4ahqzsx9xnk7fps8sqfeygghg70zsq2v7kvdvm9zpxzz926y0c98tge5fxwqa359p7469x74n94wh5dwtel5srd4mntn2hwhdes0vwzm7wlhppac49l0xkk0a2cjtey3w5nmynzqac65vqp34nudzg6qkep3c8kj6624a66juu3k05n9t04knrjeaw3xvdlg9tu2h3n0zr4jepd79pjdgx4gq9afflsp3d9hukq7tn907khwcxgu4pwltxvj4aw9k2g7lq3zyryz0jh6yn7dr30dg7s2ypuht3t056mffpxq37dsfq2vsw6uscxu3u7jhvnkpclndvtvvtg73a7zsg98umzn8yn6jyjsj7t7wxkx2mnawah9rpggzl5hsvpklnyzvw3cdmnx570f665qlcsgfu6yey6ttsqksshe9750hxjt76lxqjdwr3quc6yj82e56zv8csyd25gxs4hcsncq0em8mlhj77kwx55uuzp04xn80vl3le52mzxez9r5lwgnh6z82qpa930v6xnzq7l92fcpevlye0j3qq755esqq3efqduer3g0gshkwfje6yh4daje4ng42mxs8e8rumzt2hqxs7q6l0qs6ckp6jj7ukxk988ysnx3eykzj2fc7jlvvnz0pcqqaeyfqzhqanpw6cc0y6aw6g7rr4h8x6ff2rfyl500etyyazsjn00raglrtletvjgnmhty9lfy2khm09wh9qnuzn5qy5cumvr3axn0esjxm5vwl0anfehve0qk9h6k8l8yd0nmh07puqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq80z6w4rx33d8sqxt2egzm7k0xsrkyvj3vml800a7gcvv0xynsuq6xmk9umxna45xaukwvq65d354zja9sk5aryxz362rdmu2h7vjx9d78e6e3tq2jkqwvheqznle8vxke3arf54r5uvzrcv0a3e2mpk8za74fzyfx4auhnxg09lcprkganzmy7mq4tdnqqc9t9n0vek7hjfdeuft2v570vt87xtxd5t9mczg5t59wyjzf8cs7zdeynf284069wxn9katykrk4ghams98nylm4h4kumle9ulutzwj0cyyca8s4ayussrm8lylhtg2gw3rgt9xwv3pkdcep0m9ys8cglncsj0k54f5nku50xssq82ya3jut5y3jsh9h490r4578a0rsv2mz8sx07p8prtf8lszqy9f8l3w7gwkl0fx0f5p8xshk596ngwhmhjy7vx2lzd797fy7a53hmkgr4yk70a7rer79l4447vna88t357ghkl4vjz2e8328hys9352fx72up3sej4efegr8wrrmprwnkswyxr8x776h6lnder7g8q3jtxwvypehkwth2trntsf3zc4qhz2cekrwq4awdagunrtp6ytrrktu5c6g2rx0lqkxvvc5f59s86fjw56262enc3hr9jxjlmpj63shtnmqphg2rv0eurmz3k3lr990hkl7vvxwp2zj0nqvfx7zvau68d2tscq26gcw3t8uqrg5ywprwlvse5kjec4ag7dep9mayafhtxed38d6azg7rsfgzm5fn4wj8yx9yazlkl0h2zl5xj0dzktt6pr3ck4lea3ypvefve6hp3sq5d4jjg03mcxhts5r430kctjextnsf2a2ln4grajln82elv2vt066ehpnkdktyhfnf5z9wxwm98yuv069lve5ljhh0l96q43nfj0zzu94wyxqxnjgfcvkunuk55a45nm5yxw2ssn3m4ltttafed7cvac5s850sf4vgrdm854v4g7emv2m5zgzmk097jhl6dgl6vq7uqztdwj28hynrvxqhl3fukqgknk7u9adrytvwtw0f7tjve37lt395us4s5vm7mcag6xpp7kv6e3rvml5rsms7zl3kkvs7ayk3a0fsac38ndlrpqakrlzxunl2ygxjd0pmke6qey4e7kym0xchtqcsrrgg3zvsch2fm2g0mqrrht7c0p639tsss4krnhtdzx2vfv79v485zf5fkk7nrfqfrvzcg5c3rxlr7dw946gsqryjk0lnatmrh72g0thnvem7eyhaz3u3plcwzusnxv8663uwp4r8q439wqyjvss04k7832py2j4cnyuptug7vap6y4ptk695m8zlxugp3zjz6tdr0225ut6rw4wpedww4kmswy7pua9zka98ve4lm9d4tyxfca56n259qkwsfuvtc4sx29y7x0x590ccp2dfjqv22xu4zgukjy4swxpexnl2a69x3sysk4e77fjatfca8msfrkr5hj7prxehtqnk7y46gud7cr2z5cv7xhxxjger5ugdgjjv2xczc2gfthu6nzqk7tfsduwvjkca0qh7ra3t3u63g06wnmr4hlsvlm873yyjvuzhthcg72uds2geueg6cwaav7y9e4v9grwsv0gc54r87hf5dcpj3dqf2ja5c0e2aj0502750ezqhunz5h3enwz9lv6tlkeacz58ls4pfty8dzl399hzk0h9p975tqv99trhx9ehmxrtack7edmt98e0nwqu74n680azed50ht5vvm4dhsksckx0vepx9zy7nkrfp7dpdczr3vlwl3aqnkvmecypettgp9jhpt7gdqt9z7z9ruzr4t3kez3q7w7rl329ge2dln7kmz0dt46h9sadntak2724pt6azarwfffqgp8mtgsq7pej2vuw0us605cdhx4rjenyceh6c6npxaxhrgwfnd87cmv8pprfj3uplnamqtpvpdsd25v7a8yv0de02ft2a4549fw8m2dzpv4uyfv9gnmjm42vt9q9mmu82uhqzhykc2u6x5hddvxllrtadtjw6u9ecz5xv3rgk4ue6aqju0247dfvwupgnpeezm0mphakzyfax63l24axpl9vu3yyjhhgdw9njjd3htmy24rc35nxxqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqd8kwegv77rka4hel8lkpr5n9qc8xrkecsr6h0qtml77663wdwgeecd7uql8jcw8hgl4dmraplxyfaus54kgq520wm2yzqlu6wazpyj4nhz8z3yxlqgwsfk3gkmjun8u0jgvhqvgzqyjdets8twt8cet4dpplxjmdxwm6lkn67h3tc2567ez4uyavrr5nt5q0qgy7r22utxf53vh00vvqk7px4m8fnyg4uqqld596h4l4antvzj0lgtmkdyvwj7cjaj0l9s4uemaee2e0plk07k9jfchud20jm7etrqwkw2z3lqufcyv6dgj8x0a2r4hyxqqalk9ueu9urdpn565efrspps2fxw532nudykag9zppvvxq2ynfc5wnktzlc4jh6fe4negnk2mte7jl8jyy59mg2wlasffjqlp07tav3pac46awxeypwm20ydx3k2gvklru6nza32a3e7zy6g2qeg3rxt2u8k4m9rwqckmpy5gl50cfxpq5ek33ys2led3sjzypu56fwrvry3vtkpeta4dyc5fz4nw4uylnvl2lsfdc7l32mqhxn72zxhetxpsf5kfvpzwtadrks2wfnngljel46s8m2jm0zscxcc8mdg33jl82925nh2t7ectj6khw9wj7gdhesj8ua2z5g5x2h73gxpww79w0juk6f5jdmzk8kdt6md98etj5a5ufeawg6ggh7hs7deh4y4d383lekqg53tfms6t4nr7m2ek7gtz65vwsdpg8h99ggdh86629k7f6xuhtfzdulhatlje03hgk2s905a2mntduyauztgqgvj8s6qkkwd8kcq0hs5evqts3ffxrk84tzhcnam5lcml8tkyg8zh7sy6tc50rxx6ze7e4lg8398cm0upmv2jkhpzl2ja3ayqhymylvhgxtx0ldlhp2a8gakr9d67wtmku6lt5a9qd03qfp384g6f60sjr3qflr8c9rx8r9ct3s0ulaupu8t35yhv2d6a2a56rwxpmpl2fp8jynwml2kflect20lq9mks9gjnawlmw5czt2yumpl64p0sdtdqs9mu2jj609cq0lqkxks9x7fe35t9w4pda5mgwcfeda4rnee7ejwwsmxqcxl6quvzq6csch2cr6lu58lm6rmct3nedhl8ja280zgk788y6lm9jvw9kpcktlrur6apg6mf36uhsx2eg48jt2kl5kj4p39khul77gfshl0zpz83y9murnyk0e8p9zl4lqh782089m3kywsenl4ry4wkh5yfxk0qqmzdr0hx3zfwlaecaxsp7ut4uta2kudr83zag2y4eu0s0klsa2y9z67fn9u2l60eh5qdcapr9nyw6x4nt6gy0w9ftk3t5xlv3p64jjmv59r0qg9vg9x4uk03d5tf5hg40d4sv095myjkulshpdm8sfq6wfh403ch2kfcpsxqgqzme34zp8yka0cujc3w6lfmw5gn9p9qxf98zxeru2h0fvczpjs94rkq06u65mrcv9td9svrkygvv7fwtsjtrclgww5zl6d0aact5su3qx7jydpr8fdvhj3rhp4ute9efyee66zvrksjgvreesrm3mrwxc7q540g4cl28nfd66wq58r5yemqlq8h2nqegy0h3vzp3au370n4fjfr852ytcjw8835fkvk9djret2uaw2wseduldf5vced72e5fqt4zw2rkyqzzhf2h0v6llax6e77l3yvrsm6w0glps4e30v9wpwjdc3mnvlccdkavzu0hky9gfe9g22plg25u0k3ehtrnx4v92dhpky2gusp97hj6e4yvvjc6md7kjnfqkzm7d75p80rfdctvnkxehldqvny2fe6tlwqlxk8pusyhr5vjgqym64ey36daejet2u9nrd3zpdtc6xwkj262qgfdshtdlvn6mj3exj54aya6x4vpkap4f99vcvkmgs776k2hvvsv4z9w6zfq2gkar4serr3f2r9tzhf4evmz2ln6dl388d5q0sm96n557ctasdzw77t2gsljs3u0xs4ckygejxqxj55rg4necy2fjd0s6cjwkexrs7qhyjncd5gavyvddgxkkw52sya20gxhq77x8ak449tjfnza9ya4d460lfl7ggme5kpt4v2xh60a6uuyrywe82k70j6uw83ywc9vp4zn6j56tvl8lrrf2xk0jjyc9f3ufwyn8hhcx78kg7n07pkg0s9yz2wgjesr75g3y0z4j8mr228lfm75m7x6n59smmuxg8cl7sugnat4m94sdm8729wt34m49uqkjh7acczzh96cznhpkysqanr6n96qqgkfkdlxy3lguf32hcmfx3rhhfvc8s0gx5kh420xlnsemp2cp4z4u478xmz52kym67rhxku38v788xtazquc3vknnxu6dy2t4fglah8c955adez5pewtrujf5yrez0p8pgvszlj7jh8jrytgae8mgnx3jrxzzczu29a07vlntpzal7wct8gasmjnzlytw2xs8z8ugqxzhmfj9rfd9l66zredxjujm8l8ppcxy5hrj33jftddr5cd83cz336jmdjx997a4k9vu65vpc0wvdkjzrrkjl2dcylpklr6359a65l7w8gprlanmn23lnz4w7ujvfrnsm9jeaevtwfjuzc3geh77cwpledjah0ggsm2a9q0xe8ttagw0wmg5nl7zlxvks3uffppg2a5jxzqjjrjdm4x35qnxcnyhwgvf5tw4a0jrd53lrrauf6jlwjz8x7l9d59znm94y70s6lh2ymmwypplmhmd8nuvz3fvgmze6f6ydly26ps68p29mtzgewq482exxpyzhrvm7naw0pjfupclkfv9q32mvhuzqcpf4s6htfh6xs5tum9fv5zfwd8gj0q3dv9d54swdjzsyydq2zrvt985zeh4zt2f664qzlzdlqswnjwdstcke4eqz076kt54ryy62x3rtutsr6rjg6qcs77nlwx3lvpcz76ewnc6fnnuvru5rqwljxn39ueq5t57j3d9vztg3at2ef8lrwugpff300sgachvaj8vxqvywad6ngu2cgl2hxm5cl38vjjgya202t5kdtzsmuq4vjq7fxka2wvgvnpudkavvrwzlgq89jjctt5yhzmw7pg79lh2nz0um5psw6th57pacxqp05mg0c2kfez5w45crrggn2a43yqw0r5qyclgkhyw7tcgsu5ua0029kls6jq0yw2t3cw9usmph2tu8ne6pd5mhp5y5c9mtsg93phegaqfdjcppz09jza4mwwce8wrqdrkew8e3l5tkzs5nzn4428qz2sxu8gwfpw77snc8pkfw9th6adjcs0qezckq3mprdvedzdnrma3wq6w0dgppczrsqyt9qp25n6mk4wlqm4ksy4yyyx5sqk5js0jqjdw5rq2u6nan9dmysuxrn4zzcnh9lh5tsvsw73em984rxcfdahskw0mmp09fe705zjh6ehy05w5ylynw06zh35kmwp3rhl36c2tr5qc7ewvmdhjqnnsx897llwmkzdmg530xajtykelwvt92y633t7lrhdygz7nvyy0ygx7dh70yxuwlhgca79eq0ymu288sku53akmekpccpyl64q705p2xtnqrxq3w3l28c8rgpnxpf0jvyelqqkq2zxeagkqmcjhzr3k6mjs3fsgyy3fnrqnrkummaa6g54p78lug7nf9tkhcmlt8ahgzjrnagcmxkdpmdkps3e3hzjafvcvhjvu0qygu57yc3laldedsr508w2hy3rps9ym3j5qyqgzju0rxan9l8najfx8ggp85ft2ps7nj9w6ymueqgfc63vd8e0y9k20nkcmyefet9k9zyk2tysvvmlt2weww9w2ts7jh3wg4ukxmczf3c7hk08ny5qpnqhpxpe3snmx3fdex9t8sr8tk3yt02a4cylll8d898l4rqe5hdxugqa5qhd0j7ac8zkza40hz2qt2744x9u8gtwxpekc6a9egyu7u92ag06ysxxdafleap48ynjmkf3hpt2ccl685wud58ry23y3y67ghp9xwlhz8lj4k3pa22p7d63qvefqfvxteea7kqrww4kxxzegpzjshtue2l2uru5zkz4vmfyj9zvgwyr4u6ge9z0m4c2laftmkwsjvthhu2tda9vfpsnktccdyyz2umeyu6tvgdh84laxnqv2wvvkztpa2elr4jfpxa0ed3emeu5ek5d7364aykgauy3h8w6447vm472v058n7axf3umjl592hs96tn966u4pc4vmuf8sqeqwkhgwdlfaw3ak02zzx42ym37qqjwcse6kvze4h5muc6r83p7xd4zf4vpvkzpt0afdsmx5jeka8hgm85k7nmct07458qtknn609skcd4v9d3rv7gnmflmww7kewghe4cmkva5yaa80vga0h2wedxdh56k0duhk2kzlnscspqnex5fj39me6ljj2cugj4w275axg2n9ta52szq76t987a2zyzzrexpu8qg6u2mgppaqxmq9nmf3k40kl5nva5ks5h5e64sar306q4xu8uztx5v7ycgk8fmzs7paq7dvw9me5v68kl7tercrkhfuul0znquj8sjrmy4hf36jppz9qq5de8cm39xffad0arp5elrq9lgjetpsgtxf609aj5cn83kjzln5u2mmmnd2r5d9te0wy7cjtrcw84hw6lws4c9qhfla4sje8dykk8g7s90h9zhqvwmtlhaea7vp4gyjtqaz5uahsnry2eq4pk9mlajrft3ev55mfr5xz3han5hkjvam0dhrpal4nt9vuaxtq952mcq5jwkfn30rqqz4qlc80cgndqtf724nldhry2tj6vanfn6d5weuu4n2h3ej2rq6su7p2p3wuamh76ay65udf35hggcxsr5dv023amqhv2uaq0zm787vv4v44zdw7p656jzcx75f5uqxgtf0mek0wu2r9l85w0nkzvwan4w7z7nursf6ftwresmsxunnlm3ukce35pu8jhkrsem7g07caps99m602vw2atlrj7sql0xefuar72yhlf5t4d5vqd9n3v56g9vp3mvz76tn8rn693gyqs0t2cfujyjtaf9d6wjws9g20u9933fkhgqrep6n8pe5rpzduu8nattuckt5lnp5udtpgr2s26tedhrsf4wwremhjvdemqqqnayqjc4xhxhxy3px4hwwwlcxj3peqslhq8tz3c0gw8kasulrx4tmquwje4hrwg0ck9vfyafvn520v3tjr8uxnazgjv8uhp08cdd7vs00c3y65a56xeyd5dnhgmnvtyf452cwvqcuw9x79xk0ycdut6t6rpk6ku3n7ahkydny3a7p5tq7tejujettngerud68pxza4lj5a4c9sr6cfnca7wnr39zwhx768puwxsayhtlhvjhx2u99lrkpd0d8awn8y9eu6n6k59swcjdyrqhrlv05zulhzfwywyt72gp2l0wkfrgd4gvxrvxqz3nzv2tw5903h2shutda5y2szeg7ywh88n4gcp2sx90dgs7hcejx3pfsx6375mtx6w2kvksvfvjvh77v7qen7s67xskra594eul2w3q37w6uehhe0qwrggmczg595met75gnf79c09qzp208lsrpyk02dtkqkpph6wa2c02w4jzrygvup3zfx7wfddwvtyg7wm6zy549y34562p7xu4e7yngt4c6xptr8ykzyau37lj8ltqyrnlut6jy5kjmttxfkxlha349jlklezfx536353qurt0eylw05y38qfx53mxaua7tzek7dvqmpfq30qtz6zla6e2r4qjnfvxpr0a36w277n7wtxc4lgnvqfueqdrkc97mwegqvtmxpx4kfz585d3vwvpt6cg93g6udxjj0g26z0rgf83ct7vgfhfxtdlsqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzuw2ep5uvx9vgqw2qzssy65yqf5ufmnlvzgvv4nccp9yj6m98umzz92wfw8n93yucl5hre747ax07lt4hg6sw26uz0gft9das6w3g2chsm2q3shh62t4ejhr98qs4vzyfzem68capn2q5q90qglq2c009khuxld4gyt56ajlgjwha5yvdd42wdv3j0s7srqx8metmcwalftnyhgmclw6fe8vgcthf4ynag8mpspcp7nl0r6djg880rjwffcest6depcwl0cwvtv7ne33r0q307suqjt0f698y2chc42a4d4620m2vv3amzrtqlsd308vruc9c8e376spyk275j9237ugn7779sgr5fu3jwsmm3vemvtca4agledrjsjhsfhnxhfszvrxd3yxpedayfwgf50qzndfdxfty44svgd8m2fh2kmdg9d88jwx0kuh76efl9y4k7pda29s09l892zhrutgq96nxt8et4twswlj57rrxx7ncjzhjzdnmnjmksmw9yq32tm4p2llxkwvcrwsh8pgwj5d97ggkd77dnukxq9e6aljtgeuhs76upwgtjh4spup7wpukf0ds70lyj9x2q6l866xyjqw3d9k5qupqvwlw5aqf7vy2zj4ypsf8ztflqu8h3zgy8nlptkvnwnum7nm29kfmpef8y637fdmwwnrd563m57yfsqu2wa65j4s7yx2jrtdhn0jjdvdmwxx7wpy6qxrnc587xzlrtpxllslrccpfyzhht37cedv06jclm65s9d3y52khwe4v23hhj9dzs9hn3h49743f247cf8vmprahpezz2get4a83pg9uacytdxyma7qezfjmaxnd7n6dfp9x5np4tyqgdzx636hg67jsee35gchn89xqnlw72lel9tdu7cm73najfw96f0rpnv77tam3q0f60esh92rudu5df63at2t4tfkzfeng6tr0f25deq96uae75p0pcgk48xgafn5lhdshhjgqyxdkwm4305hl5tejmc3kpekhuff827hmcamfdfjvhunm24xyzh084k3lsacm8wzs6m80fdhvayjp8werl7uqk43rtk2vn6a49eccja7rxc09l36q5vsms9hcqxvknf9tluc4l79fv72f76yxrqdppgmr5xde0vd9ak9g2hytjl004wzfy4zngfr3w4z2a7xmahvs39ns2ngfy3rcxrxer3dwjac4vjs2fa3r950uc9vz3whal0teex6w6m3na0dqugjhtpzzrmzuca957m3qlqtkpyafyzttxpkzwmkrcxxsjtfeq0ulsfuf25c3pzcspldrzppmsxqpy0w3y549gjhemlk9gyeyefsjwlt76phr3w9e27pjgwzj2ydkgz29h3l68nzgy69qukea9zmdc0s6jwzsu7crtr87nflzrjldzfrztlav3mkgse0w9vgd7n5zlm885kas8h9qudtkpmdn99up3w968zn2egafv6mvxq0fn09v0p6kx73kk8nt99cmngj3p7j49svs9nmacpej5zgtzh9hwpeg4w86d8jjcpa23em0z9e840lx2emuwkuahd6jvgq6yu530zwz40qxqxejpx7knnzcw4wc8s5kftp47zcv4nldexsxk6w0y4mzkcfqw5dek9y980c2nwhhmt7n28phj0qvp3nlwwm5aajfvw5ppd439g9tmx647cfhhp2yrq40xlp8y08ujdl8sh5wr4p9s34gkzq0qru3w9fp88pm2rf4kzz0ygtd4k8ymvdu9hq585ssk8z82euu3uvx5v6h5tgzwvlj2apr7kvxk3d3s0chv0l26r60gpqu7lhycd47dgf4fa8mwd7q392vh3mchdruxk3xc7798hnc7zatr3z5qxt6mu2ypcdvwncducgnnhml7lzwv8lammrtcj8qq90pkc4vgm0w29y8vx3nxjg9tnr5r6c2qgfsvajjzp3d9k0twxprqhn2r9njsatzgnn2m7ndf3pq57ndyte04r0f99fqqp5f9dvd78cee2tgekzt9ntzyf58jnxmy6h5tnl20vums0msyhjgmqjzczr4tlp74t4da97z06x2qmpczp46q8kaayta2hzrs6p0snu0ha47gz29gf04fadrdxvx7lm7csqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqphtlduz5qk4mgys945g0rxve3zg4wjamwmd03mlckgxf6ym58v3mlr9ad4uwu5gvxpgvz3mnsrlrmdwgem36x4l24c46tedahgpul3xkp9tcc0zms2whn6lydnuw8zh8ymadekcf9jse59u4p77pq5qhymf69a52uayxpuauyulr84mvfurqzseza8d5t5hlzkdmp9w9c5v7exr83mn0n7035t7y8rnm0y9py2ennu0pz6zznq9a66asqsel5wdgrk64uqngxxxfz26s2c568whe5c7wnvdycrj72hlczfndy3z9sy9lqye4xf4rze0qj9srzhqt74z94wyqdkhs7xdtyzupujkr8spuks3zcpv2hjl9ntzdruewuyxxz2lhxulq8cy2syuw89y6g5vhr8cafhy9s34f8jzcjnqyvj230u5gr2yc9m8qg6sdv4jzvwepv22vfcmzwt4up4wh6zjq2l29tvprs0y5mpfs63s7avkpfr572m5nl2sxrt8p3fkqjhhfz2t2xc0ftx8x4qalmyeh2za35c9psus3rhrx9dx0pn347flewpuvqvxw6hefw3gny0w5pc4lgmqthdtyp2uwq3mmakys0r8jl0zfg50ekxahgynk4s46v309lp0rma9vm0c5prvcqz2v0cgyesyacdfgpyhe9qfe52jt8kzzpj0x36n7kv5cn5wcx5gs0dc3jn4us6em2yu4px03zen5wd76jw9vkw30xna36vu3l3mhmxrv6uzre7trh0n28krf3f7wtrm4zra28l2tf57hqwlhmaa8fnxlvv63gjsfh5x4p03288ph8cya2pekmzg0jk44k485s9nnhwem6cy36dwax4ngf2csxsfqywz79yppm87p3qj8ac4hmv6fhe0aveu7svx4ca770tq4yzmdkxapj4sq2h7fraum59lvp4qgsygexg49t99ufvgnka45eez7f3uly2r6rvkj582m2fsz5spsug0m2y88guxt3qjlw5sat6yy3vxxt4qa330w9yg9wzv7twwj5qrqz3t50av3e04qxfphgawv3ktmhpp80nw2ml47hha2rw4j24a3ss8v3fupcnwqw3839qwrv2072xveeexhf6qwgsepgvfagyrwmxxs5y6r6ekhn54urwaklke6cr09fp0d3pty7hdz699c4ezme85z7z7ygvdkx0y0rcj8ha04xy6yapef0v352e5qk74c3cqmwt8m02nsqe2hh8sqcytfzqpynx3g6eakjrzv8jktx2xs3tystyye7pc4tcyntshvwrkxdlsk44umtp762qp6k00zgpr84wqee64l6pnkwje0v3fpxvkkphxltjm3wsuphau77aamrjlq92t9q58gls64ldc8mn0nkuamlchxp3utecy9drc5plt4y4wd67f8yvlagxnm8eyu54l24yafe4kcqhyxc5q79qp2rgyqkk207m4pmp0x5l8x9628wgn3se4m3dmx5wzffqaf9vcd3y6uut7j23r2305cdzxr7ptnflxur5uplxl02jhdhtfena59dqrredere499kyhmrfuxeyzktxyhmzn5dq5lht9v85ta3zjx0uptyudv9g3g2pmtt78tlynsf3v099vnp2fuv8lmw2yceklxd54edfclv434aryzefychj0rdtvtapsea04tu3940adnxustp5pung2xf0e3g4fly2dyhmprc8dld4wcxyaflzcf4wsc0332q6cuyh8x7eqskq7g2wm0ks8nsjfdr83w02y8l6xnpaxkcpjt43xffg9whayw59h9c8ptlze6wwkjzk94ze8qlzrhg55yms93vwfwezjt9kptklsc20ns07clf40wsvzfxmjgkgqpr63eskeva3lr0zre5kacxzzk3qyltdkp94jk0d4zug8l8vts35zjcaa77rwp0298wf7gcv0n2snwa9cx36r6v7zn0zxpr83np575j6rjcqvaf5hjznfxaj35d6h8qxt4852mnfwygh89v04l53kfdyl34rlry9ppm52xxktyha8xhterghzha75fu2jq2qy0js9atextjmhhul40r2jpl2m2td72laucew2mfuz9mxgzt7setgtp7aw793ljnc03lfdu0pxxk4sk697knuzz9z8aww5vtxvrpr3c76ct8wsfh6wvcx9kpv6k0h6ag9hy5w6xx270ql5s0t9h6pse2m60c72l0hcgljt436sxjcwp5gj7decw9rm7hde6lgl7mwl52c0v72g5nstl984nay2qvlhr7wvau5lmqrlrdwlcqz9fg2gvshkvmkzdg30mazvxcpd0klpamfynfa5hp94552h99q60q40n704nnzj8ur0rr4deun44u47vv730xslrvv085mh9es8phnent7h6s5r6354ja9lw4adyl5d08xt3fkywp9dkngl3u340rfdtmnv69r2ttkm3adnxl6hyczahuessa8vh655wzzwaz62nj2g0khg6psc3crr3rhsysmujq3eyu88mnrsgyrt5spkxzd8p6e84zvntve4etpshaagjvdw3hkvgk9378vvh9zen5fz8tekrhx7pffe9ykj6yegfsyg82m3v3tl92wjqfxcj9cw77l9820ut8fgkjzn2957xacnaxyhlm0s4au67dcss456m7xsn6wys2xcyyxgzvdws2vxeaqgkgagfq5eu5ddesc4m2uh5alhreh8pmcep3jlty04u9eqh2wy83knqsfcxkjp7p9adhakzytv09xehf8p9ad5qpf8vw36y2m427nsn838cglk2mqvqgmk7wjwtdg8hmdvgdhsw4fy03986p4k2ljp0jpv374tjxe5mp5264gxx39v9jv0fyjawzfzzjwmcszpl5cqsslcmae8ckuyn3adxenq7ajjx8npeen0hjdrp7qktpvrrxpd8dc63wqrvcqps5z6pfprwrnp4q7tsrfcfkrreqkkefw5jw7k99jcxm0z4apd5t2ry0n2cywfztu2jsq8h7j99h26v4u56k3ugldrhy34v29hwvfntnfa7xanptmt830amu47qy6c28yzwz4l45052v7kp83a0mlzzww33vsmekzmx3eddg7x7sutz5rl78p33yjfzs6rd0xd97e0n9ke28nj405r9hs4sv0mxua3d7l0dzpyawnu33ffcsssrwe3nz0kcrluew6kdfwquaqfjanld3643pv3ahg4ajxv7cdpzj57jt8skrntxg3f6dndf92wtq79hwvgmek4ncmcpgjush9cnye7k6f4fql2zgzpgzqpqszps9qrqsqsgyqgpswqspqgqqzqqqxqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqyqss0qqqqqqqqqqqqqqqqqqqqqqxqlllllllllllllllllllllllllllllllllllllllllllllllllllupd9nllllllllllllllllllll7ppvpqqsgppszspsgqgyzqyzsdqgqsypqppqysuqqrpy8sjtsqpgw4hxgetsd3hhjetyqpeu4w7hnr7jugju9jg3qw9f7r9uh4xehv3ptc5q8e2h3vaqtn68jpcht2de2 +swapoffer1d45kgmnfva58gwn5wfskuumpvd6xjmmwtdmrzvja9pekjemwv9682un9tdmryhfvwpex7mmx93cx2er9wfek2m3dwd3ksmn0wfe9ka33t55n53qqz9xs2rf8mx6zm4vm4gz3tsyfph5txantz5hlcth24d6evuu4zk7wqu8qvrfct8y2jmefgmga0tk0se2n4tdanc3a08kemlfgzkgfqee4q5qh8v6mm2xlwq4zgretwczmegl2faaaksgs7hrdxhzca4gjltmkjucrs99cq24dudm6re0wc5fwn762lravum4w4tes9qqjvcp06lcfrlcmak5ek350p7s7kcakwnuw9dewwulss26hcqk2u8f6dkfry4ppnkv7ujm769lazpgusd8gqfnd0dk6rh0ldmnx53jm8anvzm7wq0r5k4jy3fs9520zf7www6jtrrndza565agtllc6rja6e8jxm0hmlsv023tfwcawxwsq0cmcqg3kemlgx3l2c660ketccpuxvsp5fp7plzt0sc7x3wnm803955v6h3jcjpr4l5emtpe7jcxcy86p5wddlgfn02zawy43a42fq3wfsafauxa08aehpjndzzqwpy9jx227r08sn7nkvp69jjwy5kp5sxsv2057xppur7ep5zkgx8r9kamvhcxkmt3gy2r9rk9fj5nsgc2w7lr7zhr6evfeq0xjrfck4tnfqdtaetkdfplkqehpk72u46kqfwxrn9rl738wztvq8dgpt5eanr7mjem37l5fytxrwl2p76tmg33tkn0edf8hc0x6c9ras25z3gzy3z85ee95jl2zqjkjtdjzscsgfph3yesy8vgtch7vyh33qv52fp7qpdvkx5anl0mht6upljegcj3r5ev8mzny27kc2tuhrep8jm5e2zvpzqa9j7555zwaz8czq4c0r830r4ga0u4mnrhjw8urmx6raqv4x93mx79545ymh9v0v6r6jxldwlvkg3cllf25ndla0gzehhjurtkvxc46sl6cl67xufntfq3erv0ex7xwdqx5m96sxqqa5p04dlh2nrr4zk8x76dvgpqkkezfgdzykktarvj5kar47tgr3htqf9w3entu5dut5ff9kgc54m0p0g8pq39pjkh7t5q49rceh8u6855sjhscr0l8s9kama5vzgv0ywsy8pjjxnm3e2fh8r3vmq64jspak3737r8wpm2q9s43f4hd25ns9fl6266xsehsjeuxfpcsx4qrr8y77jydvcntxxqxj3gq0stu050lafkj087596rxp78qxcue4u85z5tg5u4m89cteguuxtq950u0dpvv9my7c02qmz5kr285k558lga3ty9q7n3wzq2mnlyx9wupcw0azzucksuqqnwu4hheapcn3w2267sa3na3n9drkm0c5s27kyrlaf0eqedvv5g7639cldq6k30eszaycds9vmvrvg2e8pkwjpdgnyx0wupckmnp6rluvu6nkczrdrcqrjar29zkgufpcfzw2rpfg9ejqhprw7eg2ypvu378ugsdtt8zjqs2p6kjzzlrvs26maf40qmdlvt5p02lxswhxz2rwl3tr4pjy0fpfjcemqtxet72ytvzdnx6j3s4wqq04h6v8p7y63nl4hlyn2s2gq7dfz3vkwj72rf689yynw9fapwpsvwcahn7lclma2xur738g4uz9d49qpneahfwep7jnv7fmguxqx47gswshhst4zhcqkae6xc5vjg94vy0s50ja3zz5jz83lslugc6q5hj079qx9dq67l6qcs90p867kq374yqmtlfj8q20vrt6gzyc22wzva78cqt8mz5g4wn966hzy6qaac689wydzk49wel9knm7dan3mpnd28gffp7fwqrgek0zaxkvk4l80lun2us629279ffdy8g753qdpa8zgk3jzd9cwgretzl2eg83gsr3zuwhjq8rq9s34yvagtvhf64g34d4nwd9ec3uwym2dj5eeje3djxqh7ll9xgyv68gvva749nn2xdu3zx9tw4nk9m334suzjfwhar4nupx58uy3xvyja8puh0mptk6wqs87k80th30zqngvtaqq6xt848sfasvukp2zt8v9cughwthhvvyav69fds779e5vg0hd3nuyd4834sf5w2sgfj5aaefzyx3wdk0l8ck6yz56l9fw0jvccqta5x68ffuvy53ne6u9zpghdk80useq2vk6wwev842erq8nrz8haa9ph3d89esga9rx2pr7kaaz23v6texturw30qj9fwwpf8pe4wkez4jjzh8t4vdskevskelscgcnxwe7qg3ysuprjrvzchnmnrll2ttqkrn72263y0aqeucreth6uu2nmtz34n973j9wa8kr5ndm0fmqec9ac2yqc6ayqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpwtmukefx9u0sqvvh4dh4c9vp4vhdtjetc9uvcun8ye4s22f8mn0aqxzpmh7y4muaguvf8ye5m6wz45hwfvhcq0up3qp0skjfcurxvuszgez8keyhl9096a7xeggp2f4929mmyd3k6wwhr3hyw2x7snx2rd4t6tguk3f97m0k5n90mcqp74rscd2v9hsktvxne0uyx7sxyexd3n4yqxx4nsq3m92w7qrf7qmpsz57q366sa9ggecctp7hf04s3unyaz9krds5vza9x5emvvyk580ed3795ct544z6zdv72pct8227hppml4pe990lu6qvfe983hr8ex6xzdw67vmncqtvyqc0087se5wsgcgcespth3pr3v9mc54ep6ux92ke5m8s9chy5yt40axszdn3jmp5rmlytjk5uvfdj4ya3mnpd4pjlldhptf3urycvps66jnhejzux2320vetrlv90dpxq7ylw8yxdq53fu8d937meqz2anzyd4rfu4awavjz6sskge6x6kj8g3fjghzmmgng557u6tdfqvfn63fhu2zd9r4786njyk2zzckk5acew254v5n2lpaqlkcuw20nyceczq3qzeth6e4ppt3jllddpa9sv3jhstjaxjctgc7j7jrnlughnq38mdkr4gx7sg6qz9c57ejrgmmssftsy9uner9t49uk0qrrl3t949nxw87w8pcps6rz93s8ppludcdpxda5xrmjxhg5mkljycntay8wllj3uh9tn3mhndzhcl6k54kkjlp8fpmh68636cc7w5ujqnw4wqc6ddgcl3l007sxsnqlrcler4tpv9sl06tdlzdmuqg034spslhz9yy9f2yvt6h7jkqrehflvfqt9jueh6aasma8emlvhdv03yven07gvg7ne5t6x37ke47jyvwx0yzqzkyzlt0y2lp76tham323jmkry296uktzutsgnlryh00vsn5mxm30j8c8n0dsp43em06wxtnnhhfl6q0l0tglppfm3mt8d7kjj9es3q2xt3nkkl8ex85qz0yzqu3nlj06uaackte94t63n7e5cgy43n6xuwjdxhdx7sny9ukyl3stqgvnuy57vygjx2n94jp8t4a6es8l6mn2lekmh069l7j7m2wa4czpdxhhtnpxckvtvza5yycr9r7up3mhrjhkuy2juxyrysdvycqlef2xz9j3pvlmvl7ed4zsuwgcf6afqv330zg70vd7gw0082tt97ufy4c55zkyh3re54xurxgak6gcax3xu954npykxgndu36nmdyscz2zygrgvm94uwapucsulnqlfnn58qtl47ll6prf2k34lukpdf23aw8qyyc6dgm8s479ru0ccgxtrh2v3jvlcxa8kscj6wukmherkkkqehl2q30l688k5jcfktpnv3uhkvxjujvdxk94fjkscyepvd2e6z28uvdmrq8sx8kpr7q467vhlqr8qvsqnjcmm9kgxeg3sknym6hyes5k4k6cwmxv8dmmldkjn6ljn7p45symr7umgfdpcdm0fp29rfy3rwtgzukxqujnwrwlgd45wgh032zc4nnqs2j8tevpgjgelq8ar4tsvm474wwzqndc4ducs7ws4acne702ufqjefumcpdm34p23lwgtw33etzyj6peswfnkdcut898u65a42ljd60e0q8trvjz83qjg4cs4ngyg8zmvwuakhxnmezsqr4pmermkaezu6qkftkcdegfr0a5kst5xew6z00ncksdrylycs094qltx7x5zpj4fke2hs7m9rwz0qcy67yvlsskl2td7ewfugxxashdyan5hq2k66ej0wm7uct54yhjr2ufe3csvkr24l5hz5c0j6ce8z333570yax5exucjqylechjljdypzj43m5t3slmgsfsx3m5wran87v5enp8s2yjjr6s7wq4txn7tywxdn38vcm66ulcakd7l48hxcd8cffelh25wm6qu2s37u76h29lk2vq7d4dnfn3u7nnnm4e8fhdkk90n0zlmrup5gx2pkxgdjqawuul5fvrgwaa9afu2elfpz8el8c0qpsldwkds6w9jjmttx4q2mhurumxt6ja88vqxm7lq9qsj9s53dq8f2pmfc9jj9w0axqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqh2r6rfatg5rzq9g66s9dz2p8g8hf9fdnw6va06d62m3c0sesgg9p4p9lq5y6uux375rm9pu57qyy8kzntdlr0kjkqas05r2ujhcnrv40d69ajllp7f6n8k43m3dq35308xx4a0exnd4fcn6mvcay49agxe54tp7fp3jwrmvzzrs3nt95g6sflv7pldwjvzl4lcccfg022gagrudnc86u0a6k0pfwe7mk3vmx0x4tu5wwca0jvj9k2vqqu0n2jxzre4z5jyvf75tnljawyy68ulcp24th0gtu05uhe4x0ncgfu7h6yqc86j7mamsrl8fkaxp2hcyz42ly3muszqhn7dgccuhemndx2aq0hxce25uwzd5lft34yupgwdlsg3mvjdcrd5a09demamlz94gadur3zdapahu3vvklxhqqyhpx28qxgdc357cz9acksal62hwyxfcj0ppzrvh4f603t2u86ea5503ualk03r0as3wykhzrw05p2h4zfkdvwwvaengzchzt0syx9u4en203ftdx0lsj6xtgp9s20l7snlz5xeyrwfkhqqvqj6vay8xeewsq0xn8fy9mdrqrsqeevl0x27ftqkks5u9hjs7csmh7hrgxszye6tyhyuerwdq230u3u2y0kkg7z2j5gjv3wkve8zesj4anlacn36vynyv53q3lmxtj9ft3v2c88v5mc64v3rj8kgs522eyyj2cxyshcq0p8d6c2lddkf2kxsehedvg5fgn7hezcd8wm5ez6dw8j9hxpdyj25xjzwzarm2asl8l3p4f3748ngxcqmjzggymfzc2rz04tp5fagwwlz00gf5kmgn6gysayvutdmgy7wfphm3tzgpajln4rylf6g2gk7fkwdcprdglnrwp4su25rq74gw5g9nm0wqqcqanrcsakukpmgcavks4ux4qdcn5c78fw3khrr8c50qevejgx7gsgupklkxsgx4s24xj9xflq7w2cwm0q53f7y0huthtvnaep62swh774kpdgcjvtz4fr95yqfn5zujtuste9j7vj9l7tedlraywax0dw6f2jq2qhf59uc7lhej6nqjvjtle0hy0zugzde70pq3d4hh5mlega6j85mt9u0wlraqj3dgxx02m6339wpdzcr97dj60xeyajy68uanaf0dmrsjrk6nyj6mv808vttk9f0ak9sv9qn4knrypxslrydshn6uthav6wn6kgh82fgm63h9lmw25fgsqclnrqqc46qn83qvt44vlswwjm6m8puvyhq6gcxklmuk77cx4qjdnqvf0ma6twsdn6z4tw9w9vzwnr88ruktc66m65szl6ww3kr20cwk86jsgszgpw9maesc7g7l2jdf6q6qg5y9k6ddjwknvszszuydtcy9jyxplncjq7d3mxtjzy2yl4f2rstqn4sp5f0r9lxg5urngvhpqx6qqanjpn7e86knldmkedl483f35tmyug2qga53s05pr20pmdgzy5nllzmc2d7uaa42kject3jcsxj30hlfr529tn9a7jcm39nkz9x0yjzknhha297cya7rx0005gfs9mz42ht95h6hx39kwr3usnh8k4upzugnv7hpp0f5nyafzztnhdgz0kxr3eu7csrneanv63qv3yvu433yk25zxdhkdjehl72gjfe555szfj5csqfnew0l0de0h2arln9ecezq60euk9m65468ngadgz20gxafk2m807ks03txzhqcge6awr0rmwag9vg0z9r7k9rk674l5dq942g607wpgcqm2h5cdertw7tthm4gs206mcduexl63kqsskcatwm6vrg3yultz7gfzjg42n4808g3vw8zwmps4893a4npuf0nl3ye5ez37s8qp9qlkfad3sm08u8vh22qeycq260khrwrsfsj6qczfw0kax3hp5eskm2g38ydvw883cpusw956azuhmzer9nla4k0uwumk9tzv775v2krzzfy574jfrfc8uagvsdurj2l0naluvr25n0pn98ue54pafv62q0pdn9cvd0rprxsrvule0s3cquc6xctcrfdqp3cgj88te9tluve4p90h6vtt9xhjwe9z6wr7naz67vvqfnarzwquujqjqztcsx59nsphvk6mj2z4kp4kpvl70q2ewtdc26wtq7827wvyxj68zdptae9z4s5rju9r3emthw89kv29xqhcmcaj7syzkm0a076e08rs8t67cjc3skjs60znk932c3dafnetqcq55qa2jx2a6maag9s3vq8yc2jpdskgan9cutqumkfy8p69we0yd2yd5gxj7arl0d98pz54cglrkyez8t357s20w9sq3yv6gkw42f637hsjac6kvzxxm8fgzsgu2vqtkuz2x39dq59hrm8pwef9a9z0hxpd4gh0rt9ttf09hr89tjcxncluxxm3rytxzc2knwul9ecsvff4z4fy0gc2r6wj0eqe23k4uklhy4m2x9pns7v53ncdxg6qp6rztjnwc3gzp2537x99n75cfkr96f0g52dwxvepp476yv8efc5crxg2p4tm23qp3cdx2hapl23sze5039ww76j232fj6z3s2s7n7jysc4e3838muval32dqqpdycj46wud0yag5yv0ej3vq4g22crqp8veg0737utzr6ehktfelsp999f0jw84yyrvt3qzqwmhs8e8jxa0tsl7jdn3r8zykj6qsaru2ytfn4jesjn3hmll0ypvcacqznhf203qpnyepjam9myfzxjztkmp9svnlm73lfj8r2p2etjgqmh0lhe2hyy5s80zfr822aprye5r54acxdp7ts7s7p0vq8dfm725mh9k8shfxswjfvj4r4jes8ak7lw9nfp8zgfrmpzyn7h6sa9j344d965gt9mszuq0nm7n9mamjsg4tmmeva3n5mhggl27z0yy7y32s5phw58hux73ta9k8ngdzpc4zmtkyn4zur7096y9rk70a5p2j7zpz545lh2x57cz6zgutt9r2cvshjylh7cn95n0s5k6szdxyspx0t8tadma4m2gw9f5kdanj8s2up75e07ndpgcsdhhcmn4f2an9lah8hjmru6zfd4k4v5uzf57f46aeytg2qzv0ahjkl8lsv5q8ylgsfavycu8t2ep8pp4ev9sfcql0x9uufkwtrwtdylstq2g2477g0e5gt929t94ytn9rq7lgcawmcttdqj5stv2ncfjwx8twmygut4r0et546xgh3ac8jwhdl53cwl9crksnz23ajxj79npnyr5ze9d3e0hp707x9yxgyqqyqzpqqnypmnf4qlr58n9dvzzuxwgdfn60fhf9avlcfaza0x7czhyn7ly6jrsnnmwt8dtxmw23z38uw3e3wysmmtvgwntt7zqd05gt9sexa055265y88pz4mgf4ehxxvmg43asy7axapexm0gncg833h2vkgaytxrhnwdexwvrphaexcrwvggsny9lya6qftwzt42pmkm20zwlgdz8tny04vj4s7ueenwu7uy4wjt2a09qltetjp2mywm72lszqgjyyxrrq8wf3eydwp9e5hjjud9zpf576t3h26drclnkxxyp9l59vel6033vkut5tll6a2emncx83ud0f0ul6assujg3kkrvcz4dvhjrx9c3ptfs62xep9zjt5p5qgzy3fsg3u2dfr9d87h56x8mt3m9mnx23hu9cy4chy9e4nle9tkn4660pt0z8jr9kmayx3h46xru0ykduch3gwy77t4dlpgvqnvvcd29uxxxrqyqgzju0g88u4tllnaml6ftrcz8w3x5suflm9prma4r040gjxm0lvj7e4t8pcc97mndv0heq2d5a4tkhz0kge7053zygx4lkzhn94rc4vjg3kmxnjtkcj2vgua9e723edqyk5nv244dq7drzjlr0sap4lyf8jdss3ue5023tj32kqt7fcy27v92rk7zz3zl76w2mr5y7hw5lfuslvuyw4ufuu0csua6gjxyejjepsu80ay8c0684chmg6e3kpdyrstgyrv9q64fjpvl9jhfjm8z5yw0qj7pdl3umarragae2u9ajvylx4gsufxnn28u5ydd2mf6tjcz3unpfr949l6a6z9scqzkynkqwrmn9j4qxdmsq5wp0wwsv69r5fvsqa2as3yayvmsz4f7j9hajn44cds63y85upfh0dx2k3px7v4w0au5jsx64045fpkjgpkugdyw7huw9hvmxmcz63g9urdde5h00qc8adv5t4uutgzjx2mqrlxdyyyl4mrkluazj5jphcypnwy3fmpaz2vahp4sa7lgy4pdh4sn4yq38466hl7r7rk467ure5wchnscwwnjqjtjtjgf0p923q43a44nkcxu6dpmpwn5tcv3tmzham8n22wu8ywf5u0a40ng4mpjtuuvg62sdcy025nv2uxu57c5pzf0fffzedl4wtjn2gq5jeucdw78dxenf82erqqz2x7cfvvlh2t0uerdmww5jmlpnk7gchrt320me9avh3q923j2sk8ghyrstp9y7v7udrhgg7gy2ymxa5nlup9vfgc4m8l9aam9huquz8g0z3d00thjr6z25n9f9pvesrg2syvdl9uhs8zy2fl470kj24lm2ssatruj24pdnah9d2pfu8hjhhpzncag5855nvgk9w0r0s8k3gqm4tjusln0ft6pjsp7j4g0y69wffw4pxxqzcavgsz03cl6uxrvpz63d2j8sm046jjf46z528q693uezg2xk8qaxnppeapjchp6nvfjtp8zuh07e3nfrnk7vf7gmnlercw9mlvj97p6ank0fht2vtenm5t6g6ludwkv9tsy26xs5enxsakh5mfyuuz75n7ny09z5p3m5xhde3240l3jsevmgc90n7ddnrvvxelk8j30j3xyw26a6765yzx37c45daamr5l5w7urzd0tp7hchjs4wu3mj9hwz58jaxg4jjeq23jy69gkggvq2jmgx8gf9mn9cavcjnwdnkumrfjs440dhddwxcl0ljuqzn4wqdpcngvwxqmajcahcwn987nmw649k6nu4mze73s7y30ux22wsrrnzw8yqgtxtsn59x8dp6un434rngj28nfr9kp0yqnyzv7hv24v8phehsau4x60catapppr2nyqtpwyzalqjux9p4tdwxrpm9p3j5lgqnngyle6wxw4ytj6tegr09ave9f8vqcwvjsqv06mc7jr8c69t5q63gqlvraatl93emdcrv0257ece9q8dfpusm3uhag6hfu3g8ydnnxm3te3g242macfgtkay889wsydf8qxgal9sp87erx3fps05kppdfd74t9w62fdj7q9qga97j49x3ersvhkwtmpj9xru79qtyj696gqcfn4pm5rjdvpeevszrfjj7wtpee4lwl6gafz9ws65q0usptryyt3fc09hg0x6evdatm8j32fjf4gcyq0gkx4hj6quxklky8tghaltkmg700tej4hqvr6rhvde6a34ucz6t0wl97ktdqnqfgs2txq23mrmhacc2y5pwhan4208nfn59dg6r3rh7nu64zv3azs8w3tt4r5858040d6cjymv8fm6kp4z9wtymhu32a8597kcr795269uqmt8vld8e0zf3s0925gdpa5gznvh3csee7pvq00sqna5jphsrc6ymx5d4dhwy20fr58p2gff90pv6wwgyqn3cx4xvxc084sn8jt98hq9dhtl2e28m9ywcchqlawklw0vg4mmstuzyfqxpf50ndjzs5qd4gfpzdmcvagsmjayxaeae2gxeqn3d363e8gjtu8cjmfmvs5hn0k74pj2k90j8k2l9pqh0uc72zern4xpdxewx3qanhd06ams5ezzw68thgr3xzjg4zw0q70kq0athdds6myvyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquv53j9lxkxt8depjfhly0mxlausuevekvpl5dxa0ap0zhzp4hf8p6m8t88rxcqymjad3pg59sjfa749y4523xhlw0wsgxnjq70glc3v7ynz06q7qkdjvyvgr3kmxhdsj06ge6av2wks4l5j8tcm3qlw4d66wvg68m9r6uqcve9j80ymmj9xutmp58af5fc9ykw347lxyut3zdy3qe256k732e87c4uzgl7aqhntfdwezdq7wv9vv97xsls2f94ntuwjaekrmljcs87nwy5hldu5epc4t986v62w5mejqgrld264m49q9atgrpwgrzle66lprn4xhx56pl2zetg8k22pmx0hdcmv0a3mlqey5ctkxp4ydmwseckxjecercq3slvzjf5k6vv8cahjunrxdqw7epvhd3dh2372ep6gjyrcstnm8cwdxzeesqucgryaqznz5wg8c3vy5umepf32mpd388r4jyrs2y2acqlc6kakv5gv6g0jjwdleh3h8nx6h2s02cu7ndqyjzzjtkeymg9mhqe3yawdwtwtgw7hucxx5l950vqpg49gx77ch327yuz9pt9avvm03w89m2st4czjfkfrexu2gxqp8gqp5kl6xt6wgsfajprzesgy9egkazvs2hu6ygwhylp0nphplrdajq5a60zh2uhwa7zscs9md2dtuu89m6s59p8m97uam422ty4wp7wurrd5y08fcslsnqxr9aelwvdccx6s43k7hyfwta8wg52g05near0j5p39ga4ye2czh7243ccl3res3s8xlujxw537u89sz90p40ekdvvg5ssc6t8wq84j8z7uq9gu5dgzjr8gxytx5vpzyr5f6cmhp6k4gssr6kq7uy2kgjukwf677alk8lx5urf67u4jn930jn8u737a0nzqfqugrgnfxhapaw8rmmx3pjkaln4r3n0w439ndu4lnf36e08s9hatja00h5ezmfslh2ftdd089ljp38acduv96zx74r073g6pzfca78pjhnpvlvvpsr2yj3h6smftn3xcn335c7k2eawzhtrpsuj2hgcjfcq2y5a3ll405k29cx6cn482dfp5ratk4rtwmqfmvftse5za3tvacsh534t45czw3shdsndg8k5vpfz5qlc06xzn0xa4decsh6cnux9jgq8pg76hc8swg7n46pe8lhvau20tk8y44gaahxh00cg4n7qpews55768dctt5lem0htv4vkuxumtnuzql8wmyz7xneycy4hrmq64f9f3w90dhfexjmsn9shkzm8vx3k7r0mrg0sxa99ys7aywqrhg9yaf3vqr9t0q7955rtnd66dlm0leg2sgrdmsrjlcfrx603yclvm0huctczd5gl4fjj0xy4nldw4678ahkj6gu7arfyxae8qsfltr3xw3ycuefy7qk6nevgfwtfa5gjv662227077k9u9wkzym0pvq2lmuluj7j0hzxay4wxrz54vh26sm26zjsy8h58gpdamek8na0uuaz6nmwnkkaz48xmmlcg8sesj7tt7385a07e5pud9d6rtnft9hs7kn04jvkwleuc5k3d7lkvr24p75a33uumaxp44yjv6n7tcnst3q7ccexrtkp0dgncepgt7af3vjywfdshswl7ff49p62cra8tav70gh95yt283ak0mzs27l5784vn0c4x54n9yjd82pjp68qgd0dg3sdl22hll80874h8k9z3l5ep6j7zm7d5drfrrf0qrnqsmculpz2dfwjlx3lfemkkjxmqupwrvqe7wdpfclg4zhdk5npwp06rppufduzlfgty4ukmdhx5msq8f69pe07t4f4wfdjpz0623t0rau95k0s4a5f0nee3lfh7k3xkdvpn9d4ydphyljhlwg9nrur2wqzmcywa0xakhws2c5r47kxva2gc9ttq6tzddjf23mfnmwt7vma96xwrr9sphfdhajy2lh578ua6rc93h85ghzptmz6wg3dpk3g6f2tkk4rynwjy96tkz3j8u35q6eqxjs66pye9dtassmt2j5jnnqe0t2fhalu2x7yx2xxyxa4m65apty86an99qx49ll4vz7fz4kf2unrzrqzz34s8y7j0vsdqs24ds5v0et8uywdqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzntc4x5p9ac3nt35qwaldd7ahrwqp4wlef2rm8jjnaq5l9l7934e027zfs238e0sd2qj3tuur58c6wjnftp4k47v40aj0hsfnp8h9edmzja6wp8xrn2jratru4mwplc8m8ns89acenp275l9ra9fftaldjwmzwe68vrn4pqys9t2mvc8quxrnxujrxk7r80g7hs40yxn4cs64f3ta8jyl84rash0ktuyc4yadmt0t0sgkctwcuvn50qsypylvxg8hmmun0gvnyr2j8mr6mqyephr9jf88zmm8933dr35cjpwsew9xlsfsl04aqkf3h3krlqdj4jwla5706ywhc48nltzwan383vvutaxk28r9ydk4h8k5l64snh0zffx2p3weqqp7l9yqrnuxnzhjj30gkucgfsu4lz6vp8utrw8q098sdvtsa2xafppy53vxu3gj7wv6r6gaurj3v0ktv5v0v279288quveaknl45ksdgu4e6kghmuly9dlefqsdplqe47ka8yze2rje3hlnyz5cnjjygfu8jlug7c6k63gmnz4uhkf7k37ztl6fafnkmgpa449pdka28a7nwhakuzehmj8cnwaqd5apxca9f6aw4cuy37kncexydhwwmkc7585m5yf9zxd23sp7uttn0d8fltlsv248jfuwetwhyz2qkfauxlav9c8283gzqruqwzczrexx4y0ks96p6w3metmmemmzy8pgqmmngg9j8zn5p00ukn346adlu9axuxd9xngfzljcsdprv5ahlmrx5qjhzq09064qzpu6xyn8zp2g6w6hv38pl560pxn7h2hnyra27c5c7kpy9equ0tnnt5l9cqn2jer5znjy3vds3rn9rg7x4z72es5slnrwcdemgm2dscdwh0g3kwr79el2kxx7knmgu5syujp7c5llkk2u02add5lewmxuy3f3n5r3cmdn9kar2ddeffjmkdgsmay2qlw06swwukjh9ecm342u30nzku5h3szlj7y0z04ltg9qvw80sne5w9jj7d90c9zs575ja4c8xqtuwm97khk2wamsc867urlk9ykj6sx3hghymu2wrvvntlz7kx2fr4l8ypg3xwqjz3nm0kl6gdhztl2jlt8dg8676vqh99hny3jg8ghphvecdy483h5ne5e3cg2s75uhg9a6nek6p8c786t6w6jvp6h83zhulfavlmtmad4p00cz5cwhhfcr7f6la0uylmx8nlu9gmzm689xqcuk3j8zfap5zh00n23f0ggakwuks3zd6lflwtekj5vzrnr83wjhhafa04z4e83llfu0qg66kxa8xyjszfrllnk6v6ztd5r8ceeau28624glsykraffrmh8utyelf09z90x7v9hkqlp3rne6sqyhjmpkdzaftdy6qtxup2jszah7fzfsggg7j0ey2ncpqp3rvufgke2d5t6ru9yn65mu7sskmz5tt373kgyhmcegyy3l3favmktf43r8ntx96srcxgqd2w2htajp8542a6ga5mdt2s2528p3hsrdy0qztl6ggn5qpspvg7estnmdwwrs2tg9cp02pz3f3a9wa3qym2kaka0h9jxtmqfp6s4725pr5g56w28y9w7277jrquxvkfrtsdlt2hm9n2xc9rnev84528jrk0fqc3t9h9tcn3mjjzhf9w9yrkxye636dx79zqew64ua9zjegmjz24u4e3qcnklpzqya37kyc2fhrh2vt3hx66uu9uazjczgrqtjuz37sf3enf6nnctrwj6xxnt308g4zmxkvmdju3k38knqpdenh9pfw8snsajm7wkjmgrcdke5jrkpftnc2mc3ncayv0qgayse4h4ln3argy6l8j54eu73v50avd6fp2p4ys75wuvn0um5z6ltkemhhy4g2n67gzcumseja96fz7ygt6jf5dxy4hc5mksxyfcne8rey6jsthmky955cj3es2a6tarpjapavg64kqvqwadhwzdeyluf4xhek0sxuca4ng6farg5xrn0kkgn63nxcld3w9daytlr2uw2eck8wrnzc2qr9t7qw5y4hsmkv0mdn3ex8tqtn5scg732k00lxvqgn79q0527f7pzfv0p9a8enwk9x3t79rfefggq35y95vjscxw7qxwmhxpsslckafe27fpamdw2fh98q639qffhp0x5cfvry2020dzzzepdugrnedzed7erurvhsgdjxfyvc3zyzqjtlqj2yds9lq9s993t5hhwr269a22zh9ha8el38w8edhtts593x0r0ghxp9cuv0ctg39arwsvx6sqn7v890y350qv4em59uhra2zxu9ay37qh5lm8mdug7xq8rw5wgy6nm69y3hgp9raq3lynsqqtvtcuekmglj6v0jvma3r3vhkgt0zehp69y850rkv7mdau2tycpwkje87pg4ecgsfut6ulyrakx9s65g9dsm6nlzt3kql6feph7y6369w3xyssgtt5wh68h066dknqn3v4a4p2s922en6txlxl45pjerap57euglss3y4qzat9f68gtss6yjzpyyzgu9l5v9v2usm6cma00tmzjd9jngwwn94zs5tsv79mcy5ty2cygfdayjwcghsq2qq55ectm9r37d3hfm3kzzcj55kknhcj688dl5j82ekfcrlehgx652jj346hfu5vdhhlp5sdewxtx9j47546pj5ar6y3xyerutnylu07j7yc2t0ck8pgyxluzvnq6sklurdh4wfd8xu9dusdaj0s7u3gg5e998cnfmw63x0fx9radugzph248fv9fy6f2tq7u3lpezecadyntfryykfuj0clp4xk86y7hw5c2wdjner6ltsy8ll9asug8v7zv2rkv3xks8cgz6uq77ggz44ffzc5ghdp2s56k0ntkwkhu36807fjhxrdqtkat2n3fue9zmt08x9pnqdfyjyu5gn2nrvmhthlgd6usyqw9hsg3ue2t4lyqutgkwk95gv57wt2kyn2lpcemuv42a4t380x9q0v8yrxrdfx8ektd63rrevl3888wnzzxv9tvk0whqmvfkusdwtk5n6vt64dp6zq038uaex4lpylmzysd6wkeqlk66ql0zcrpk20ljwsrhkdl7mlvg9dswxta5khph2052d8dxx00x32ytug062cryec5e6p70es4wy6lu8g70zd39g3jwucus9ycgdkynnv5gmkhmt3hg50v5rmtmnmufgqvztyfyw8zjguktsh7vu0cqyqrm6kpugu6rs2uqdxnn7u5v3fdcfj7l0egl6xrfwa6kpyuqfjquxd095z7xhl9t5ckwm7wpl680muagg5gy70erla4gnvs5kcl0hmeehjvqarkt0kwhq9m2ddx2leyak5h4fnuy0ded4xru30hg8vjfszqtngv3s9fn6y6d4u5curudyllh3lmtdx4aqm47nwgeygzss23z7hpph83urcadlnqcr7c8df3nune073cwgk4e9kyan0xx6q2ecpatgy0jcwwt9jrj75dvmy6qn248a9zwx0h6r9gfkns63hz9jl44yaldde6rpsueuq3jencc5l3npqla3ghqzvvahvvy0rezs9wuxk483q54rarhx93enyvdwugq7r3dczp457zmx5qyf4ye8sypfkel3cy59zafl8djmywgyzzg5cws62k20z94kk3hfy4xu2hncfthnpnmgjrp6pgtw4q9lqp245fcn7py8vldwm323aejq72343psul2vvs2vz740hl32sscgd86ejxu2szqypfwcqux97du3x3w3rwrkxrqfxr4j77twr5v8ktqheaek34a0suq59s9haghh3hn3gwezmctg9dn67wt5va4qtc5swtv4glq6nqkmxnvn7wa460a7d6c2kd55rxzu4e4gk78jsf2sdg9tpq2d48cpynfzna4f2pl02h4s5qds7xwzmnclyztyz7wsewkvgqw6c3d2cqmcyr0pkc3g88g7a747grugk288utw2h3l0r4p0t68fp0snl2qvaa7gnhwdqwt90s7yvr4psn9h9p0sndja3dmteme5m45eugxw6gqcyjjk7psllm244443u2lpp49yytpp9vmvdqmv9n2hnz8qmzl0juwhz9agjes7vc8m4gek4fglqymugzqns4ye7k6ufz7nnja2ckxeueqv4q08mas2rz90hm7pemjdxvv2mkg8s754yxymcna5llaq67nwtcsjmhwm0ga4ye5yhj3x2l7rxu3qm0d3tefcqqwcdl5p0mjtjpungtyr854szd00dl9tch92tl8vrzt5e5zdwg6j2u78mw4gtxjwzsxagx8ytanvdcf33uzkhnt0jprcfdyra2qj5kpxsym5c95zmlsyuax4nghwdh72g4jxxaytn0mjzgceltq5434g3a976ugqs6r7c8pv6wwkcm40e9js7m7sce9ay3gn5hlfrqt93lf0whg3hjcvm96dyctvj4a0x2w3jg9uqq9w5s7krysc88m8tng7ywn6gf9798j9sn3pchnvy7796y5829xj9q2z706dfxm426tew9qax8uag79dhvyday43zld44xgar9crwlp0u4z7zkpdzmsxg49guhrn8zgdcwsdmwntpgcpl50fq2ke7kckrtgnfaxqdrdn8qvcpemtfznxshcmsnnscgy3r8sl26vc9mmd0khec36hf6ag0ss0swerqawcef3yqmrv64pmg28acy597e0xk73rwg60waa4wke8drla82dmprw3chfz9ky7yr2e597ylu59r785uempjyxrxst6hr3lhq5c0vwtuwkmczaywlz92t3pdx9q5qmmq8nmgx7h6tpag65mzf9njj5qepndcmyf79sscjfprehafj6ecnadjhyngskr2y60szvkpem4sm6zqtwahmgsywxkk25qkzfuk4wee0h6g94747lr628snw8tgx666jp83nmmhym54vt3amq769tlmynftwkhfnyr8eed5avtfsf5ey0hym4j2hsqqnn22kwemsq94clzt2hfql7jyhufyylrgzyktkwy5huwy4q7zfdkdf54m0x6wrn4q6xefqgsev9zdsyahtlfrhdzufc64j8h2ffn5ns3hgf0te3yvuv8xe6cmw42c87dlv8jv3nm2wpz3cnh38fjr63x2zfcrqw48mx2htcqph6xw52e5nrn04afuarxmw78rr7mpnwxvup46cnxwafda92hzgqm833nx2q8gx398vuxsjck4uvzfgwxzumc93cuqeecetp6935hkhc9hats4kap4zhcrj7ngys2uq2udwrmmz3u9y4u6sqckjk9qp63ucy9am5gpcl03vmu6r5cpfeg2jykvnhvvzhn04w4ulavspq7npznlq6n6q22vrjx4axeexc353pq3jjzkyrxxg290dq270j0wx4gk0dpyfw3rccrfx2a3dfzc4xkdkj8qf2jaq9awgj3z3xx3nwmd2tqx7kzmghq5dkss000qh4e76v52xs5pxj77qg5mnw3dwnsmjj322kuc85uceqdqggkgjqcxjl22rqxsctt4dptm4vuhgamretdfe2k52h8z62e8uaersceld74sdyffxa6ep7eqxd4xwgvw2ruz95au9283a5qfqe27d03xlaeuwqkr7r5ltgdtnw73v75sppeshz5vekgjumqk2alpupcx07dd86d9qt604vsac946n7rvq7px3nk7yjspsuss6qhjdfyd94g54f6q3xvd8m5nepnvxyr7w0hfqvggwkkk0dwfd5a47wfc7n2r558xxal8jggdu78tqt4zv892vrku8p00qjtyf03crlqnpew37l99mdfn0tc2lp2uy7xsdcu6kt02lnjm3ug38rjzuq3l0qvxpt34csztkddwfuy6mmugqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqws39qksx2cw7qw06du5sdjrn08kegny57t7y3x3jvdwv5ym9h6yu3u6cx3c5czgdhcss7n3n4k2l8arglpujj9ygkasaxvva3uwsxqekhykdufkghu052mxeq0uuuqsv5tda4j3x6ktcq5w0pc8lhdlq95mk3aylcknv7euhcrp6prhj0g3ytzs3luuf95vel9pr9k859e5jwcyf78lvhaxrr6h7s2lruvnarvqn7seck73ts0rdsduw920vgr35g6k5lfemmjcgzxfg5uycchywzkpsmut2yfyt5r0fg5ud2dc87q2pwzh2cw8j8w75gcqt8e5cpg50eyxukpvc6dykdtqqjam3ctytlz06lp7wrtvcz3pjr8h7gf523t4yqacep5v2hejvrwfga82xg32k92k4f87t8ee64ssh4jx8ljnftppna5wj6leeaegqdklkd3tw82wc962d97zwr2z83s0wh6hct8yquh88wpllujc7fl9tt4gl8vd8wlypstzjfmuljj7w2l3kw2p5h29ckdanpsy98hm073vc7z9rqk92f5dkf2wl5ewxp7gaj98l9zzvd0fyxhe260f3zd26pnd0azt30mytjzhqmu6ephny4l6l9nyce3mjatjzf3eywleak3y06dg0zrv7u3spj4l4tsaxz6v3sx63tc93nvh9vdyp0ek80h493yp8g0shdccfgjk6jcuncuc2vjml8q0uw59y3x22k4tma2e32gua2036chgfz78mpwsdg570apcl3l6je7zl2g5qwg59hp8e2pkz0yn6w0gk3sdmwhthdx2qgshd2dsm6egyckmjzwwph2c4ej2z9tvrdhrdp2r7e60jxs5w0fn4nzvdv3p87yw8dvx55hl2lfyfv3xy9n00yt9pxxd3gkadcxuzqguw8ln8ufyy06ewfvrakwwf4yfe7vz9mq460cm8v8r6m2tkwkv6kuun48dam3j3udq5urn26tdvjswfpjftdshs0mq6cvhk4vttaver4h69q8ga29sgz9n6v3lpf0xj23x7aw0nv9a500md0eqykjx5lzexacy6h6qg5fknlm3z2pv6kdxg3gkfs4cyh2km5va5um3w3afudqun5czwns3zecuz6c7y7n6rkfg5eqpqv3a5jdml9la6ztr2gc6pnf0yfq5fc9n95lmgsegx0m83r7th4cksnfge0jez82zt0dnxkgfgfnj99f8wg37dt56kmluh5r34xcwm7w752zq4sd5zdwt5d3dpla9sk3ehhfcw2pg2t0xggws8kye2vjapyt5ffd7cq5tg5wfxrpgwdgzx5zwrx08xzhkrxxrm87xku6436ys805z5e7n5f6e7sd6j3w69mqll7r8uf4mqzadt527638vq5cgx2dlukqpvjlhr9wfp2dcyaak7jq3zhx43mkxpqrk6qg3p34eyrfnz2hs7uw902wdtrm25apvthax3xpkycq77ct3f5khqu7ej4cusrpksvp80c57cjk8jv6qqycmg3hvk8qhm7cy5z6asmne23uy23xfqgl8r59ny956mrvuuhz6vsc2ktsd67lc7zvgf5vmxw4p0lwykmeuvxj03yc5ts56skdz0rgmq7rvp6gwp2zx7famgu736aevgn9xs07jxf22zvfu3az8gwjfhj4fu9avz9gkmst0mgqxruwqm9y0vrm5vcpt60wlk8f9k0yefrj0wls7eqqj362ukq4uqurehycj8tzkn66kggh3fc9ptcaehxdx4uqvsktqw7xyn3yeetydnqdkc0j6400thvd99fp3ztfln22aw7n3s6e4fmlzhyktva0u5pyrtlwp3e7wnxtkm4p9wjy9dlzqtavr98kt3ajrn6a3kgxzkk429m64kj3ntza87c88x9xvaz95szv6624wrut3c20ms43lspfzmvhufpczgjhtgdavl2c7d6ulm844qls092j5uuuxu3mfrz76p4ndkjj0glj5v7n3hvax9vl3kx5dut2pl4a33f29xkkf9ep6h6nv7v7utyjn3pq35xxmqdp6ujmxu8y0fnq33kmgktm55ec04n266rymh4c7ukjed4pafx7cgvnqq8k7a7una0y5lylkxpzm0ahlq75qz9rcqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpw0rhld75av7wqda7ja0sefxsarsu2keu7s9jp8z4jttla083u3q5rhdnl6u44ujr0npw6p3tz8rd4p9hsmdq66fdkvafkt8e8myh4w2nq3uyj3a2tn2fj3ykhqwjxtzh56hp93wl8z78cwstzjwthg8yy3lpqymupaqn373wr2km5v2zv2jc36l68nyyragnnkdc0pj9yv3qzvunkm5j7d64uasnxf5ma8505x9f3ngvsxhzrvsx5gq3wa7ajax6pxukxm9drkylv8npvqu56zk40g4kc2523ehq9w6kq66r6dmc4ttex9mc5wsastey2smurhpeec3gkf0l7cvn0ug87xapa45f6uy55zrpsnkfaeejlajcqdjvg8zk6rx6lu8s4jvlt493rlefx49gdh0qyflsx4fnv4e0kq03jnr7x9x4q94quy8gfjfm575una795m7m3jc998f9e59gehhypprkhhvt5v6mtfz7uz94yctp44q6ermpadd4jxz5j576apewg0s9e77cya3ffgg2rvjhvgkklp4hakw5e26d49f8rjq8pux0mqdg34qr455ln4wt7aamkfkk33pf7y52gpjux7706vjxaysv7qr7833fchetwqxcc5x57ahuerkf7af7s70j68l0sqctqlxvr8h57zjt7jevkmszn33xwdh4t8l6wldl09f9dkyx44pyxvn6hy0dk56u02dfwt26ysjsn2xz5lqhcxusqcy3exx8wnu7erg08xvmjlna2a9tjl0k5xnzemad7zgx2s9y7dj5t3nzks4fplqvljv4rv3ql3zft7p7v2zg8nwpz6vqr0p64cqxdyc6ftnfrxrgzcta9tmfy9zmadt7h3sl94jyv4drjlrgvx0q0z8ufwf349uzj8ds0ldfj6vcj6k7de4jdxydgrrnqz9kehmptjuph82pw5upl4xhnqqwq50p3tpxlt9gzjelu7admxjrla39upwpcq02489xxly05a9yk4jujhhn9xjuar9negml5caft2xu386tg0798928qmlt37k5uvqrwhpks87z3ucd8s666a0wwlgg9ay5qtpl26ts4fmacedlaq8774x3jwtna93t0zvaqsqqxuyjzgsluc24xl2uj4j8hjgna58ggchgk5n8xql5c3pnh9226p05p3q2v59pv3896klxw8zhrmqpwe4sff776qdpl7qfuzr5drvg2kzu8397s972ejfl9eqycxx3sxf9ee60z09ehn46n4au0frs0ckawwezjdjvjugy6ht0sfcuad094v968qdchkeekn5948ssxaxegz0qgl6u0v652gxl5dk06yg9aqcxcc56m9amt6g9uqerph6hgmzcvl043m4sp9unw2t7klssgsjgctwhpyc46rgmhqalyrern8arpek5ekk8ekx6pu626d5ag3ktec2rnrqyu3m64ceg5jnlf8egxnfqdvrr7jj4m28lvfmg7lq8wtwevd3d6uw2vefyhngepp6njkpqp80w3szue4xqenpd0h5mvck8ag9c366wsj5nacfzt58t92sezh5s2he0ls70v3araqnswl9skxgr6mhthchp9rq6z3zuwk64y6j2gsderqz0vfa9y85jgpe2h4ypntdd8ag9gffcqr4mkkejyr9zjj76kex9j87s3awud576ukv79rv7qqkn02g58h0md4ymrmqkwj5hecgmt29su89ymhm8wf36ahhmwa6mr4zaeh9n7daul8dew4dmwj5wklp7qnt8zlrseh62aymyx29nwau480achqef68j7l2ssemkkl5xq9h6e0j65lf6ys2zz9d4gvzydh4y4pasdhq6wyajp7c4h5xsm8l0ux0nh0676qjal2wvy9dn3xcjur9v2c9uccvsh3x3dhkaphkjg8t05xgweslkcdddhucg9azedh4f9g89sa4tafeaxqxq5wm7wmqtucctt9enz3flyyzxt5n30euvkpluhhhr43ec7l4vzycgn6j9ujmhzmae33rstu649c2r26mejnacklk2hrkqaccgc7jz5qyr5ke2glk2fn8hrewcjd2duf7h63rj9n89xx0gqlkrztdjchyduckmud9wg2rx0y6wnpw89g4mj3d7pxlf9zw350jrjsntnq0htr924v5dgrla5lxzvm27wadyxerscahss9ety3tv3trd0x8z2k7kcmpmprjgcyczn4lymhvqxj0kd78m2es97m9j8lsl87u67efxzpq76uwd0qpkpd87nn9zx0nrnhe3eg5nwgyucsn8jlutdzdk9t0e6qfqkx4ca7vy3rqzlgrlh4c8mjmgvnmlzvcncjljykfezfazrxr0sqgzpcvjca52z8h26zgcs4fdwa8txrany6au3wrm85f5ja6m6lzs54y4mqdsy4f7a692ecvfp9cncxg36dersxp5uchjylkvtudgqzjndqmlt74ue0wm7l8y2274l0qkvughnrdm5vzrjclseguajtpzu8922ktu4a3xya3eze0n62u6jdh3gjge3zg7hjezslfu5p54e20j8f25mquf5wllj58gm73jvdp9jhcara87fyn4ltv22zcx2p929yf7pzvehge3xrrdcwlguk9c28syda4kec3kdg3jn5r333zfdst4562vaqk94fhrqhathftykwdlrt8juqv87x59uae4gnyyuv6nerzsj8apv6jqpp374saarwx90r00tyg22z0tpnrx4wrv3w06pl6wczxf05cpmsc9mtdyt0jldgpzq4y0gsrzkux632zdpa69npzvazgtg4ch8wx7m8vtjws7grefht98de5jun6u0eyl2tn8ftpvxnrekhfp6d5me0mggepuh904ch3a2vrhutcrqcx6nve92n3jfkqmxhrh7ejtvhxf3w7wuvhh8j2d0hslwe7pndpgedq2hlsnnaem9npcnqfwx5l6x5klrxqyusmn7kxnca9as9lez4v9er58qjltlkxw2zfyshpejpmvpufactcgmlt65hrt92arfcqxqvmhk5qkru4u44vn70y053fu6zr9s84u04cf5gmcmhjap970epplf09q5z6mxk95z6npycklhhaldmneyp7yvn479hfxw2syhtwt2f00nnsegfxkry7epu5y5ney6j7rslp9smkpasl89gyqhe5chmp3v5wsj4cvpml4m2hassxgec50y2a5qujs39hfa8zgje98gs38zmndmltvhrdm6epunhs7udrxdp7yavth8rd0dqvrq5z4g95z4t98q9ghcesr2pq5pqqsgpqczspsgqgyzqyqc8qgqsyqqpqqqrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqgg8sqqqqqqqqqqqqqqqqqqqqqrq0llllllllllllllllllllllllllllllllllllllllllllllllll7qkjelllllllllllllllllllllqskqsqgyqscpgqcyqyzpqzpgxsyqgzqsqsszgwqqpsjrcf9cqq582mnyv4cxcmmev4jqqu6vrae6czxkrtzd7f4xgertcwv0dg4ylglf7arug6es96nxmq9zpgseammt diff --git a/packages/validator/package.json b/packages/validator/package.json index bc03687..fb09b12 100644 --- a/packages/validator/package.json +++ b/packages/validator/package.json @@ -8,10 +8,10 @@ "test": "bun test" }, "dependencies": { - "@midnight-ntwrk/ledger-v8": "8.1.0", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0", "@scure/base": "^2.0.0", - "@effectstream/mip-zswap-offer": "0.3.0" + "@effectstream/mip-zswap-offer": "0.4.0-v9.0" } } diff --git a/packages/validator/refstate.ts b/packages/validator/refstate.ts index 0d46580..2398ba4 100644 --- a/packages/validator/refstate.ts +++ b/packages/validator/refstate.ts @@ -1,4 +1,4 @@ -import { LedgerState, WellFormedStrictness } from "@midnight-ntwrk/ledger-v8"; +import { LedgerState, WellFormedStrictness } from "@midnightntwrk/ledger-v9"; // Reference state for `Transaction.wellFormed`. The security-critical // `stateless_check` (ZK proof + signature verification) is STATE-INDEPENDENT — @@ -37,11 +37,12 @@ export function getBlankRefState(networkId: string): LedgerState { // enforceLimits = false ← the ledger byte-limit check reads a blank-state // parameter; we cap size ourselves via maxBytes, // so leave it off to avoid that dependency. -export function buildStrictness(): WellFormedStrictness { +export function buildStrictness(opts?: { verifyContractProofs?: boolean }): WellFormedStrictness { const s = new WellFormedStrictness(); s.enforceBalancing = false; s.verifyNativeProofs = true; - s.verifyContractProofs = true; + // false ONLY on the contract-maker retry lane — see ValidateOpts.contractMakerRetry. + s.verifyContractProofs = opts?.verifyContractProofs ?? true; s.verifySignatures = true; s.enforceLimits = false; return s; diff --git a/packages/validator/scripts/check-preview-indexer.ts b/packages/validator/scripts/check-preview-indexer.ts index 79c10d9..ea21a19 100644 --- a/packages/validator/scripts/check-preview-indexer.ts +++ b/packages/validator/scripts/check-preview-indexer.ts @@ -13,7 +13,7 @@ // would have to be reconstructed. const net = process.argv[2] ?? "preview"; -const URL = `https://indexer.${net}.midnight.network/api/v3/graphql`; +const URL = `https://indexer.${net}.midnight.network/api/v4/graphql`; async function gql(query: string, variables?: unknown) { const res = await fetch(URL, { @@ -77,10 +77,10 @@ try { console.log(`RPC check skipped (${String(e).slice(0, 80)})`); } -// 6) Root-check blocker, demonstrated at runtime: the installed ledger-v8 +// 6) Root-check blocker, demonstrated at runtime: the installed ledger (v8-era note) // binding exposes ZswapInput.nullifier but NOT the input's merkleTreeRoot, // so a roots-set membership check has nothing to compare against. -const { ZswapInput } = await import("@midnight-ntwrk/ledger-v8"); +const { ZswapInput } = await import("@midnightntwrk/ledger-v9"); const desc = (p: string) => !!Object.getOwnPropertyDescriptor((ZswapInput as any).prototype, p); console.log(`\n${ok(desc("nullifier"))} ZswapInput.nullifier getter exists (binding pattern works)`); console.log(`${ok(!desc("merkleTreeRoot"))} ZswapInput.merkleTreeRoot getter ABSENT — root-check blocker confirmed at runtime`); diff --git a/packages/validator/shapes.testkit.ts b/packages/validator/shapes.testkit.ts index 3734524..301b3c4 100644 --- a/packages/validator/shapes.testkit.ts +++ b/packages/validator/shapes.testkit.ts @@ -44,8 +44,8 @@ import { Transaction, UnshieldedOffer, addressFromKey, -} from "@midnight-ntwrk/ledger-v8"; -import type { UnprovenTransaction } from "@midnight-ntwrk/ledger-v8"; +} from "@midnightntwrk/ledger-v9"; +import type { UnprovenTransaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles } from "@effectstream/mip-zswap-offer/mip5"; /** Deterministic, so a fixture's hash is stable across runs and machines. */ @@ -68,13 +68,26 @@ export interface Shape { tx: UnprovenTransaction; } -/** A spend of a UTXO that does not exist — fine pre-crypto, see SCOPE. */ +/** A spend of a UTXO that does not exist — fine pre-crypto, see SCOPE. + * v9: `UtxoSpend.owner` is a tagged SignatureVerifyingKey, not a bare hex + * string — schnorr is v8's only (implicit) kind, so tagging keeps the + * fixtures' meaning. */ function spend(owner: string, type: string, value: bigint, outputNo = 0) { - return { value, owner, type, intentHash: key(0xcc), outputNo } as any; + return { + value, + owner: { tag: "schnorr" as const, value: owner }, + type, + intentHash: key(0xcc), + outputNo, + } as any; } function payout(ownerKey: string, type: string, value: bigint) { - return { value, owner: addressFromKey(ownerKey as any), type } as any; + return { + value, + owner: addressFromKey({ tag: "schnorr", value: ownerKey }), + type, + } as any; } /** diff --git a/packages/validator/types.ts b/packages/validator/types.ts index 262c6ad..df4b4c1 100644 --- a/packages/validator/types.ts +++ b/packages/validator/types.ts @@ -1,4 +1,4 @@ -import type { LedgerState, UnprovenTransaction } from "@midnight-ntwrk/ledger-v8"; +import type { LedgerState, UnprovenTransaction } from "@midnightntwrk/ledger-v9"; // Why an offer is rejected. Ordered roughly cheap → expensive in the pipeline. export type OfferRejectCode = @@ -113,6 +113,19 @@ export interface ValidateOpts { // the indexer) should instead leave these unset and run liveness themselves // on the returned `nullifiers` / `unshieldedSpends`, reusing the // NULLIFIER_SPENT / UTXO_SPENT codes. + // CONTRACT-MAKER OFFERS (2026-08-26, demo-infra Phase 9): an offer whose + // maker is a CONTRACT CALL (e.g. the AA Manager's open swap) cannot pass + // `wellFormed` against a blank reference state — contract-call proof + // verification reads the contract's verifier keys FROM STATE, and a blank + // state has no contracts ("call to non-existant contract"). When this flag + // is set, `verifyOfferCrypto` runs STRICT FIRST and, only on that exact + // failure class, retries with `verifyContractProofs=false` — native zswap + // proofs and signatures stay verified; the contract-call proof is verified + // by the node itself at settlement. Default off (fail-closed): the relaxed + // lane admits ingestion-time spam of unprovable contract-call offers, + // bounded by liveness checks, size caps and the rate limiter. + contractMakerRetry?: boolean; + isNullifierSpent?: (nullifierHex: string) => boolean; isUnshieldedSpent?: (ref: UnshieldedSpendRef) => boolean; // Existence checks (same sync-vs-async note as above): UTXO ever created; diff --git a/packages/validator/validate.test.ts b/packages/validator/validate.test.ts index b3cb035..9908daf 100644 --- a/packages/validator/validate.test.ts +++ b/packages/validator/validate.test.ts @@ -7,7 +7,7 @@ import { LedgerState, Transaction, WellFormedStrictness, -} from "@midnight-ntwrk/ledger-v8"; +} from "@midnightntwrk/ledger-v9"; import { OfferFiles, OFFER_HRP } from "@effectstream/mip-zswap-offer/mip5"; import { diff --git a/packages/validator/validate.ts b/packages/validator/validate.ts index 0a1ff0b..d3f524a 100644 --- a/packages/validator/validate.ts +++ b/packages/validator/validate.ts @@ -1,5 +1,5 @@ -import { Transaction } from "@midnight-ntwrk/ledger-v8"; -import type { UnprovenTransaction } from "@midnight-ntwrk/ledger-v8"; +import { Transaction } from "@midnightntwrk/ledger-v9"; +import type { UnprovenTransaction } from "@midnightntwrk/ledger-v9"; import { OfferFiles, OFFER_HRP } from "@effectstream/mip-zswap-offer/mip5"; import { P2pAtomicSwaps } from "@effectstream/mip-zswap-offer/mip6"; @@ -89,13 +89,31 @@ function maxEncodedChars(maxBytes: number): number { */ export function verifyOfferCrypto( tx: UnprovenTransaction, - opts: Pick, -): { ok: true } | { ok: false; code: OfferRejectCode; reason: string } { + opts: Pick, +): { ok: true; contractMaker?: boolean } | { ok: false; code: OfferRejectCode; reason: string } { try { tx.wellFormed(opts.refState, buildStrictness(), opts.tblock); return { ok: true }; } catch (e) { const m = errMsg(e); + // Contract-maker lane (see ValidateOpts.contractMakerRetry): strict ran + // first, and ONLY the exact missing-contract failure class widens — a + // blank reference state cannot hold the maker contract's verifier keys. + // Native proofs and signatures are still verified on the retry; the + // contract-call proof is verified by the node at settlement. + if (opts.contractMakerRetry && /non-existant contract|non-existent contract/i.test(m)) { + try { + tx.wellFormed(opts.refState, buildStrictness({ verifyContractProofs: false }), opts.tblock); + return { ok: true, contractMaker: true }; + } catch (e2) { + const m2 = errMsg(e2); + return { + ok: false, + code: /signature/i.test(m2) ? "SIGNATURE_INVALID" : "PROOF_INVALID", + reason: `wellFormed failed (contract-maker retry): ${m2}`, + }; + } + } return { ok: false, code: /signature/i.test(m) ? "SIGNATURE_INVALID" : "PROOF_INVALID", diff --git a/start.external.ts b/start.external.ts new file mode 100644 index 0000000..f1725b1 --- /dev/null +++ b/start.external.ts @@ -0,0 +1,99 @@ +// EXTERNAL-STACK entrypoint: run ONLY the kernel's own processes (pglite, +// contract deploy, sync node, batcher) against Midnight + Celestia +// infrastructure that something else operates — e.g. the demo-infra compose +// stack (acedward/midnight-2-offers) or any node/indexer/proof-server triple +// plus a Celestia node. +// +// bunx orchestrator start start.external.ts +// +// Required env (same names the SDK/batcher already read — nothing bespoke): +// MIDNIGHT_NETWORK_ID e.g. undeployed +// MIDNIGHT_NODE_HTTP e.g. http://node:9944 +// MIDNIGHT_INDEXER_HTTP e.g. http://indexer:8088/api/v4/graphql +// MIDNIGHT_INDEXER_WS e.g. ws://indexer:8088/api/v4/graphql/ws +// MIDNIGHT_PROOF_SERVER_URL e.g. http://proof-server:6300 +// MIDNIGHT_WALLET_SEED deploy/mint wallet (prefunded) +// BATCHER_WALLET_SEED batcher fee wallet (prefunded, distinct seed) +// CELESTIA_RPC_URL e.g. http://celestia:26658 +// CELESTIA_AUTH_TOKEN admin token of that Celestia node +// CELESTIA_NAMESPACE defaults to the MIP-0006 shared namespace +// +// Why not start.dev.ts with env pointing at the stack: launchMidnight / +// launchCelestia launch their OWN devnet unconditionally, and launchMidnight +// declares `stopProcessAtPort: [9944, 8088, 6300]` — against a live external +// stack it kills the very listeners it was meant to use. Measured 2026-08-25; +// see packages/node/preflight-external.ts and the demo-infra master plan +// (T4.3). +// +// The Compact contract is NOT compiled here: external mode assumes +// src/managed/ exists (the container image bakes it at build time; a source +// checkout gets it from `bun run build:midnight` / infra/compact.sh). + +import path from "node:path"; +import type { OrchestratorConfig } from "@effectstream/orchestrator/config"; +import { DbNames, launchPglite } from "@effectstream/orchestrator/launch-pglite"; + +const root = import.meta.dirname!; + +const PREFLIGHT = "preflight-external"; +const CONTRACT_DEPLOY = "midnight-contract"; +const MINT = "midnight-mint-test-tokens"; + +export default { + processes: [ + { + name: PREFLIGHT, + description: "Probe the external Midnight stack + Celestia node (fail fast)", + args: ["run", "packages/node/preflight-external.ts"], + waitToExit: true, + critical: true, + }, + + ...launchPglite(), + + { + name: CONTRACT_DEPLOY, + description: "Deploy the offer-files contract to the external chain", + cwd: path.join(root, "packages/contracts-midnight"), + args: ["run", "midnight-contract:deploy"], + env: { MIDNIGHT_STORAGE_PASSWORD: "YourPasswordMy1!" }, + waitToExit: true, + critical: true, + dependsOn: [PREFLIGHT, DbNames.PGLITE_WAIT], + }, + + { + name: MINT, + description: "Mint dev test tokens (2 shielded + 1 unshielded) via the offer-files contract", + cwd: path.join(root, "packages/contracts-midnight"), + args: ["run", "mint-test-tokens.ts"], + waitToExit: true, + // NOT critical: a mint hiccup must not tear the stack down (same rule + // as start.dev.ts). + dependsOn: [CONTRACT_DEPLOY], + }, + + { + name: "sync", + description: "ZSwap-DA sync node (external Celestia + Midnight)", + args: ["run", "packages/node/main.dev.ts"], + waitToExit: false, + type: "system-dependency", + env: { PGLITE: "true" }, + dependsOn: [DbNames.PGLITE_WAIT, CONTRACT_DEPLOY], + }, + + { + name: "batcher", + description: "ZSwap-DA balancing batcher (external Celestia + Midnight, port 3334)", + args: ["run", "packages/batcher/batcher.dev.ts"], + waitToExit: false, + type: "system-dependency", + link: "http://localhost:3334", + // Same serialization rule as start.dev.ts: the batcher's unshielded + // wallet bootstrap must not overlap the mint wallet's indexer + // subscriptions. + dependsOn: [CONTRACT_DEPLOY, MINT], + }, + ], +} satisfies OrchestratorConfig;