diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index b87a6db..65a3e43 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -2,5 +2,4 @@ ARG VARIANT=18 FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:${VARIANT} RUN apt-get update RUN apt-get -y install --no-install-recommends zsh -RUN apt-get -y install binaryen -RUN apt-get -y install build-essential cmake +RUN apt-get -y install binaryen build-essential cmake diff --git a/libs/as-sdk-integration-tests/README.md b/libs/as-sdk-integration-tests/README.md new file mode 100644 index 0000000..2aad991 --- /dev/null +++ b/libs/as-sdk-integration-tests/README.md @@ -0,0 +1,3 @@ +# AssemblyScript Integration Tests + +This project is for testing the SDK together with the VM project. This is used internally to validate if the functions act like they are supposed to diff --git a/libs/as-sdk-integration-tests/assembly/index.ts b/libs/as-sdk-integration-tests/assembly/index.ts index f3cb9f8..7e8c94e 100644 --- a/libs/as-sdk-integration-tests/assembly/index.ts +++ b/libs/as-sdk-integration-tests/assembly/index.ts @@ -1,6 +1,5 @@ -// The entry file of your WebAssembly module. - import { httpFetch, Process } from '../../as-sdk/assembly/index'; +import { testInvalidUint8JsonArray, testValidUint8JsonArray } from './json-utils-test'; const args = Process.args()[0]; @@ -8,6 +7,10 @@ if (args === 'testHttpRejection') { testHttpRejection(); } else if (args === 'testHttpSuccess') { testHttpSuccess(); +} else if (args === 'testValidUint8JsonArray') { + testValidUint8JsonArray(); +} else if (args === 'testInvalidUint8JsonArray') { + testInvalidUint8JsonArray(); } export function testHttpRejection(): void { @@ -15,7 +18,7 @@ export function testHttpRejection(): void { const rejected = response.rejected; if (rejected !== null) { - const msg = String.UTF8.encode('ok'); + const msg = String.UTF8.encode('rejected'); const buffer = Uint8Array.wrap(msg); Process.exit_with_result(0, buffer); diff --git a/libs/as-sdk-integration-tests/assembly/json-utils-test.ts b/libs/as-sdk-integration-tests/assembly/json-utils-test.ts new file mode 100644 index 0000000..f7cdff2 --- /dev/null +++ b/libs/as-sdk-integration-tests/assembly/json-utils-test.ts @@ -0,0 +1,26 @@ +import { jsonArrToUint8Array, JSON, testutils } from '../../as-sdk/assembly/index'; + +export function testValidUint8JsonArray(): void { + const raw: string = "[0, 23, 254, 88]"; + const json = JSON.parse(raw); + const result = jsonArrToUint8Array(json); + + const expected = new Uint8Array(4); + expected.set([0, 23, 254, 88]); + + testutils.assert(result.byteLength === expected.byteLength, "bytelength is not equal"); + testutils.assert( + String.UTF8.decode(result.buffer) === String.UTF8.decode(expected.buffer), + 'buffers are not equal' + ); + + testutils.ok(); +} + +export function testInvalidUint8JsonArray(): void { + const raw: string = '[0, 23, 299, 88]'; + const json = JSON.parse(raw); + jsonArrToUint8Array(json); + + testutils.error("Test should fail"); +} diff --git a/libs/as-sdk-integration-tests/project.json b/libs/as-sdk-integration-tests/project.json index ffb713c..9a03368 100644 --- a/libs/as-sdk-integration-tests/project.json +++ b/libs/as-sdk-integration-tests/project.json @@ -18,6 +18,7 @@ "jestConfig": "libs/as-sdk-integration-tests/jest.config.ts", "passWithNoTests": true }, + "dependsOn": [{ "target": "build" }], "configurations": { "ci": { "ci": true, diff --git a/libs/as-sdk-integration-tests/src/http.test.ts b/libs/as-sdk-integration-tests/src/http.test.ts index fe9004e..c85b012 100644 --- a/libs/as-sdk-integration-tests/src/http.test.ts +++ b/libs/as-sdk-integration-tests/src/http.test.ts @@ -21,7 +21,7 @@ describe('Http', () => { }); expect(result.exitCode).toBe(0); - expect(result.result).toEqual(new TextEncoder().encode("ok")); + expect(result.result).toEqual(new TextEncoder().encode("rejected")); }); it('Test SDK HTTP Success', async () => { diff --git a/libs/as-sdk-integration-tests/src/jsonutils.test.ts b/libs/as-sdk-integration-tests/src/jsonutils.test.ts new file mode 100644 index 0000000..29f22a7 --- /dev/null +++ b/libs/as-sdk-integration-tests/src/jsonutils.test.ts @@ -0,0 +1,36 @@ +import { readFile } from "fs/promises"; +import { callVm } from "../../../dist/libs/vm/src"; + +describe('json-utils', () => { + it('should handle valid u8 json arrays', async () => { + const wasmBinary = await readFile( + 'dist/libs/as-sdk-integration-tests/debug.wasm' + ); + const result = await callVm({ + args: ['testValidUint8JsonArray'], + envs: {}, + binary: new Uint8Array(wasmBinary), + }); + + console.log(result); + + expect(result.resultAsString).toEqual('ok'); + expect(result.exitCode).toBe(0); + }); + + it('should error on invalid u8 json arrays', async () => { + const wasmBinary = await readFile( + 'dist/libs/as-sdk-integration-tests/debug.wasm' + ); + const result = await callVm({ + args: ['testInvalidUint8JsonArray'], + envs: {}, + binary: new Uint8Array(wasmBinary), + }); + + console.log(result); + + expect(result.stderr).toContain('abort: Invalid u8 299'); + expect(result.exitCode).toBe(255); + }); +}); diff --git a/libs/as-sdk/README.md b/libs/as-sdk/README.md new file mode 100644 index 0000000..16c1d64 --- /dev/null +++ b/libs/as-sdk/README.md @@ -0,0 +1,3 @@ +# AssemblyScript SDK + +SDK for creating Data Requests on the SEDA chain diff --git a/libs/as-sdk/assembly/__test__/as-pect.d.ts b/libs/as-sdk/assembly/__test__/as-pect.d.ts deleted file mode 100644 index 6101ea2..0000000 --- a/libs/as-sdk/assembly/__test__/as-pect.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/libs/as-sdk/assembly/__test__/http.spec.ts b/libs/as-sdk/assembly/__test__/http.spec.ts deleted file mode 100644 index fddf344..0000000 --- a/libs/as-sdk/assembly/__test__/http.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { httpFetch, HttpFetchOptions } from '../http'; - -describe('http', () => { - it('do a http fetch', () => { - const options = new HttpFetchOptions(); - const headers = new Map(); - - headers.set('Content-Type', 'application/json'); - options.headers = headers; - - const result = httpFetch('http://example.com', options); - - expect(result.toString()).toBe("{}"); - }); -}); diff --git a/libs/as-sdk/assembly/index.ts b/libs/as-sdk/assembly/index.ts index 416b75e..cbca33e 100644 --- a/libs/as-sdk/assembly/index.ts +++ b/libs/as-sdk/assembly/index.ts @@ -1,8 +1,9 @@ -// The entry file of your WebAssembly module. import Process from './process'; +import * as testutils from './test-utils'; - +export { JSON, JSONDecoder, JSONEncoder, DecoderState, JSONHandler, ThrowingJSONHandler } from '../../../node_modules/assemblyscript-json/assembly/index'; export { httpFetch, HttpFetchMethod, HttpFetchOptions, HttpResponse } from './http'; export { PromiseStatus } from './promise'; -export { Process }; +export { Process, testutils }; +export { jsonArrToUint8Array } from './json-utils'; diff --git a/libs/as-sdk/assembly/json-utils.ts b/libs/as-sdk/assembly/json-utils.ts index 30bba10..c44aee4 100644 --- a/libs/as-sdk/assembly/json-utils.ts +++ b/libs/as-sdk/assembly/json-utils.ts @@ -6,6 +6,11 @@ export function jsonArrToUint8Array(array: JSON.Arr): Uint8Array { for (let i = 0; i < innerArrayValue.length; i++) { const element = innerArrayValue[i]; + + if (element.valueOf() > i64(U8.MAX_VALUE) || element.valueOf() < i64(U8.MIN_VALUE)) { + throw new Error(`Invalid u8 ${element.valueOf()}`); + } + bytes.push(u8(element.valueOf())); } diff --git a/libs/as-sdk/assembly/process.ts b/libs/as-sdk/assembly/process.ts index 68fead5..db21b33 100644 --- a/libs/as-sdk/assembly/process.ts +++ b/libs/as-sdk/assembly/process.ts @@ -6,6 +6,13 @@ export default class Process { return CommandLine.all; } + static exit_with_message(code: u8, message: string): void { + const msg = String.UTF8.encode(message); + const buffer = Uint8Array.wrap(msg); + + Process.exit_with_result(code, buffer); + } + static exit_with_result(code: u8, result: Uint8Array): void { const buffer = result.buffer; const bufferPtr = changetype(buffer); diff --git a/libs/as-sdk/assembly/promise.ts b/libs/as-sdk/assembly/promise.ts index 7d319da..4d80497 100644 --- a/libs/as-sdk/assembly/promise.ts +++ b/libs/as-sdk/assembly/promise.ts @@ -11,14 +11,6 @@ export class PromiseStatus { public rejected: R | null ) {} - isFulfilled(): bool { - return this.fulfilled !== null; - } - - isRejected(): bool { - return this.rejected !== null; - } - static fromStr, R extends FromBuffer>(promiseStatus: string, fulfilled: F, rejected: R): PromiseStatus { const value = JSON.parse(promiseStatus); let fulfilledResult: F | null = null; diff --git a/libs/as-sdk/assembly/test-utils.ts b/libs/as-sdk/assembly/test-utils.ts new file mode 100644 index 0000000..cfaccad --- /dev/null +++ b/libs/as-sdk/assembly/test-utils.ts @@ -0,0 +1,18 @@ +import Process from './process'; + +@inline +export function assert(expected: bool, message: string): void { + if (!expected) { + Process.exit_with_message(1, message); + } +} + +@inline +export function ok(message: string = "ok"): void { + Process.exit_with_message(0, message); +} + +@inline +export function error(message: string = "error"): void { + Process.exit_with_message(1, message); +} diff --git a/libs/vm/README.md b/libs/vm/README.md new file mode 100644 index 0000000..ba4664c --- /dev/null +++ b/libs/vm/README.md @@ -0,0 +1,3 @@ +# SEDA VM + +Virtual Machine used for testing your Data Request using JavaScript diff --git a/libs/vm/src/vm.test.ts b/libs/vm/src/vm.test.ts index 2b9b22a..a8a2395 100644 --- a/libs/vm/src/vm.test.ts +++ b/libs/vm/src/vm.test.ts @@ -35,7 +35,7 @@ describe("vm", () => { binary: new Uint8Array(wasmBinary), }); - expect(result).toEqual({ exitCode: 0, stderr: '', stdout: 'hello world\n', result: new Uint8Array() }); + expect(result).toEqual({ exitCode: 0, stderr: '', stdout: 'hello world\n', result: new Uint8Array(), resultAsString: '' }); }); it("should exit when an invalid WASM binary is given", async () => { @@ -45,7 +45,7 @@ describe("vm", () => { binary: new Uint8Array([0, 97, 115, 109]), }); - expect(result).toEqual({ exitCode: 1, stderr: 'CompileError: WebAssembly.compile(): expected 4 bytes, fell off end @+4', stdout: '', result: new Uint8Array() }); + expect(result).toEqual({ exitCode: 1, stderr: 'CompileError: WebAssembly.compile(): expected 4 bytes, fell off end @+4', stdout: '', result: new Uint8Array(), resultAsString: '' }); }); it('should be able to call the given adapter', async () => { diff --git a/libs/vm/src/vm.ts b/libs/vm/src/vm.ts index b98c351..a63b539 100644 --- a/libs/vm/src/vm.ts +++ b/libs/vm/src/vm.ts @@ -12,6 +12,7 @@ export interface VmResult { stderr: string; exitCode: number; result?: Uint8Array; + resultAsString?: string; } export async function executeVm(callData: VmCallData, notifierBuffer: SharedArrayBuffer): Promise { @@ -40,6 +41,7 @@ export async function executeVm(callData: VmCallData, notifierBuffer: SharedArra stderr: wasi.getStderrString(), stdout: wasi.getStdoutString(), result: vmImports.result, + resultAsString: new TextDecoder().decode(vmImports.result), } } catch (err) { console.error(` @@ -56,6 +58,7 @@ export async function executeVm(callData: VmCallData, notifierBuffer: SharedArra stderr: stderr !== '' ? stderr : (err + ''), stdout: wasi.getStdoutString(), result: new Uint8Array(), + resultAsString: '', }; } } diff --git a/libs/vm/src/worker-host-communication.ts b/libs/vm/src/worker-host-communication.ts index 7662d98..1036cb7 100644 --- a/libs/vm/src/worker-host-communication.ts +++ b/libs/vm/src/worker-host-communication.ts @@ -57,6 +57,10 @@ export class HostToWorker { this.actionResult = PromiseStatus.rejected(new EmptyBuffer); } + if (typeof this.actionResult === 'undefined') { + throw Error(`Result was undefined while reading. Action was: ${action}`); + } + if (this.actionResult.length > MAX_I32_VALUE) { throw Error(`Value ${this.actionResult.length} exceeds max i32 (${MAX_I32_VALUE})`); } diff --git a/package-lock.json b/package-lock.json index a84ab3a..e3a0192 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,6 @@ "license": "MIT", "dependencies": { "@wasmer/wasi": "^1.2.2", - "@webassemblyjs/cli": "^1.11.6", - "@webassemblyjs/wasm-strip": "^1.8.1", "as-wasi": "^0.6.0", "assemblyscript-json": "^1.1.0", "tslib": "^2.3.0" @@ -4629,367 +4627,6 @@ "resolved": "https://registry.npmjs.org/@wasmer/wasi/-/wasi-1.2.2.tgz", "integrity": "sha512-39ZB3gefOVhBmkhf7Ta79RRSV/emIV8LhdvcWhP/MOZEjMmtzoZWMzt7phdKj8CUXOze+AwbvGK60lKaKldn1w==" }, - "node_modules/@webassemblyjs/ast": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.1.tgz", - "integrity": "sha512-gDrC14Ae2b4gP9vYdCzx6ytY4LuYoH3I0h0QzU9RPifGPgjXz8F3s5g9632P7Wf39vQQg6XQ0Bfv29rc5RoTmw==", - "dependencies": { - "@webassemblyjs/helper-module-context": "1.8.1", - "@webassemblyjs/helper-wasm-bytecode": "1.8.1", - "@webassemblyjs/wast-parser": "1.8.1" - } - }, - "node_modules/@webassemblyjs/cli": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/cli/-/cli-1.11.6.tgz", - "integrity": "sha512-bHFJGmslDxLFMC3tdh/U/qAR8w4znDrySVWlFr3nql0jJRY+yAEqE5UriZWFlSfZqlw8JD5XmRgyqPSq+v79Ig==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6", - "webassemblyjs": "1.11.6" - }, - "bin": { - "get-producer-section": "lib/get-producer-section.js", - "wasm2wast": "lib/wasm2wast.js", - "wasmast": "lib/wasmast.js", - "wasmdump": "lib/wasmdump.js", - "wasmrun": "lib/wasmrun.js", - "wast-to-wasm-semantics": "lib/wast-to-wasm-semantics.js", - "wastast": "lib/wastast.js" - } - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.11.6.tgz", - "integrity": "sha512-52QsMGFuYEC60xh8zvqxICLYuSkNxIhEXoiAvvFkmd8FtUAFSF4H7vaUhJiv5Qvt+lMvFPDJV9Fn2DKjxL6rUQ==", - "dependencies": { - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/helper-fsm": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.11.6.tgz", - "integrity": "sha512-W628D2rPrc9fSsBZw3DJcyQRakZvKPOON6vRUYuDe8nNUOPnFUtZ6duhKHbkMcZPOB/m5KC1QIZCs2Dujoxd2g==" - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/wast-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.11.6.tgz", - "integrity": "sha512-ZiXcpiCi1RKnsWKyrbcG7WyEr6HOmgUnTSTNhoK1PuNZBvcK3RFqr5ekXY8N7/xPF8tYG4+2QwBbDOttGx4Fig==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-code-frame": "1.11.6", - "@webassemblyjs/helper-fsm": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/cli/node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/cli/node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.1.tgz", - "integrity": "sha512-g50x4xV7o2b39pB+uppF3kibFXhb9Dl4Jj3fj18eqWPGBgabreIwQmw3B5Uc6Y7Ec7ZZJ8TrUe79swN3iBaPDQ==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.1.tgz", - "integrity": "sha512-79RidFwQOl8vG+Wv1uQWfCw4JQO5XR8iQcNGKLum3oPsSG8jkuEK5ILT6NxT3MNOa+xwSd3d+YqVFB1V0/W7/w==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.1.tgz", - "integrity": "sha512-ex3cnmE6V0JfCBIesxF70vsPvh/QNOfaIsL5N0lkiJjVDl65YjH/WZxLe0nTuIuvVQhZH7DdRzUm0G9g12YACg==" - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.1.tgz", - "integrity": "sha512-vSs2ObU/pbPXrvMqfpEUnvTcvlhwHT3ochBdekn+cv5zYR1wtmAIj+UXrmzbkBQYff/yTrZgaeqkFaT3fLLOrA==", - "dependencies": { - "@webassemblyjs/wast-printer": "1.8.1" - } - }, - "node_modules/@webassemblyjs/helper-compiler": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-compiler/-/helper-compiler-1.11.6.tgz", - "integrity": "sha512-1g9q61BI9yusiKjOKpRnLZqChtNhFl3OFRISRptrnFaVFobKXox1w/GPW1KOKFWHOwAKfRw7/913BXw/GvsvEA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-flatten-ast": "1.11.6" - } - }, - "node_modules/@webassemblyjs/helper-compiler/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/helper-compiler/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" - }, - "node_modules/@webassemblyjs/helper-flatten-ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-flatten-ast/-/helper-flatten-ast-1.11.6.tgz", - "integrity": "sha512-LAetQwY0yZW0XYtv5q5/8clCDPZrhN375gcjDkrmBSp9EZFmas7ddIeoHfgjyfDMzteDW/7O0xccZMh9BzKhbA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6" - } - }, - "node_modules/@webassemblyjs/helper-flatten-ast/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/helper-flatten-ast/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.1.tgz", - "integrity": "sha512-WeXD3ZkKi2wpAXqPW+COawoNb0Vcu3OGoaQv8/cL3VpTfGO85ZN30h/6CjUHLISGZtpZxQu3D7AuJmI/rlEqAw==" - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.1.tgz", - "integrity": "sha512-657xpRy6lptA7oCIgOKQAHElsgAXliqutMPLjoEL2T5Uyp1cIDUH7axmphu7bb5U+ZUpwApnZHvdvyJYGDOxsQ==" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" - }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" - }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.1.tgz", - "integrity": "sha512-MDdqmxj6ea1qfHBLKVHaF2+IyWLQtw8+bvRaeZc4MtcO7dNBz/2cZZ/GCFN9kGTJVvhe37tkeCi2JAB3evoU2w==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.1.tgz", - "integrity": "sha512-FlNdlARr+mcP8XL+wg6bXqgC+0ZwnltqXExw63e9cgK84bAdTwKnfX9k6CKg8qvK5e/d9dUmk0dkVrkyEpKx5w==", - "dependencies": { - "@webassemblyjs/ast": "1.8.1", - "@webassemblyjs/helper-buffer": "1.8.1", - "@webassemblyjs/helper-wasm-bytecode": "1.8.1", - "@webassemblyjs/wasm-gen": "1.8.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.1.tgz", - "integrity": "sha512-Pq3IQR3uay+rFC0qIgg6xvD+uu0a9QEWDCRihHuU9wmOBFW3Lda/ObnO0HjC7XUJ8A9h4xExaa1w5TsSk+DxIQ==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.1.tgz", - "integrity": "sha512-Ir8M3hgTzFLEOKmMMH44neM6sLESfEoSCjNsOInETxbSpPY1MKOsFSAxCUaeXhjtLQfflCCdjgSsU+2veP6SGw==", - "dependencies": { - "@xtuc/long": "4.2.1" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.1.tgz", - "integrity": "sha512-I5QQEb5ajQ99ARiyDrVQM/2nvyFFG0tF1TX2Ql7dOjw5GRT6P4FF+gRk7OeAUtI1CLyffUNWbIvpJz13crGSxw==" - }, - "node_modules/@webassemblyjs/validation": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.11.6.tgz", - "integrity": "sha512-odBuDXVvd8vlbdfosGJjuN/JgA3q5YoN2L5EXOGuVcv5RNrnR0U+e325z+QA5ZQeDRc49KgnrwK+DBq4xH6QaA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6" - } - }, - "node_modules/@webassemblyjs/validation/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/validation/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.1.tgz", - "integrity": "sha512-xOgoGf6rR6gHlhlNlU0EfMIgDAjbLCO2cNdEIKdGfKj2/fc02pbAyS3gYJ6EWAzSnL/XpAOf3Q/trp/EUeikug==", - "dependencies": { - "@webassemblyjs/ast": "1.8.1", - "@webassemblyjs/helper-wasm-bytecode": "1.8.1", - "@webassemblyjs/ieee754": "1.8.1", - "@webassemblyjs/leb128": "1.8.1", - "@webassemblyjs/utf8": "1.8.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.1.tgz", - "integrity": "sha512-k63WJZdIjTQgZt+cn8rsIEvW0aNKttGip6ygTE/ZPXKZsMTk0G5xyw+MQxphbvt/GYbNu5DdxGN/7WGybO95TA==", - "dependencies": { - "@webassemblyjs/ast": "1.8.1", - "@webassemblyjs/helper-api-error": "1.8.1", - "@webassemblyjs/helper-wasm-bytecode": "1.8.1", - "@webassemblyjs/ieee754": "1.8.1", - "@webassemblyjs/leb128": "1.8.1", - "@webassemblyjs/utf8": "1.8.1" - } - }, - "node_modules/@webassemblyjs/wasm-strip": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-strip/-/wasm-strip-1.8.1.tgz", - "integrity": "sha512-yDFZagGY6+M4EwAvHhZa3AVuz+LLr5iodcIIKk2rY8WT9VI+9rfzHR5aLCpVOkHrdCjBDnxXnnZqDkNbP28UXA==", - "dependencies": { - "@webassemblyjs/helper-wasm-section": "1.8.1", - "@webassemblyjs/wasm-parser": "1.8.1" - }, - "bin": { - "wasm-strip": "lib/cli.js" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.1.tgz", - "integrity": "sha512-iXjhXGhZeZIAnWkHD2G4ZOx8x5GYux5dwHuQL/AU8jb2H3BxolxVvNdpDmBTQPKDAgAAEeCFDnftNf4xNR9KMQ==", - "dependencies": { - "@webassemblyjs/ast": "1.8.1", - "@webassemblyjs/floating-point-hex-parser": "1.8.1", - "@webassemblyjs/helper-api-error": "1.8.1", - "@webassemblyjs/helper-code-frame": "1.8.1", - "@webassemblyjs/helper-fsm": "1.8.1", - "@xtuc/long": "4.2.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.1.tgz", - "integrity": "sha512-YYRBpDCBLeYJBO+sVapLRkEE/+wrjv1O03IEybkqyls3sCZqhu3ZXjJwMSMCgFEyYP2MrdZvqL/dz2RBnULTbA==", - "dependencies": { - "@webassemblyjs/ast": "1.8.1", - "@webassemblyjs/wast-parser": "1.8.1", - "@xtuc/long": "4.2.1" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "node_modules/@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==" - }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -17012,117 +16649,6 @@ "node": ">= 8" } }, - "node_modules/webassemblyjs": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.11.6.tgz", - "integrity": "sha512-5LaN5OxQVpYyxRr3NJ9KU/y/ijal/5Zr6Mh98+k2sJmzHopvgwNUaShxdRNje3YFS+q9aReQ2orx73nia7OOKw==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-compiler": "1.11.6", - "@webassemblyjs/validation": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-parser": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.11.6.tgz", - "integrity": "sha512-52QsMGFuYEC60xh8zvqxICLYuSkNxIhEXoiAvvFkmd8FtUAFSF4H7vaUhJiv5Qvt+lMvFPDJV9Fn2DKjxL6rUQ==", - "dependencies": { - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/helper-fsm": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.11.6.tgz", - "integrity": "sha512-W628D2rPrc9fSsBZw3DJcyQRakZvKPOON6vRUYuDe8nNUOPnFUtZ6duhKHbkMcZPOB/m5KC1QIZCs2Dujoxd2g==" - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/wast-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.11.6.tgz", - "integrity": "sha512-ZiXcpiCi1RKnsWKyrbcG7WyEr6HOmgUnTSTNhoK1PuNZBvcK3RFqr5ekXY8N7/xPF8tYG4+2QwBbDOttGx4Fig==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-code-frame": "1.11.6", - "@webassemblyjs/helper-fsm": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/webassemblyjs/node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/webassemblyjs/node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",