diff --git a/.gitatributes b/.gitatributes new file mode 100644 index 0000000..af3ad12 --- /dev/null +++ b/.gitatributes @@ -0,0 +1,4 @@ +/.yarn/** linguist-vendored +/.yarn/releases/* binary +/.yarn/plugins/**/* binary +/.pnp.* binary linguist-generated diff --git a/.yarn/sdks/integrations.yml b/.yarn/sdks/integrations.yml new file mode 100644 index 0000000..aa9d0d0 --- /dev/null +++ b/.yarn/sdks/integrations.yml @@ -0,0 +1,5 @@ +# This file is automatically generated by @yarnpkg/sdks. +# Manual changes might be lost! + +integrations: + - vscode diff --git a/.yarn/sdks/prettier/bin/prettier.cjs b/.yarn/sdks/prettier/bin/prettier.cjs new file mode 100755 index 0000000..5efad68 --- /dev/null +++ b/.yarn/sdks/prettier/bin/prettier.cjs @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier/bin/prettier.cjs + require(absPnpApiPath).setup(); + } +} + +// Defer to the real prettier/bin/prettier.cjs your application uses +module.exports = absRequire(`prettier/bin/prettier.cjs`); diff --git a/.yarn/sdks/prettier/index.cjs b/.yarn/sdks/prettier/index.cjs new file mode 100644 index 0000000..8758e36 --- /dev/null +++ b/.yarn/sdks/prettier/index.cjs @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier + require(absPnpApiPath).setup(); + } +} + +// Defer to the real prettier your application uses +module.exports = absRequire(`prettier`); diff --git a/.yarn/sdks/prettier/package.json b/.yarn/sdks/prettier/package.json new file mode 100644 index 0000000..e6c621d --- /dev/null +++ b/.yarn/sdks/prettier/package.json @@ -0,0 +1,7 @@ +{ + "name": "prettier", + "version": "3.2.4-sdk", + "main": "./index.cjs", + "type": "commonjs", + "bin": "./bin/prettier.cjs" +} diff --git a/.yarn/sdks/typescript/bin/tsc b/.yarn/sdks/typescript/bin/tsc new file mode 100755 index 0000000..454b950 --- /dev/null +++ b/.yarn/sdks/typescript/bin/tsc @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsc + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/bin/tsc your application uses +module.exports = absRequire(`typescript/bin/tsc`); diff --git a/.yarn/sdks/typescript/bin/tsserver b/.yarn/sdks/typescript/bin/tsserver new file mode 100755 index 0000000..d7a6056 --- /dev/null +++ b/.yarn/sdks/typescript/bin/tsserver @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsserver + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/bin/tsserver your application uses +module.exports = absRequire(`typescript/bin/tsserver`); diff --git a/.yarn/sdks/typescript/lib/tsc.js b/.yarn/sdks/typescript/lib/tsc.js new file mode 100644 index 0000000..2f62fc9 --- /dev/null +++ b/.yarn/sdks/typescript/lib/tsc.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsc.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/lib/tsc.js your application uses +module.exports = absRequire(`typescript/lib/tsc.js`); diff --git a/.yarn/sdks/typescript/lib/tsserver.js b/.yarn/sdks/typescript/lib/tsserver.js new file mode 100644 index 0000000..bbb1e46 --- /dev/null +++ b/.yarn/sdks/typescript/lib/tsserver.js @@ -0,0 +1,225 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +const moduleWrapper = tsserver => { + if (!process.versions.pnp) { + return tsserver; + } + + const {isAbsolute} = require(`path`); + const pnpApi = require(`pnpapi`); + + const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//); + const isPortal = str => str.startsWith("portal:/"); + const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`); + + const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => { + return `${locator.name}@${locator.reference}`; + })); + + // VSCode sends the zip paths to TS using the "zip://" prefix, that TS + // doesn't understand. This layer makes sure to remove the protocol + // before forwarding it to TS, and to add it back on all returned paths. + + function toEditorPath(str) { + // We add the `zip:` prefix to both `.zip/` paths and virtual paths + if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) { + // We also take the opportunity to turn virtual paths into physical ones; + // this makes it much easier to work with workspaces that list peer + // dependencies, since otherwise Ctrl+Click would bring us to the virtual + // file instances instead of the real ones. + // + // We only do this to modules owned by the the dependency tree roots. + // This avoids breaking the resolution when jumping inside a vendor + // with peer dep (otherwise jumping into react-dom would show resolution + // errors on react). + // + const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str; + if (resolved) { + const locator = pnpApi.findPackageLocator(resolved); + if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) { + str = resolved; + } + } + + str = normalize(str); + + if (str.match(/\.zip\//)) { + switch (hostInfo) { + // Absolute VSCode `Uri.fsPath`s need to start with a slash. + // VSCode only adds it automatically for supported schemes, + // so we have to do it manually for the `zip` scheme. + // The path needs to start with a caret otherwise VSCode doesn't handle the protocol + // + // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 + // + // 2021-10-08: VSCode changed the format in 1.61. + // Before | ^zip:/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + // 2022-04-06: VSCode changed the format in 1.66. + // Before | ^/zip//c:/foo/bar.zip/package.json + // After | ^/zip/c:/foo/bar.zip/package.json + // + // 2022-05-06: VSCode changed the format in 1.68 + // Before | ^/zip/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + case `vscode <1.61`: { + str = `^zip:${str}`; + } break; + + case `vscode <1.66`: { + str = `^/zip/${str}`; + } break; + + case `vscode <1.68`: { + str = `^/zip${str}`; + } break; + + case `vscode`: { + str = `^/zip/${str}`; + } break; + + // To make "go to definition" work, + // We have to resolve the actual file system path from virtual path + // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) + case `coc-nvim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = resolve(`zipfile:${str}`); + } break; + + // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server) + // We have to resolve the actual file system path from virtual path, + // everything else is up to neovim + case `neovim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = `zipfile://${str}`; + } break; + + default: { + str = `zip:${str}`; + } break; + } + } else { + str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); + } + } + + return str; + } + + function fromEditorPath(str) { + switch (hostInfo) { + case `coc-nvim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for coc-nvim is in format of //zipfile://.yarn/... + // So in order to convert it back, we use .* to match all the thing + // before `zipfile:` + return process.platform === `win32` + ? str.replace(/^.*zipfile:\//, ``) + : str.replace(/^.*zipfile:/, ``); + } break; + + case `neovim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for neovim is in format of zipfile:////.yarn/... + return str.replace(/^zipfile:\/\//, ``); + } break; + + case `vscode`: + default: { + return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`) + } break; + } + } + + // Force enable 'allowLocalPluginLoads' + // TypeScript tries to resolve plugins using a path relative to itself + // which doesn't work when using the global cache + // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238 + // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but + // TypeScript already does local loads and if this code is running the user trusts the workspace + // https://github.com/microsoft/vscode/issues/45856 + const ConfiguredProject = tsserver.server.ConfiguredProject; + const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype; + ConfiguredProject.prototype.enablePluginsWithOptions = function() { + this.projectService.allowLocalPluginLoads = true; + return originalEnablePluginsWithOptions.apply(this, arguments); + }; + + // And here is the point where we hijack the VSCode <-> TS communications + // by adding ourselves in the middle. We locate everything that looks + // like an absolute path of ours and normalize it. + + const Session = tsserver.server.Session; + const {onMessage: originalOnMessage, send: originalSend} = Session.prototype; + let hostInfo = `unknown`; + + Object.assign(Session.prototype, { + onMessage(/** @type {string | object} */ message) { + const isStringMessage = typeof message === 'string'; + const parsedMessage = isStringMessage ? JSON.parse(message) : message; + + if ( + parsedMessage != null && + typeof parsedMessage === `object` && + parsedMessage.arguments && + typeof parsedMessage.arguments.hostInfo === `string` + ) { + hostInfo = parsedMessage.arguments.hostInfo; + if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) { + const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match( + // The RegExp from https://semver.org/ but without the caret at the start + /(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/ + ) ?? []).map(Number) + + if (major === 1) { + if (minor < 61) { + hostInfo += ` <1.61`; + } else if (minor < 66) { + hostInfo += ` <1.66`; + } else if (minor < 68) { + hostInfo += ` <1.68`; + } + } + } + } + + const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => { + return typeof value === 'string' ? fromEditorPath(value) : value; + }); + + return originalOnMessage.call( + this, + isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON) + ); + }, + + send(/** @type {any} */ msg) { + return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => { + return typeof value === `string` ? toEditorPath(value) : value; + }))); + } + }); + + return tsserver; +}; + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsserver.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/lib/tsserver.js your application uses +module.exports = moduleWrapper(absRequire(`typescript/lib/tsserver.js`)); diff --git a/.yarn/sdks/typescript/lib/tsserverlibrary.js b/.yarn/sdks/typescript/lib/tsserverlibrary.js new file mode 100644 index 0000000..a68f028 --- /dev/null +++ b/.yarn/sdks/typescript/lib/tsserverlibrary.js @@ -0,0 +1,225 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +const moduleWrapper = tsserver => { + if (!process.versions.pnp) { + return tsserver; + } + + const {isAbsolute} = require(`path`); + const pnpApi = require(`pnpapi`); + + const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//); + const isPortal = str => str.startsWith("portal:/"); + const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`); + + const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => { + return `${locator.name}@${locator.reference}`; + })); + + // VSCode sends the zip paths to TS using the "zip://" prefix, that TS + // doesn't understand. This layer makes sure to remove the protocol + // before forwarding it to TS, and to add it back on all returned paths. + + function toEditorPath(str) { + // We add the `zip:` prefix to both `.zip/` paths and virtual paths + if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) { + // We also take the opportunity to turn virtual paths into physical ones; + // this makes it much easier to work with workspaces that list peer + // dependencies, since otherwise Ctrl+Click would bring us to the virtual + // file instances instead of the real ones. + // + // We only do this to modules owned by the the dependency tree roots. + // This avoids breaking the resolution when jumping inside a vendor + // with peer dep (otherwise jumping into react-dom would show resolution + // errors on react). + // + const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str; + if (resolved) { + const locator = pnpApi.findPackageLocator(resolved); + if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) { + str = resolved; + } + } + + str = normalize(str); + + if (str.match(/\.zip\//)) { + switch (hostInfo) { + // Absolute VSCode `Uri.fsPath`s need to start with a slash. + // VSCode only adds it automatically for supported schemes, + // so we have to do it manually for the `zip` scheme. + // The path needs to start with a caret otherwise VSCode doesn't handle the protocol + // + // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 + // + // 2021-10-08: VSCode changed the format in 1.61. + // Before | ^zip:/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + // 2022-04-06: VSCode changed the format in 1.66. + // Before | ^/zip//c:/foo/bar.zip/package.json + // After | ^/zip/c:/foo/bar.zip/package.json + // + // 2022-05-06: VSCode changed the format in 1.68 + // Before | ^/zip/c:/foo/bar.zip/package.json + // After | ^/zip//c:/foo/bar.zip/package.json + // + case `vscode <1.61`: { + str = `^zip:${str}`; + } break; + + case `vscode <1.66`: { + str = `^/zip/${str}`; + } break; + + case `vscode <1.68`: { + str = `^/zip${str}`; + } break; + + case `vscode`: { + str = `^/zip/${str}`; + } break; + + // To make "go to definition" work, + // We have to resolve the actual file system path from virtual path + // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip) + case `coc-nvim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = resolve(`zipfile:${str}`); + } break; + + // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server) + // We have to resolve the actual file system path from virtual path, + // everything else is up to neovim + case `neovim`: { + str = normalize(resolved).replace(/\.zip\//, `.zip::`); + str = `zipfile://${str}`; + } break; + + default: { + str = `zip:${str}`; + } break; + } + } else { + str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); + } + } + + return str; + } + + function fromEditorPath(str) { + switch (hostInfo) { + case `coc-nvim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for coc-nvim is in format of //zipfile://.yarn/... + // So in order to convert it back, we use .* to match all the thing + // before `zipfile:` + return process.platform === `win32` + ? str.replace(/^.*zipfile:\//, ``) + : str.replace(/^.*zipfile:/, ``); + } break; + + case `neovim`: { + str = str.replace(/\.zip::/, `.zip/`); + // The path for neovim is in format of zipfile:////.yarn/... + return str.replace(/^zipfile:\/\//, ``); + } break; + + case `vscode`: + default: { + return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`) + } break; + } + } + + // Force enable 'allowLocalPluginLoads' + // TypeScript tries to resolve plugins using a path relative to itself + // which doesn't work when using the global cache + // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238 + // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but + // TypeScript already does local loads and if this code is running the user trusts the workspace + // https://github.com/microsoft/vscode/issues/45856 + const ConfiguredProject = tsserver.server.ConfiguredProject; + const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype; + ConfiguredProject.prototype.enablePluginsWithOptions = function() { + this.projectService.allowLocalPluginLoads = true; + return originalEnablePluginsWithOptions.apply(this, arguments); + }; + + // And here is the point where we hijack the VSCode <-> TS communications + // by adding ourselves in the middle. We locate everything that looks + // like an absolute path of ours and normalize it. + + const Session = tsserver.server.Session; + const {onMessage: originalOnMessage, send: originalSend} = Session.prototype; + let hostInfo = `unknown`; + + Object.assign(Session.prototype, { + onMessage(/** @type {string | object} */ message) { + const isStringMessage = typeof message === 'string'; + const parsedMessage = isStringMessage ? JSON.parse(message) : message; + + if ( + parsedMessage != null && + typeof parsedMessage === `object` && + parsedMessage.arguments && + typeof parsedMessage.arguments.hostInfo === `string` + ) { + hostInfo = parsedMessage.arguments.hostInfo; + if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) { + const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match( + // The RegExp from https://semver.org/ but without the caret at the start + /(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/ + ) ?? []).map(Number) + + if (major === 1) { + if (minor < 61) { + hostInfo += ` <1.61`; + } else if (minor < 66) { + hostInfo += ` <1.66`; + } else if (minor < 68) { + hostInfo += ` <1.68`; + } + } + } + } + + const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => { + return typeof value === 'string' ? fromEditorPath(value) : value; + }); + + return originalOnMessage.call( + this, + isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON) + ); + }, + + send(/** @type {any} */ msg) { + return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => { + return typeof value === `string` ? toEditorPath(value) : value; + }))); + } + }); + + return tsserver; +}; + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsserverlibrary.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/lib/tsserverlibrary.js your application uses +module.exports = moduleWrapper(absRequire(`typescript/lib/tsserverlibrary.js`)); diff --git a/.yarn/sdks/typescript/lib/typescript.js b/.yarn/sdks/typescript/lib/typescript.js new file mode 100644 index 0000000..b5f4db2 --- /dev/null +++ b/.yarn/sdks/typescript/lib/typescript.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.cjs"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = createRequire(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript your application uses +module.exports = absRequire(`typescript`); diff --git a/.yarn/sdks/typescript/package.json b/.yarn/sdks/typescript/package.json new file mode 100644 index 0000000..eb7dd74 --- /dev/null +++ b/.yarn/sdks/typescript/package.json @@ -0,0 +1,10 @@ +{ + "name": "typescript", + "version": "5.3.3-sdk", + "main": "./lib/typescript.js", + "type": "commonjs", + "bin": { + "tsc": "./bin/tsc", + "tsserver": "./bin/tsserver" + } +} diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 0000000..ebdad2a --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1,3 @@ +nodeLinker: pnp + +pnpMode: strict diff --git a/README.md b/README.md index 3184573..f6052b6 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,41 @@ # noir-profiling ## Working on this project + You can print the number of opcodes in all circuits: + ``` nargo info --workspace ``` Or regenerate profiling info: + ``` -./prove.sh +./profile.sh ``` ## Results -### Proving times (nargo, M1 Max) - -| Package | Elapsed Time | User Time | System Time | CPU Usage | Max Memory | -|------------|--------------|-----------|-------------|-----------|------------| -| poseidon | 0:00.64 | 1.17s | 0.19s | 211% | 148.99MB | -| rlp | 0:01.20 | 0.92s | 0.03s | 79% | 96.17MB | -| keccak | 0:07.57 | 40.40s | 0.94s | 545% | 2.30GB | -| keccak_2x | 0:15.00 | 79.91s | 1.75s | 544% | 4.32GB | - -### Verification times (nargo M1 Max) - -| Package | Elapsed Time | User Time | System Time | CPU Usage | Max Memory | -|------------|--------------|-----------|-------------|-----------|------------| -| poseidon | 0:00.61 | 0.86 | 0.14 | 165% | 143.35MB | -| rlp | 0:01.19 | 3.57 | 0.18 | 316% | 244.38MB | -| keccak | 0:06.66 | 39.96 | 0.60 | 609% | 1.80GB | -| keccak_2x | 0:12.39 | 76.51 | 1.15 | 626% | 3.50GB | - - +### Profiling results (local M1 Max) + +| Package | Tool | Action | Elapsed Time | User Time | System Time | CPU Usage | Max Memory | +| --------- | ------- | ------ | ------------ | --------- | ----------- | --------- | ---------- | +| poseidon | nargo | prove | 0:00.67 | 1.16 | 0.17 | 198% | 149.46MB | +| | | verify | 0:00.64 | 0.89 | 0.12 | 159% | 143.59MB | +| | noir_js | prove | 0:01.62 | 3.67 | 0.66 | 266% | 2.18GB | +| | | verify | 0:01.28 | 3.30 | 0.55 | 299% | 2.13GB | +| rlp | nargo | prove | 0:01.28 | 3.74 | 0.25 | 310% | 313.48MB | +| | | verify | 0:01.27 | 3.70 | 0.15 | 303% | 244.93MB | +| | noir_js | prove | 0:02.61 | 9.90 | 0.72 | 406% | 2.24GB | +| | | verify | 0:02.48 | 9.25 | 0.59 | 396% | 2.36GB | +| keccak | nargo | prove | 0:07.41 | 40.26 | 0.96 | 555% | 2.29GB | +| | | verify | 0:06.62 | 39.98 | 0.62 | 613% | 1.79GB | +| | noir_js | prove | 0:21.50 | 107.59 | 2.00 | 509% | 4.07GB | +| | | verify | 0:18.11 | 95.84 | 1.04 | 534% | 3.65GB | +| keccak_2x | nargo | prove | 0:14.52 | 79.77 | 1.83 | 561% | 4.31GB | +| | | verify | 0:12.44 | 76.64 | 1.24 | 626% | 3.57GB | +| | noir_js | prove | 0:42.05 | 213.33 | 3.54 | 515% | 6.06GB | +| | | verify | 0:32.77 | 184.67 | 1.52 | 568% | 5.11GB | ### Circuit sizes @@ -47,4 +51,4 @@ Or regenerate profiling info: +-----------+----------------------+--------------+----------------------+ | rlp | Bounded { width: 3 } | 4188 | 11172 | +-----------+----------------------+--------------+----------------------+ -``` \ No newline at end of file +``` diff --git a/circuits/keccak/Verifier.toml b/circuits/keccak/Verifier.toml index e69de29..fec6f90 100644 --- a/circuits/keccak/Verifier.toml +++ b/circuits/keccak/Verifier.toml @@ -0,0 +1 @@ +x = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/circuits/keccak/src/main.nr b/circuits/keccak/src/main.nr index ff09a74..23b2bcd 100644 --- a/circuits/keccak/src/main.nr +++ b/circuits/keccak/src/main.nr @@ -1,6 +1,6 @@ use dep::std; -fn main(x: u8) { +fn main(x: pub u8) { let array: [u8; 1000] = [x; 1000]; let hash = std::hash::keccak256(array, 1000); assert(hash[0] == 174); diff --git a/circuits/keccak_2x/Verifier.toml b/circuits/keccak_2x/Verifier.toml index e69de29..fec6f90 100644 --- a/circuits/keccak_2x/Verifier.toml +++ b/circuits/keccak_2x/Verifier.toml @@ -0,0 +1 @@ +x = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/circuits/keccak_2x/src/main.nr b/circuits/keccak_2x/src/main.nr index 184a25b..e9bf81c 100644 --- a/circuits/keccak_2x/src/main.nr +++ b/circuits/keccak_2x/src/main.nr @@ -1,6 +1,6 @@ use dep::std; -fn main(x: u8) { +fn main(x: pub u8) { let array: [u8; 1000] = [x; 1000]; let hash = std::hash::keccak256(array, 1000); let hash2 = std::hash::keccak256(array, 999); diff --git a/circuits/poseidon/Verifier.toml b/circuits/poseidon/Verifier.toml index e69de29..091c6e3 100644 --- a/circuits/poseidon/Verifier.toml +++ b/circuits/poseidon/Verifier.toml @@ -0,0 +1 @@ +x = "0x000000000000000000000000000000000000000000000000000000000000002a" diff --git a/circuits/poseidon/src/main.nr b/circuits/poseidon/src/main.nr index cf8bf90..8a31a5e 100644 --- a/circuits/poseidon/src/main.nr +++ b/circuits/poseidon/src/main.nr @@ -1,6 +1,6 @@ use dep::std; -fn main(x: Field) { +fn main(x: pub Field) { let hash = std::hash::poseidon::bn254::hash_1([x]); assert(hash == 0x1b408dafebeddf0871388399b1e53bd065fd70f18580be5cdde15d7eb2c52743); } diff --git a/circuits/rlp/Verifier.toml b/circuits/rlp/Verifier.toml index e69de29..83109b4 100644 --- a/circuits/rlp/Verifier.toml +++ b/circuits/rlp/Verifier.toml @@ -0,0 +1 @@ +block_header = ["0x00000000000000000000000000000000000000000000000000000000000000f9", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000011", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x000000000000000000000000000000000000000000000000000000000000000a", "0x00000000000000000000000000000000000000000000000000000000000000d2", "0x000000000000000000000000000000000000000000000000000000000000003a", "0x0000000000000000000000000000000000000000000000000000000000000047", "0x00000000000000000000000000000000000000000000000000000000000000e5", "0x000000000000000000000000000000000000000000000000000000000000005b", "0x00000000000000000000000000000000000000000000000000000000000000fe", "0x00000000000000000000000000000000000000000000000000000000000000b9", "0x00000000000000000000000000000000000000000000000000000000000000f5", "0x000000000000000000000000000000000000000000000000000000000000008b", "0x0000000000000000000000000000000000000000000000000000000000000023", "0x000000000000000000000000000000000000000000000000000000000000007f", "0x00000000000000000000000000000000000000000000000000000000000000bf", "0x0000000000000000000000000000000000000000000000000000000000000032", "0x000000000000000000000000000000000000000000000000000000000000007d", "0x00000000000000000000000000000000000000000000000000000000000000a5", "0x0000000000000000000000000000000000000000000000000000000000000013", "0x00000000000000000000000000000000000000000000000000000000000000a5", "0x000000000000000000000000000000000000000000000000000000000000003b", "0x0000000000000000000000000000000000000000000000000000000000000056", "0x000000000000000000000000000000000000000000000000000000000000007f", "0x000000000000000000000000000000000000000000000000000000000000004d", "0x00000000000000000000000000000000000000000000000000000000000000e2", "0x00000000000000000000000000000000000000000000000000000000000000c5", "0x000000000000000000000000000000000000000000000000000000000000005e", "0x000000000000000000000000000000000000000000000000000000000000008f", "0x0000000000000000000000000000000000000000000000000000000000000009", "0x0000000000000000000000000000000000000000000000000000000000000045", "0x0000000000000000000000000000000000000000000000000000000000000068", "0x0000000000000000000000000000000000000000000000000000000000000095", "0x0000000000000000000000000000000000000000000000000000000000000071", "0x0000000000000000000000000000000000000000000000000000000000000027", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000a4", "0x0000000000000000000000000000000000000000000000000000000000000073", "0x00000000000000000000000000000000000000000000000000000000000000a5", "0x00000000000000000000000000000000000000000000000000000000000000a6", "0x00000000000000000000000000000000000000000000000000000000000000e4", "0x00000000000000000000000000000000000000000000000000000000000000b4", "0x000000000000000000000000000000000000000000000000000000000000002c", "0x00000000000000000000000000000000000000000000000000000000000000cb", "0x00000000000000000000000000000000000000000000000000000000000000de", "0x0000000000000000000000000000000000000000000000000000000000000034", "0x0000000000000000000000000000000000000000000000000000000000000030", "0x000000000000000000000000000000000000000000000000000000000000009d", "0x00000000000000000000000000000000000000000000000000000000000000d6", "0x00000000000000000000000000000000000000000000000000000000000000be", "0x0000000000000000000000000000000000000000000000000000000000000045", "0x0000000000000000000000000000000000000000000000000000000000000082", "0x0000000000000000000000000000000000000000000000000000000000000074", "0x0000000000000000000000000000000000000000000000000000000000000054", "0x0000000000000000000000000000000000000000000000000000000000000085", "0x00000000000000000000000000000000000000000000000000000000000000aa", "0x00000000000000000000000000000000000000000000000000000000000000d7", "0x00000000000000000000000000000000000000000000000000000000000000c1", "0x00000000000000000000000000000000000000000000000000000000000000d4", "0x0000000000000000000000000000000000000000000000000000000000000098", "0x000000000000000000000000000000000000000000000000000000000000006a", "0x0000000000000000000000000000000000000000000000000000000000000095", "0x0000000000000000000000000000000000000000000000000000000000000064", "0x00000000000000000000000000000000000000000000000000000000000000fd", "0x0000000000000000000000000000000000000000000000000000000000000091", "0x00000000000000000000000000000000000000000000000000000000000000dc", "0x00000000000000000000000000000000000000000000000000000000000000f6", "0x000000000000000000000000000000000000000000000000000000000000005e", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x0000000000000000000000000000000000000000000000000000000000000045", "0x000000000000000000000000000000000000000000000000000000000000000b", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x00000000000000000000000000000000000000000000000000000000000000ee", "0x00000000000000000000000000000000000000000000000000000000000000a4", "0x00000000000000000000000000000000000000000000000000000000000000c3", "0x00000000000000000000000000000000000000000000000000000000000000e1", "0x000000000000000000000000000000000000000000000000000000000000005b", "0x0000000000000000000000000000000000000000000000000000000000000033", "0x00000000000000000000000000000000000000000000000000000000000000c6", "0x0000000000000000000000000000000000000000000000000000000000000086", "0x0000000000000000000000000000000000000000000000000000000000000032", "0x0000000000000000000000000000000000000000000000000000000000000015", "0x0000000000000000000000000000000000000000000000000000000000000022", "0x00000000000000000000000000000000000000000000000000000000000000fd", "0x0000000000000000000000000000000000000000000000000000000000000078", "0x000000000000000000000000000000000000000000000000000000000000009d", "0x000000000000000000000000000000000000000000000000000000000000001a", "0x00000000000000000000000000000000000000000000000000000000000000ad", "0x0000000000000000000000000000000000000000000000000000000000000051", "0x0000000000000000000000000000000000000000000000000000000000000094", "0x0000000000000000000000000000000000000000000000000000000000000018", "0x000000000000000000000000000000000000000000000000000000000000005e", "0x00000000000000000000000000000000000000000000000000000000000000b3", "0x00000000000000000000000000000000000000000000000000000000000000a5", "0x0000000000000000000000000000000000000000000000000000000000000005", "0x0000000000000000000000000000000000000000000000000000000000000063", "0x0000000000000000000000000000000000000000000000000000000000000055", "0x000000000000000000000000000000000000000000000000000000000000005a", "0x000000000000000000000000000000000000000000000000000000000000004e", "0x0000000000000000000000000000000000000000000000000000000000000068", "0x00000000000000000000000000000000000000000000000000000000000000b4", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x0000000000000000000000000000000000000000000000000000000000000052", "0x0000000000000000000000000000000000000000000000000000000000000080", "0x0000000000000000000000000000000000000000000000000000000000000091", "0x00000000000000000000000000000000000000000000000000000000000000fe", "0x0000000000000000000000000000000000000000000000000000000000000030", "0x0000000000000000000000000000000000000000000000000000000000000049", "0x000000000000000000000000000000000000000000000000000000000000006a", "0x00000000000000000000000000000000000000000000000000000000000000a5", "0x00000000000000000000000000000000000000000000000000000000000000ea", "0x00000000000000000000000000000000000000000000000000000000000000df", "0x000000000000000000000000000000000000000000000000000000000000002e", "0x0000000000000000000000000000000000000000000000000000000000000005", "0x00000000000000000000000000000000000000000000000000000000000000a8", "0x000000000000000000000000000000000000000000000000000000000000004f", "0x000000000000000000000000000000000000000000000000000000000000008d", "0x00000000000000000000000000000000000000000000000000000000000000da", "0x0000000000000000000000000000000000000000000000000000000000000040", "0x0000000000000000000000000000000000000000000000000000000000000062", "0x00000000000000000000000000000000000000000000000000000000000000c8", "0x0000000000000000000000000000000000000000000000000000000000000057", "0x00000000000000000000000000000000000000000000000000000000000000c7", "0x000000000000000000000000000000000000000000000000000000000000001c", "0x00000000000000000000000000000000000000000000000000000000000000d5", "0x00000000000000000000000000000000000000000000000000000000000000de", "0x00000000000000000000000000000000000000000000000000000000000000a4", "0x00000000000000000000000000000000000000000000000000000000000000b6", "0x0000000000000000000000000000000000000000000000000000000000000091", "0x00000000000000000000000000000000000000000000000000000000000000db", "0x00000000000000000000000000000000000000000000000000000000000000fd", "0x00000000000000000000000000000000000000000000000000000000000000ba", "0x0000000000000000000000000000000000000000000000000000000000000079", "0x0000000000000000000000000000000000000000000000000000000000000027", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000a7", "0x000000000000000000000000000000000000000000000000000000000000008b", "0x000000000000000000000000000000000000000000000000000000000000002e", "0x00000000000000000000000000000000000000000000000000000000000000db", "0x00000000000000000000000000000000000000000000000000000000000000c1", "0x00000000000000000000000000000000000000000000000000000000000000c3", "0x00000000000000000000000000000000000000000000000000000000000000ae", "0x00000000000000000000000000000000000000000000000000000000000000f0", "0x000000000000000000000000000000000000000000000000000000000000002f", "0x0000000000000000000000000000000000000000000000000000000000000028", "0x00000000000000000000000000000000000000000000000000000000000000bc", "0x0000000000000000000000000000000000000000000000000000000000000079", "0x0000000000000000000000000000000000000000000000000000000000000061", "0x0000000000000000000000000000000000000000000000000000000000000032", "0x00000000000000000000000000000000000000000000000000000000000000e3", "0x00000000000000000000000000000000000000000000000000000000000000dc", "0x0000000000000000000000000000000000000000000000000000000000000023", "0x0000000000000000000000000000000000000000000000000000000000000063", "0x000000000000000000000000000000000000000000000000000000000000007a", "0x0000000000000000000000000000000000000000000000000000000000000024", "0x000000000000000000000000000000000000000000000000000000000000005e", "0x000000000000000000000000000000000000000000000000000000000000004e", "0x000000000000000000000000000000000000000000000000000000000000009c", "0x000000000000000000000000000000000000000000000000000000000000004e", "0x00000000000000000000000000000000000000000000000000000000000000c5", "0x0000000000000000000000000000000000000000000000000000000000000036", "0x00000000000000000000000000000000000000000000000000000000000000e8", "0x00000000000000000000000000000000000000000000000000000000000000a3", "0x00000000000000000000000000000000000000000000000000000000000000f9", "0x00000000000000000000000000000000000000000000000000000000000000d5", "0x0000000000000000000000000000000000000000000000000000000000000010", "0x000000000000000000000000000000000000000000000000000000000000003a", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x000000000000000000000000000000000000000000000000000000000000006f", "0x00000000000000000000000000000000000000000000000000000000000000b4", "0x0000000000000000000000000000000000000000000000000000000000000049", "0x000000000000000000000000000000000000000000000000000000000000001a", "0x00000000000000000000000000000000000000000000000000000000000000c8", "0x00000000000000000000000000000000000000000000000000000000000000ee", "0x0000000000000000000000000000000000000000000000000000000000000006", "0x0000000000000000000000000000000000000000000000000000000000000031", "0x0000000000000000000000000000000000000000000000000000000000000042", "0x000000000000000000000000000000000000000000000000000000000000009f", "0x00000000000000000000000000000000000000000000000000000000000000e6", "0x0000000000000000000000000000000000000000000000000000000000000017", "0x00000000000000000000000000000000000000000000000000000000000000e2", "0x000000000000000000000000000000000000000000000000000000000000000d", "0x000000000000000000000000000000000000000000000000000000000000000a", "0x00000000000000000000000000000000000000000000000000000000000000e6", "0x0000000000000000000000000000000000000000000000000000000000000007", "0x0000000000000000000000000000000000000000000000000000000000000033", "0x0000000000000000000000000000000000000000000000000000000000000067", "0x000000000000000000000000000000000000000000000000000000000000002d", "0x000000000000000000000000000000000000000000000000000000000000008b", "0x00000000000000000000000000000000000000000000000000000000000000bb", "0x0000000000000000000000000000000000000000000000000000000000000039", "0x000000000000000000000000000000000000000000000000000000000000007d", "0x0000000000000000000000000000000000000000000000000000000000000056", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000092", "0x000000000000000000000000000000000000000000000000000000000000004d", "0x00000000000000000000000000000000000000000000000000000000000000c8", "0x00000000000000000000000000000000000000000000000000000000000000c4", "0x00000000000000000000000000000000000000000000000000000000000000df", "0x000000000000000000000000000000000000000000000000000000000000009e", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x0000000000000000000000000000000000000000000000000000000000000037", "0x0000000000000000000000000000000000000000000000000000000000000029", "0x00000000000000000000000000000000000000000000000000000000000000c4", "0x0000000000000000000000000000000000000000000000000000000000000025", "0x0000000000000000000000000000000000000000000000000000000000000059", "0x0000000000000000000000000000000000000000000000000000000000000070", "0x0000000000000000000000000000000000000000000000000000000000000004", "0x0000000000000000000000000000000000000000000000000000000000000006", "0x00000000000000000000000000000000000000000000000000000000000000b7", "0x00000000000000000000000000000000000000000000000000000000000000f6", "0x00000000000000000000000000000000000000000000000000000000000000ef", "0x0000000000000000000000000000000000000000000000000000000000000079", "0x00000000000000000000000000000000000000000000000000000000000000af", "0x0000000000000000000000000000000000000000000000000000000000000092", "0x00000000000000000000000000000000000000000000000000000000000000ab", "0x0000000000000000000000000000000000000000000000000000000000000047", "0x0000000000000000000000000000000000000000000000000000000000000013", "0x0000000000000000000000000000000000000000000000000000000000000063", "0x00000000000000000000000000000000000000000000000000000000000000ef", "0x0000000000000000000000000000000000000000000000000000000000000038", "0x000000000000000000000000000000000000000000000000000000000000004b", "0x0000000000000000000000000000000000000000000000000000000000000074", "0x00000000000000000000000000000000000000000000000000000000000000eb", "0x0000000000000000000000000000000000000000000000000000000000000014", "0x00000000000000000000000000000000000000000000000000000000000000ef", "0x00000000000000000000000000000000000000000000000000000000000000d0", "0x00000000000000000000000000000000000000000000000000000000000000f3", "0x0000000000000000000000000000000000000000000000000000000000000019", "0x00000000000000000000000000000000000000000000000000000000000000d3", "0x00000000000000000000000000000000000000000000000000000000000000de", "0x00000000000000000000000000000000000000000000000000000000000000f8", "0x0000000000000000000000000000000000000000000000000000000000000078", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000cb", "0x0000000000000000000000000000000000000000000000000000000000000057", "0x0000000000000000000000000000000000000000000000000000000000000041", "0x0000000000000000000000000000000000000000000000000000000000000049", "0x00000000000000000000000000000000000000000000000000000000000000a8", "0x00000000000000000000000000000000000000000000000000000000000000c5", "0x000000000000000000000000000000000000000000000000000000000000002e", "0x0000000000000000000000000000000000000000000000000000000000000056", "0x00000000000000000000000000000000000000000000000000000000000000d1", "0x00000000000000000000000000000000000000000000000000000000000000ad", "0x00000000000000000000000000000000000000000000000000000000000000cc", "0x000000000000000000000000000000000000000000000000000000000000002e", "0x00000000000000000000000000000000000000000000000000000000000000e8", "0x000000000000000000000000000000000000000000000000000000000000009d", "0x00000000000000000000000000000000000000000000000000000000000000cc", "0x0000000000000000000000000000000000000000000000000000000000000091", "0x000000000000000000000000000000000000000000000000000000000000004b", "0x0000000000000000000000000000000000000000000000000000000000000097", "0x0000000000000000000000000000000000000000000000000000000000000069", "0x00000000000000000000000000000000000000000000000000000000000000a6", "0x0000000000000000000000000000000000000000000000000000000000000048", "0x000000000000000000000000000000000000000000000000000000000000008e", "0x00000000000000000000000000000000000000000000000000000000000000ad", "0x00000000000000000000000000000000000000000000000000000000000000ff", "0x00000000000000000000000000000000000000000000000000000000000000ba", "0x0000000000000000000000000000000000000000000000000000000000000078", "0x000000000000000000000000000000000000000000000000000000000000002b", "0x0000000000000000000000000000000000000000000000000000000000000079", "0x0000000000000000000000000000000000000000000000000000000000000068", "0x00000000000000000000000000000000000000000000000000000000000000e4", "0x0000000000000000000000000000000000000000000000000000000000000082", "0x0000000000000000000000000000000000000000000000000000000000000086", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x0000000000000000000000000000000000000000000000000000000000000096", "0x0000000000000000000000000000000000000000000000000000000000000073", "0x0000000000000000000000000000000000000000000000000000000000000082", "0x00000000000000000000000000000000000000000000000000000000000000ba", "0x00000000000000000000000000000000000000000000000000000000000000f7", "0x0000000000000000000000000000000000000000000000000000000000000063", "0x000000000000000000000000000000000000000000000000000000000000006c", "0x0000000000000000000000000000000000000000000000000000000000000015", "0x00000000000000000000000000000000000000000000000000000000000000f4", "0x00000000000000000000000000000000000000000000000000000000000000f3", "0x000000000000000000000000000000000000000000000000000000000000003c", "0x00000000000000000000000000000000000000000000000000000000000000d0", "0x0000000000000000000000000000000000000000000000000000000000000060", "0x0000000000000000000000000000000000000000000000000000000000000022", "0x000000000000000000000000000000000000000000000000000000000000005d", "0x0000000000000000000000000000000000000000000000000000000000000020", "0x00000000000000000000000000000000000000000000000000000000000000af", "0x000000000000000000000000000000000000000000000000000000000000004d", "0x00000000000000000000000000000000000000000000000000000000000000b5", "0x0000000000000000000000000000000000000000000000000000000000000012", "0x000000000000000000000000000000000000000000000000000000000000003b", "0x0000000000000000000000000000000000000000000000000000000000000031", "0x00000000000000000000000000000000000000000000000000000000000000c0", "0x0000000000000000000000000000000000000000000000000000000000000099", "0x00000000000000000000000000000000000000000000000000000000000000ff", "0x000000000000000000000000000000000000000000000000000000000000007b", "0x00000000000000000000000000000000000000000000000000000000000000e7", "0x000000000000000000000000000000000000000000000000000000000000006c", "0x00000000000000000000000000000000000000000000000000000000000000fb", "0x000000000000000000000000000000000000000000000000000000000000004b", "0x0000000000000000000000000000000000000000000000000000000000000086", "0x000000000000000000000000000000000000000000000000000000000000005c", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x000000000000000000000000000000000000000000000000000000000000004e", "0x000000000000000000000000000000000000000000000000000000000000006b", "0x000000000000000000000000000000000000000000000000000000000000001b", "0x000000000000000000000000000000000000000000000000000000000000001f", "0x000000000000000000000000000000000000000000000000000000000000002b", "0x000000000000000000000000000000000000000000000000000000000000005c", "0x00000000000000000000000000000000000000000000000000000000000000d5", "0x0000000000000000000000000000000000000000000000000000000000000065", "0x000000000000000000000000000000000000000000000000000000000000003f", "0x0000000000000000000000000000000000000000000000000000000000000057", "0x0000000000000000000000000000000000000000000000000000000000000053", "0x00000000000000000000000000000000000000000000000000000000000000f8", "0x00000000000000000000000000000000000000000000000000000000000000a3", "0x0000000000000000000000000000000000000000000000000000000000000013", "0x0000000000000000000000000000000000000000000000000000000000000068", "0x0000000000000000000000000000000000000000000000000000000000000067", "0x0000000000000000000000000000000000000000000000000000000000000054", "0x00000000000000000000000000000000000000000000000000000000000000f8", "0x0000000000000000000000000000000000000000000000000000000000000077", "0x00000000000000000000000000000000000000000000000000000000000000b4", "0x0000000000000000000000000000000000000000000000000000000000000020", "0x00000000000000000000000000000000000000000000000000000000000000d1", "0x0000000000000000000000000000000000000000000000000000000000000052", "0x0000000000000000000000000000000000000000000000000000000000000034", "0x00000000000000000000000000000000000000000000000000000000000000fa", "0x0000000000000000000000000000000000000000000000000000000000000094", "0x0000000000000000000000000000000000000000000000000000000000000065", "0x00000000000000000000000000000000000000000000000000000000000000db", "0x000000000000000000000000000000000000000000000000000000000000004c", "0x00000000000000000000000000000000000000000000000000000000000000c2", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x000000000000000000000000000000000000000000000000000000000000007d", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x0000000000000000000000000000000000000000000000000000000000000053", "0x0000000000000000000000000000000000000000000000000000000000000025", "0x00000000000000000000000000000000000000000000000000000000000000b7", "0x00000000000000000000000000000000000000000000000000000000000000f3", "0x00000000000000000000000000000000000000000000000000000000000000bd", "0x0000000000000000000000000000000000000000000000000000000000000009", "0x000000000000000000000000000000000000000000000000000000000000004f", "0x000000000000000000000000000000000000000000000000000000000000007a", "0x000000000000000000000000000000000000000000000000000000000000001c", "0x0000000000000000000000000000000000000000000000000000000000000078", "0x0000000000000000000000000000000000000000000000000000000000000096", "0x000000000000000000000000000000000000000000000000000000000000008b", "0x00000000000000000000000000000000000000000000000000000000000000be", "0x00000000000000000000000000000000000000000000000000000000000000e1", "0x00000000000000000000000000000000000000000000000000000000000000de", "0x00000000000000000000000000000000000000000000000000000000000000b8", "0x00000000000000000000000000000000000000000000000000000000000000ce", "0x00000000000000000000000000000000000000000000000000000000000000e1", "0x0000000000000000000000000000000000000000000000000000000000000075", "0x00000000000000000000000000000000000000000000000000000000000000e9", "0x00000000000000000000000000000000000000000000000000000000000000f4", "0x00000000000000000000000000000000000000000000000000000000000000a2", "0x00000000000000000000000000000000000000000000000000000000000000f4", "0x00000000000000000000000000000000000000000000000000000000000000d4", "0x0000000000000000000000000000000000000000000000000000000000000026", "0x00000000000000000000000000000000000000000000000000000000000000dc", "0x0000000000000000000000000000000000000000000000000000000000000025", "0x0000000000000000000000000000000000000000000000000000000000000081", "0x00000000000000000000000000000000000000000000000000000000000000d7", "0x0000000000000000000000000000000000000000000000000000000000000019", "0x000000000000000000000000000000000000000000000000000000000000005d", "0x0000000000000000000000000000000000000000000000000000000000000035", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000e5", "0x0000000000000000000000000000000000000000000000000000000000000006", "0x00000000000000000000000000000000000000000000000000000000000000ff", "0x00000000000000000000000000000000000000000000000000000000000000cf", "0x000000000000000000000000000000000000000000000000000000000000004e", "0x0000000000000000000000000000000000000000000000000000000000000078", "0x000000000000000000000000000000000000000000000000000000000000006b", "0x00000000000000000000000000000000000000000000000000000000000000ee", "0x00000000000000000000000000000000000000000000000000000000000000d4", "0x0000000000000000000000000000000000000000000000000000000000000080", "0x000000000000000000000000000000000000000000000000000000000000006a", "0x00000000000000000000000000000000000000000000000000000000000000bd", "0x0000000000000000000000000000000000000000000000000000000000000054", "0x0000000000000000000000000000000000000000000000000000000000000027", "0x0000000000000000000000000000000000000000000000000000000000000088", "0x00000000000000000000000000000000000000000000000000000000000000ac", "0x0000000000000000000000000000000000000000000000000000000000000095", "0x0000000000000000000000000000000000000000000000000000000000000043", "0x0000000000000000000000000000000000000000000000000000000000000059", "0x00000000000000000000000000000000000000000000000000000000000000ee", "0x00000000000000000000000000000000000000000000000000000000000000a3", "0x000000000000000000000000000000000000000000000000000000000000007a", "0x0000000000000000000000000000000000000000000000000000000000000058", "0x000000000000000000000000000000000000000000000000000000000000005a", "0x0000000000000000000000000000000000000000000000000000000000000095", "0x0000000000000000000000000000000000000000000000000000000000000050", "0x000000000000000000000000000000000000000000000000000000000000003b", "0x0000000000000000000000000000000000000000000000000000000000000079", "0x00000000000000000000000000000000000000000000000000000000000000f9", "0x0000000000000000000000000000000000000000000000000000000000000007", "0x00000000000000000000000000000000000000000000000000000000000000ee", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x0000000000000000000000000000000000000000000000000000000000000051", "0x00000000000000000000000000000000000000000000000000000000000000d6", "0x000000000000000000000000000000000000000000000000000000000000009c", "0x0000000000000000000000000000000000000000000000000000000000000040", "0x0000000000000000000000000000000000000000000000000000000000000095", "0x00000000000000000000000000000000000000000000000000000000000000a5", "0x0000000000000000000000000000000000000000000000000000000000000041", "0x0000000000000000000000000000000000000000000000000000000000000024", "0x00000000000000000000000000000000000000000000000000000000000000d8", "0x00000000000000000000000000000000000000000000000000000000000000df", "0x00000000000000000000000000000000000000000000000000000000000000a7", "0x0000000000000000000000000000000000000000000000000000000000000049", "0x00000000000000000000000000000000000000000000000000000000000000d5", "0x00000000000000000000000000000000000000000000000000000000000000b4", "0x00000000000000000000000000000000000000000000000000000000000000e6", "0x00000000000000000000000000000000000000000000000000000000000000e6", "0x0000000000000000000000000000000000000000000000000000000000000020", "0x000000000000000000000000000000000000000000000000000000000000006a", "0x00000000000000000000000000000000000000000000000000000000000000c1", "0x0000000000000000000000000000000000000000000000000000000000000093", "0x00000000000000000000000000000000000000000000000000000000000000b0", "0x0000000000000000000000000000000000000000000000000000000000000028", "0x000000000000000000000000000000000000000000000000000000000000005d", "0x0000000000000000000000000000000000000000000000000000000000000077", "0x00000000000000000000000000000000000000000000000000000000000000d2", "0x000000000000000000000000000000000000000000000000000000000000000d", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000000000000000000000000000000000000000009f", "0x0000000000000000000000000000000000000000000000000000000000000010", "0x0000000000000000000000000000000000000000000000000000000000000070", "0x0000000000000000000000000000000000000000000000000000000000000072", "0x0000000000000000000000000000000000000000000000000000000000000067", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000d3", "0x000000000000000000000000000000000000000000000000000000000000000f", "0x0000000000000000000000000000000000000000000000000000000000000004", "0x0000000000000000000000000000000000000000000000000000000000000031", "0x000000000000000000000000000000000000000000000000000000000000004a", "0x0000000000000000000000000000000000000000000000000000000000000056", "0x0000000000000000000000000000000000000000000000000000000000000018", "0x0000000000000000000000000000000000000000000000000000000000000092", "0x000000000000000000000000000000000000000000000000000000000000006d", "0x00000000000000000000000000000000000000000000000000000000000000f6", "0x0000000000000000000000000000000000000000000000000000000000000050", "0x00000000000000000000000000000000000000000000000000000000000000cf", "0x00000000000000000000000000000000000000000000000000000000000000c2", "0x0000000000000000000000000000000000000000000000000000000000000061", "0x00000000000000000000000000000000000000000000000000000000000000e2", "0x0000000000000000000000000000000000000000000000000000000000000099", "0x00000000000000000000000000000000000000000000000000000000000000f1", "0x000000000000000000000000000000000000000000000000000000000000005e", "0x000000000000000000000000000000000000000000000000000000000000002b", "0x00000000000000000000000000000000000000000000000000000000000000e9", "0x00000000000000000000000000000000000000000000000000000000000000c0", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000098", "0x00000000000000000000000000000000000000000000000000000000000000ab", "0x0000000000000000000000000000000000000000000000000000000000000096", "0x0000000000000000000000000000000000000000000000000000000000000056", "0x000000000000000000000000000000000000000000000000000000000000001a", "0x00000000000000000000000000000000000000000000000000000000000000fa", "0x00000000000000000000000000000000000000000000000000000000000000ea", "0x00000000000000000000000000000000000000000000000000000000000000b3", "0x000000000000000000000000000000000000000000000000000000000000004a", "0x000000000000000000000000000000000000000000000000000000000000009c", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000af", "0x000000000000000000000000000000000000000000000000000000000000009d", "0x000000000000000000000000000000000000000000000000000000000000009c", "0x0000000000000000000000000000000000000000000000000000000000000049", "0x000000000000000000000000000000000000000000000000000000000000006d", "0x000000000000000000000000000000000000000000000000000000000000001a", "0x0000000000000000000000000000000000000000000000000000000000000030", "0x000000000000000000000000000000000000000000000000000000000000000c", "0x00000000000000000000000000000000000000000000000000000000000000b6", "0x00000000000000000000000000000000000000000000000000000000000000af", "0x00000000000000000000000000000000000000000000000000000000000000d3", "0x00000000000000000000000000000000000000000000000000000000000000ad", "0x00000000000000000000000000000000000000000000000000000000000000b5", "0x00000000000000000000000000000000000000000000000000000000000000f1", "0x0000000000000000000000000000000000000000000000000000000000000083", "0x00000000000000000000000000000000000000000000000000000000000000f7", "0x0000000000000000000000000000000000000000000000000000000000000069", "0x0000000000000000000000000000000000000000000000000000000000000062", "0x00000000000000000000000000000000000000000000000000000000000000ff", "0x0000000000000000000000000000000000000000000000000000000000000065", "0x0000000000000000000000000000000000000000000000000000000000000007", "0x00000000000000000000000000000000000000000000000000000000000000e3", "0x0000000000000000000000000000000000000000000000000000000000000015", "0x000000000000000000000000000000000000000000000000000000000000003f", "0x000000000000000000000000000000000000000000000000000000000000004e", "0x0000000000000000000000000000000000000000000000000000000000000029", "0x000000000000000000000000000000000000000000000000000000000000009b", "0x000000000000000000000000000000000000000000000000000000000000003a", "0x00000000000000000000000000000000000000000000000000000000000000e7", "0x00000000000000000000000000000000000000000000000000000000000000de", "0x000000000000000000000000000000000000000000000000000000000000000f", "0x000000000000000000000000000000000000000000000000000000000000008d", "0x00000000000000000000000000000000000000000000000000000000000000a0", "0x00000000000000000000000000000000000000000000000000000000000000db", "0x00000000000000000000000000000000000000000000000000000000000000d5", "0x00000000000000000000000000000000000000000000000000000000000000a3", "0x0000000000000000000000000000000000000000000000000000000000000074", "0x00000000000000000000000000000000000000000000000000000000000000bf", "0x0000000000000000000000000000000000000000000000000000000000000077", "0x00000000000000000000000000000000000000000000000000000000000000e8", "0x00000000000000000000000000000000000000000000000000000000000000d7", "0x00000000000000000000000000000000000000000000000000000000000000b6", "0x000000000000000000000000000000000000000000000000000000000000004d", "0x0000000000000000000000000000000000000000000000000000000000000082", "0x0000000000000000000000000000000000000000000000000000000000000066", "0x000000000000000000000000000000000000000000000000000000000000005a", "0x0000000000000000000000000000000000000000000000000000000000000030", "0x0000000000000000000000000000000000000000000000000000000000000042", "0x00000000000000000000000000000000000000000000000000000000000000c5", "0x00000000000000000000000000000000000000000000000000000000000000e4", "0x00000000000000000000000000000000000000000000000000000000000000ca", "0x000000000000000000000000000000000000000000000000000000000000002b", "0x00000000000000000000000000000000000000000000000000000000000000a9", "0x00000000000000000000000000000000000000000000000000000000000000e8", "0x00000000000000000000000000000000000000000000000000000000000000f6", "0x000000000000000000000000000000000000000000000000000000000000000b", "0x0000000000000000000000000000000000000000000000000000000000000017", "0x0000000000000000000000000000000000000000000000000000000000000064", "0x0000000000000000000000000000000000000000000000000000000000000032", "0x00000000000000000000000000000000000000000000000000000000000000d3", "0x00000000000000000000000000000000000000000000000000000000000000cd", "0x00000000000000000000000000000000000000000000000000000000000000ca", "0x0000000000000000000000000000000000000000000000000000000000000073", "0x000000000000000000000000000000000000000000000000000000000000003c", "0x0000000000000000000000000000000000000000000000000000000000000031", "0x0000000000000000000000000000000000000000000000000000000000000080"] diff --git a/circuits/rlp/src/main.nr b/circuits/rlp/src/main.nr index b06fc01..fa1529e 100644 --- a/circuits/rlp/src/main.nr +++ b/circuits/rlp/src/main.nr @@ -4,7 +4,7 @@ use dep::proof::rlp; global MAX_HEADER_RLP_SIZE = 532; global HEADER_FIELDS_COUNT = 17; -fn main(block_header: [u8; MAX_HEADER_RLP_SIZE]) { +fn main(block_header: pub [u8; MAX_HEADER_RLP_SIZE]) { let decoded: rlp::RLP_List = rlp::decode1(block_header); assert(decoded.num_fields == HEADER_FIELDS_COUNT); } diff --git a/package.json b/package.json new file mode 100644 index 0000000..606f335 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "noir-profiling", + "version": "0.0.1", + "repository": "https://github.com/vlayer-xyz/noir-profiling.git", + "packageManager": "yarn@4.0.2", + "dependencies": { + "@noir-lang/backend_barretenberg": "0.22.0-179c90d.nightly", + "@noir-lang/noir_js": "0.22.0-179c90d.nightly", + "@noir-lang/noirc_abi": "^0.22.0-179c90d.nightly", + "toml": "^3.0.0", + "tsx": "^4.7.0", + "typescript": "^5.3.3", + "yargs": "^17.7.2" + }, + "scripts": { + "build": "tsc", + "start": "node dist/index.js" + }, + "type": "module", + "license": "MIT", + "devDependencies": { + "@types/node": "^20.11.6", + "@types/yargs": "^17.0.32", + "prettier": "^3.2.4" + } +} diff --git a/prove.sh b/profile.sh similarity index 53% rename from prove.sh rename to profile.sh index 4929c8e..aaaf73e 100755 --- a/prove.sh +++ b/profile.sh @@ -20,23 +20,36 @@ convert_memory() { fi } -echo "| Package | Elapsed Time | User Time | System Time | CPU Usage | Max Memory |" -echo "|---------|--------------|-----------|-------------|-----------|------------|" +profile_command() { + local package=$1 + local tool=$2 + local action=$3 + local command=$4 -for package in "${packages[@]}"; do temp_file=$(mktemp) - gtime -f "$TIME_FORMAT" nargo prove --package="${package}" > "$temp_file" 2>&1 + gtime -f "$TIME_FORMAT" bash -c "$command" > "$temp_file" 2>&1 output=$(<"$temp_file") elapsed_time=$(echo "$output" | grep 'Elapsed Time' | awk '{print $3}') - user_time=$(echo "$output" | grep 'User Time' | awk '{print $3 " " $4}') system_time=$(echo "$output" | grep 'System Time' | awk '{print $3 " " $4}') cpu_usage=$(echo "$output" | grep 'CPU Usage' | awk '{print $3}') max_memory_kb=$(echo "$output" | grep 'Max Memory' | awk '{print $3}') max_memory=$(convert_memory "$max_memory_kb") - echo "| $package | $elapsed_time | $user_time | $system_time | $cpu_usage | $max_memory |" + echo "| $package | $tool | $action | $elapsed_time | $user_time | $system_time | $cpu_usage | $max_memory |" rm "$temp_file" +} + +yarn build + +echo "| Package | Tool | Action | Elapsed Time | User Time | System Time | CPU Usage | Max Memory |" +echo "|---------|------|--------|--------------|-----------|-------------|-----------|------------|" + +for package in "${packages[@]}"; do + profile_command "$package" "nargo" "prove" "nargo prove --package=${package}" + profile_command "$package" "nargo" "verify" "nargo verify --package=${package}" + profile_command "$package" "noir_js" "prove" "yarn start --package=${package} --action=prove" + profile_command "$package" "noir_js" "verify" "yarn start --package=${package} --action=verify" done diff --git a/src/cli.ts b/src/cli.ts new file mode 100644 index 0000000..5deec95 --- /dev/null +++ b/src/cli.ts @@ -0,0 +1,27 @@ +import yargs from "yargs"; +import { hideBin } from "yargs/helpers"; + +export enum Action { + Verify = "verify", + Prove = "prove", +} + +interface Arguments { + package: string; + action: Action; +} + +export const argv = yargs(hideBin(process.argv)) + .usage("Usage: $0 --package --action ") + .option("package", { + describe: "Noir package name", + type: "string", + demandOption: true, + }) + .option("action", { + describe: "Action to perform", + type: "string", + demandOption: true, + choices: Object.values(Action), + }) + .help().argv as unknown as Arguments; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..f1706ee --- /dev/null +++ b/src/index.ts @@ -0,0 +1,37 @@ +import { + readInputMap, + readProof, + readWitnessMap, + readCircuit, +} from "./utils.js"; +import assert from "assert"; +import os from "os"; +import { BarretenbergBackend } from "@noir-lang/backend_barretenberg"; +import { Noir } from "@noir-lang/noir_js"; +import { Action, argv } from "./cli.js"; + +const PROOF_PATH = `./proofs/${argv.package}.proof`; +const VERIFIER_MAP_PATH = `./circuits/${argv.package}/Verifier.toml`; +const PROVER_MAP_PATH = `./circuits/${argv.package}/Prover.toml`; + +const circuit = await readCircuit(argv.package); +const backend = new BarretenbergBackend(circuit, { + threads: os.cpus().length, +}); +const noir = new Noir(circuit, backend); + +if (argv.action == Action.Verify) { + let proof = await readProof(PROOF_PATH); + let witnessMap = await readWitnessMap(VERIFIER_MAP_PATH, circuit.abi); + const proofData = { + proof, + publicInputs: Array.from(witnessMap.values()), + }; + let isCorrect = await noir.verifyFinalProof(proofData); + assert(isCorrect, "Proof vefification failed"); +} else if (argv.action == Action.Prove) { + let inputMap = await readInputMap(PROVER_MAP_PATH); + await noir.generateFinalProof(inputMap); +} + +await noir.destroy(); diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..b5d99c0 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,55 @@ +import { CompiledCircuit, WitnessMap } from "@noir-lang/noir_js"; +import { promises as fs } from "fs"; +import toml from "toml"; + +import { Abi, abiEncode, type InputMap } from "@noir-lang/noirc_abi"; + +export async function readCircuit( + packageName: string, +): Promise { + const CIRCUIT_PATH = `./target/${packageName}.json`; + const data = await fs.readFile(CIRCUIT_PATH, "utf8"); + return JSON.parse(data); +} + +export async function readProof(path: string): Promise { + const proofHex = await fs.readFile(path, "utf-8"); + return encodeHexString("0x" + proofHex); +} + +export async function readWitnessMap( + path: string, + abi: Abi, +): Promise { + const inputMap = await readInputMap(path); + const witnessMap = abiEncode(abi, inputMap, inputMap["return"]); + return witnessMap; +} + +export async function readInputMap(path: string): Promise { + const verifierData = await fs.readFile(path, "utf-8"); + const inputMap = toml.parse(verifierData); + return inputMap; +} + +export function encodeHexString(value: string): Uint8Array { + if (!isHex(value)) { + throw new Error(`Invalid hexstring: ${value}`); + } + const arr = []; + for (let i = 2; i < value.length; i += 2) { + arr.push(parseInt(value.substr(i, 2), 16)); + } + return new Uint8Array(arr); +} + +export type Hex = `0x${string}`; + +export function isHex( + value: unknown, + { strict = true }: { strict?: boolean } = {}, +): value is Hex { + if (!value) return false; + if (typeof value !== "string") return false; + return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith("0x"); +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..50e7557 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "esModuleInterop": true, + "resolveJsonModule": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "outDir": "./dist", + }, +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..53b9953 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1358 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@aztec/bb.js@npm:0.17.0": + version: 0.17.0 + resolution: "@aztec/bb.js@npm:0.17.0" + dependencies: + comlink: "npm:^4.4.1" + commander: "npm:^10.0.1" + debug: "npm:^4.3.4" + tslib: "npm:^2.4.0" + bin: + bb.js: dest/node/main.js + checksum: ce57377cd0e06a0e6f0b364b522ac971cbb3d8b17db4f86e01115bcfde6824dc85e78d351fd2cf3e715cdd788bf18a67889b0097a7deb293bbaf6e6c4c91a3cb + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/aix-ppc64@npm:0.19.12" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-arm64@npm:0.19.12" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-arm@npm:0.19.12" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-x64@npm:0.19.12" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/darwin-arm64@npm:0.19.12" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/darwin-x64@npm:0.19.12" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/freebsd-arm64@npm:0.19.12" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/freebsd-x64@npm:0.19.12" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-arm64@npm:0.19.12" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-arm@npm:0.19.12" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-ia32@npm:0.19.12" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-loong64@npm:0.19.12" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-mips64el@npm:0.19.12" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-ppc64@npm:0.19.12" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-riscv64@npm:0.19.12" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-s390x@npm:0.19.12" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-x64@npm:0.19.12" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/netbsd-x64@npm:0.19.12" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/openbsd-x64@npm:0.19.12" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/sunos-x64@npm:0.19.12" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-arm64@npm:0.19.12" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-ia32@npm:0.19.12" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-x64@npm:0.19.12" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@noir-lang/acvm_js@npm:0.38.0-179c90d.nightly": + version: 0.38.0-179c90d.nightly + resolution: "@noir-lang/acvm_js@npm:0.38.0-179c90d.nightly" + checksum: 9e0e2f8c97348faa49383f97e1032d02a98be76c01e312b84403aac25581f1be108daee06d5a0020fd3d59366ae53e2f0837ddc1fcb68100900307977234a5cb + languageName: node + linkType: hard + +"@noir-lang/backend_barretenberg@npm:0.22.0-179c90d.nightly": + version: 0.22.0-179c90d.nightly + resolution: "@noir-lang/backend_barretenberg@npm:0.22.0-179c90d.nightly" + dependencies: + "@aztec/bb.js": "npm:0.17.0" + "@noir-lang/types": "npm:0.22.0-179c90d.nightly" + fflate: "npm:^0.8.0" + checksum: e61fd569a034f41062f8292008d9c2ecb0a27c4fd9d98e8d1a5658cd88e11a5405a972d35911f1b8d8ae86ca76604ca7c5875ce5d30b5057288ce4c5dc17004c + languageName: node + linkType: hard + +"@noir-lang/noir_js@npm:0.22.0-179c90d.nightly": + version: 0.22.0-179c90d.nightly + resolution: "@noir-lang/noir_js@npm:0.22.0-179c90d.nightly" + dependencies: + "@noir-lang/acvm_js": "npm:0.38.0-179c90d.nightly" + "@noir-lang/noirc_abi": "npm:0.22.0-179c90d.nightly" + "@noir-lang/types": "npm:0.22.0-179c90d.nightly" + checksum: 7b3f73db1c3c99f8dfaeba3895c089a6d544a3bff9b2a8e6c441a40c8cd5a83b662c2cdc9c70f98f667a1435d067cf014068cddde2e5e6e78e2ee66b8f760100 + languageName: node + linkType: hard + +"@noir-lang/noirc_abi@npm:0.22.0-179c90d.nightly": + version: 0.22.0-179c90d.nightly + resolution: "@noir-lang/noirc_abi@npm:0.22.0-179c90d.nightly" + checksum: ddcf9653c6ab29181df0d10fdafb72c40f07ec7c7ba41097005b1798d9e318efb846c2642adc249b839085449409aadda0731d90223064812ee4555255bba74d + languageName: node + linkType: hard + +"@noir-lang/noirc_abi@npm:^0.22.0-179c90d.nightly": + version: 0.22.0 + resolution: "@noir-lang/noirc_abi@npm:0.22.0" + checksum: cc8b32a588f07c7c023290498aecbc3fc239d657ba54720058332181b176d3048fe523d63ff66c4cebce933a791e9b14708433f8bfc6de7192a2f048bfe94c04 + languageName: node + linkType: hard + +"@noir-lang/types@npm:0.22.0-179c90d.nightly": + version: 0.22.0-179c90d.nightly + resolution: "@noir-lang/types@npm:0.22.0-179c90d.nightly" + dependencies: + "@noir-lang/noirc_abi": "npm:0.22.0-179c90d.nightly" + checksum: b4bc1b17b648c1502bc97472c1235f3a8c3e46c8ce46990ddd8969c5982be45d6759b566cbf8e89b47735a9cad83ac7997bb89790a7ff18dac64b4c376747816 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.0 + resolution: "@npmcli/agent@npm:2.2.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.1" + checksum: 7b89590598476dda88e79c473766b67c682aae6e0ab0213491daa6083dcc0c171f86b3868f5506f22c09aa5ea69ad7dfb78f4bf39a8dca375d89a42f408645b3 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.0 + resolution: "@npmcli/fs@npm:3.1.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@types/node@npm:^20.11.6": + version: 20.11.6 + resolution: "@types/node@npm:20.11.6" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 922bc1e78076bb79fd168902c80321b54487181e3be3386e183fc535d102d91c8902da25148eaec841410fab7fb872fd4a93ec9ac9299cedf0ebcbf16b442aa1 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.32": + version: 17.0.32 + resolution: "@types/yargs@npm:17.0.32" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" + dependencies: + debug: "npm:^4.3.4" + checksum: fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.2 + resolution: "cacache@npm:18.0.2" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 7992665305cc251a984f4fdbab1449d50e88c635bc43bf2785530c61d239c61b349e5734461baa461caaee65f040ab14e2d58e694f479c0810cffd181ba5eabc + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"comlink@npm:^4.4.1": + version: 4.4.1 + resolution: "comlink@npm:4.4.1" + checksum: a7a2004030768d13ec9373f780aa0edae57616095cb453ec8950d9f97e5fa654c0e84030ac87173b818843a04a5fa9ce9749d48b6bd453cfbfb5e6a9ebb6b2ff + languageName: node + linkType: hard + +"commander@npm:^10.0.1": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"esbuild@npm:~0.19.10": + version: 0.19.12 + resolution: "esbuild@npm:0.19.12" + dependencies: + "@esbuild/aix-ppc64": "npm:0.19.12" + "@esbuild/android-arm": "npm:0.19.12" + "@esbuild/android-arm64": "npm:0.19.12" + "@esbuild/android-x64": "npm:0.19.12" + "@esbuild/darwin-arm64": "npm:0.19.12" + "@esbuild/darwin-x64": "npm:0.19.12" + "@esbuild/freebsd-arm64": "npm:0.19.12" + "@esbuild/freebsd-x64": "npm:0.19.12" + "@esbuild/linux-arm": "npm:0.19.12" + "@esbuild/linux-arm64": "npm:0.19.12" + "@esbuild/linux-ia32": "npm:0.19.12" + "@esbuild/linux-loong64": "npm:0.19.12" + "@esbuild/linux-mips64el": "npm:0.19.12" + "@esbuild/linux-ppc64": "npm:0.19.12" + "@esbuild/linux-riscv64": "npm:0.19.12" + "@esbuild/linux-s390x": "npm:0.19.12" + "@esbuild/linux-x64": "npm:0.19.12" + "@esbuild/netbsd-x64": "npm:0.19.12" + "@esbuild/openbsd-x64": "npm:0.19.12" + "@esbuild/sunos-x64": "npm:0.19.12" + "@esbuild/win32-arm64": "npm:0.19.12" + "@esbuild/win32-ia32": "npm:0.19.12" + "@esbuild/win32-x64": "npm:0.19.12" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 0f2d21ffe24ebead64843f87c3aebe2e703a5ed9feb086a0728b24907fac2eb9923e4a79857d3df9059c915739bd7a870dd667972eae325c67f478b592b8582d + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.1.1 + resolution: "escalade@npm:3.1.1" + checksum: afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"fflate@npm:^0.8.0": + version: 0.8.1 + resolution: "fflate@npm:0.8.1" + checksum: c8e8e118738cdbbe7b38d0afebd9166539ce71bbc42cc78e497b58b173f7b7d2efc80f6ed77199283c3665e2e606e56a9f5019a32ceb4ffe5a6fa680dfd9648b + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-tsconfig@npm:^4.7.2": + version: 4.7.2 + resolution: "get-tsconfig@npm:4.7.2" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 169b2beababfbb16e8a0ae813ee59d3e14d4960231c816615161ab5be68ec07a394dce59695742ac84295e2efab8d9e89bcf3abaf5e253dfbec3496e01bb9a65 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^2.3.5" + minimatch: "npm:^9.0.1" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry: "npm:^1.10.1" + bin: + glob: dist/esm/bin.mjs + checksum: 13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "http-proxy-agent@npm:7.0.0" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: a11574ff39436cee3c7bc67f259444097b09474605846ddd8edf0bf4ad8644be8533db1aa463426e376865047d05dc22755e638632819317c0c2f1b2196657c8 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.2 + resolution: "https-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 7735eb90073db087e7e79312e3d97c8c04baf7ea7ca7b013382b6a45abbaa61b281041a98f4e13c8c80d88f843785bcc84ba189165b4b4087b1e3496ba656d77 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"ip@npm:^2.0.0": + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: 8d186cc5585f57372847ae29b6eba258c68862055e18a75cc4933327232cb5c107f89800ce29715d542eef2c254fbb68b382e780a7414f9ee7caf60b7a473958 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.1.0 + resolution: "lru-cache@npm:10.1.0" + checksum: 778bc8b2626daccd75f24c4b4d10632496e21ba064b126f526c626fbdbc5b28c472013fccd45d7646b9e1ef052444824854aed617b59cd570d01a8b7d651fc1e + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.0 + resolution: "make-fetch-happen@npm:13.0.0" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.4 + resolution: "minipass-fetch@npm:3.0.4" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": + version: 7.0.4 + resolution: "minipass@npm:7.0.4" + checksum: 6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.0.1 + resolution: "node-gyp@npm:10.0.1" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^3.0.0" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa + languageName: node + linkType: hard + +"noir-profiling@workspace:.": + version: 0.0.0-use.local + resolution: "noir-profiling@workspace:." + dependencies: + "@noir-lang/backend_barretenberg": "npm:0.22.0-179c90d.nightly" + "@noir-lang/noir_js": "npm:0.22.0-179c90d.nightly" + "@noir-lang/noirc_abi": "npm:^0.22.0-179c90d.nightly" + "@types/node": "npm:^20.11.6" + "@types/yargs": "npm:^17.0.32" + prettier: "npm:^3.2.4" + toml: "npm:^3.0.0" + tsx: "npm:^4.7.0" + typescript: "npm:^5.3.3" + yargs: "npm:^17.7.2" + languageName: unknown + linkType: soft + +"nopt@npm:^7.0.0": + version: 7.2.0 + resolution: "nopt@npm:7.2.0" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: "npm:^9.1.1 || ^10.0.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e + languageName: node + linkType: hard + +"prettier@npm:^3.2.4": + version: 3.2.4 + resolution: "prettier@npm:3.2.4" + bin: + prettier: bin/prettier.cjs + checksum: 88dfeb78ac6096522c9a5b81f1413d875f568420d9bb6a5e5103527912519b993f2bcdcac311fcff5718d5869671d44e4f85827d3626f3a6ce32b9abc65d88e0 + languageName: node + linkType: hard + +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"semver@npm:^7.3.5": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.1": + version: 8.0.2 + resolution: "socks-proxy-agent@npm:8.0.2" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:^4.3.4" + socks: "npm:^2.7.1" + checksum: a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 + languageName: node + linkType: hard + +"socks@npm:^2.7.1": + version: 2.7.1 + resolution: "socks@npm:2.7.1" + dependencies: + ip: "npm:^2.0.0" + smart-buffer: "npm:^4.2.0" + checksum: 43f69dbc9f34fc8220bc51c6eea1c39715ab3cfdb115d6e3285f6c7d1a603c5c75655668a5bbc11e3c7e2c99d60321fb8d7ab6f38cda6a215fadd0d6d0b52130 + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" + dependencies: + minipass: "npm:^7.0.3" + checksum: b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.2.0 + resolution: "tar@npm:6.2.0" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 02ca064a1a6b4521fef88c07d389ac0936730091f8c02d30ea60d472e0378768e870769ab9e986d87807bfee5654359cf29ff4372746cc65e30cbddc352660d8 + languageName: node + linkType: hard + +"toml@npm:^3.0.0": + version: 3.0.0 + resolution: "toml@npm:3.0.0" + checksum: 8d7ed3e700ca602e5419fca343e1c595eb7aa177745141f0761a5b20874b58ee5c878cd045c408da9d130cb2b611c639912210ba96ce2f78e443569aa8060c18 + languageName: node + linkType: hard + +"tslib@npm:^2.4.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb + languageName: node + linkType: hard + +"tsx@npm:^4.7.0": + version: 4.7.0 + resolution: "tsx@npm:4.7.0" + dependencies: + esbuild: "npm:~0.19.10" + fsevents: "npm:~2.3.3" + get-tsconfig: "npm:^4.7.2" + dependenciesMeta: + fsevents: + optional: true + bin: + tsx: dist/cli.mjs + checksum: ac522a3017aedea31ff468dc161b6408d16a273bd23556716b550d1c08395d7e2568009c8927131481f0a8980ddda84999ac4bc2c00659b08a19b45bec31ef23 + languageName: node + linkType: hard + +"typescript@npm:^5.3.3": + version: 5.3.3 + resolution: "typescript@npm:5.3.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.3.3#optional!builtin": + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 + languageName: node + linkType: hard + +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard