@wovin/connect-ucan-store-proxy 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-4JTLYRW4.min.js → chunk-4WKM2MPH.min.js} +3 -3
- package/dist/chunk-4WKM2MPH.min.js.map +1 -0
- package/dist/{chunk-DVH3GIBT.min.js → chunk-R5T56SIO.min.js} +2 -2
- package/dist/{chunk-DVH3GIBT.min.js.map → chunk-R5T56SIO.min.js.map} +1 -1
- package/dist/chunk-U6LK5UQW.min.js +2 -0
- package/dist/chunk-U6LK5UQW.min.js.map +1 -0
- package/dist/{chunk-ZGM6NJHV.min.js → chunk-ULU4ARX5.min.js} +2 -2
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/retrieve.min.js +1 -1
- package/dist/store.min.js +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.min.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-4JTLYRW4.min.js.map +0 -1
- package/dist/chunk-DFTNS77W.min.js +0 -2
- package/dist/chunk-DFTNS77W.min.js.map +0 -1
- /package/dist/{chunk-ZGM6NJHV.min.js.map → chunk-ULU4ARX5.min.js.map} +0 -0
package/dist/index.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/.pnpm/base-x@4.0.0/node_modules/base-x/src/index.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/utils.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/utf8.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/rfc4648.js","../../../../node_modules/.pnpm/multiformats@13.0.1/node_modules/multiformats/src/hashes/sha2-browser.ts","../../../../node_modules/.pnpm/multiformats@13.0.1/node_modules/multiformats/src/codecs/raw.ts","../../../../node_modules/.pnpm/did-resolver@4.1.0/node_modules/did-resolver/src/resolver.ts","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/varint.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/base-x.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/ec-compression.js","../../../../node_modules/.pnpm/iso-did@1.6.0/node_modules/iso-did/src/common.js","../../../../node_modules/.pnpm/iso-did@1.6.0/node_modules/iso-did/src/core.js","../../../../node_modules/.pnpm/iso-did@1.6.0/node_modules/iso-did/src/key.js","../../../../node_modules/.pnpm/iso-did@1.6.0/node_modules/iso-did/src/index.js","../../../../node_modules/.pnpm/@fission-codes+ucan@0.2.0/node_modules/@fission-codes/ucan/src/jwt.js","../../../../node_modules/.pnpm/@fission-codes+ucan@0.2.0/node_modules/@fission-codes/ucan/src/index.js","../../../../node_modules/.pnpm/@noble+ed25519@2.0.0/node_modules/@noble/ed25519/index.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/crypto-browser.js","../../../../node_modules/.pnpm/iso-signatures@0.3.2/node_modules/iso-signatures/src/utils.js","../../../../node_modules/.pnpm/iso-signatures@0.3.2/node_modules/iso-signatures/src/signers/eddsa.js","../src/index.ts"],"sourcesContent":["'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","/**\n * Utilities to work with TypedArrays, BufferSource, and other bytes sources.\n *\n * @module\n */\n\nconst typedArrayTypeNames = /** @type {const} */ ([\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array',\n])\n\n// eslint-disable-next-line unicorn/prefer-set-has\nconst objectTypeNames = /** @type {const} */ ([\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Blob',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'WeakRef',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'FormData',\n 'URLSearchParams',\n 'HTMLElement',\n 'NaN',\n ...typedArrayTypeNames,\n])\n\n/**\n * @typedef {typeof typedArrayTypeNames[number]} TypedArrayTypeName\n * @typedef {typeof objectTypeNames[number]} ObjectTypeName\n */\n\n/**\n * @param {unknown} name\n * @returns {name is TypedArrayTypeName}\n */\nfunction isTypedArrayName(name) {\n return typedArrayTypeNames.includes(/** @type {TypedArrayTypeName} */ (name))\n}\n\n/**\n * @param {unknown} name\n * @returns {name is ObjectTypeName}\n */\nfunction isObjectTypeName(name) {\n return objectTypeNames.includes(/** @type {ObjectTypeName} */ (name))\n}\n\n/**\n * @param {unknown} value\n * @returns {ObjectTypeName | undefined}\n */\nexport function getObjectType(value) {\n const objectTypeName = toString.call(value).slice(8, -1)\n\n if (isObjectTypeName(objectTypeName)) {\n return objectTypeName\n }\n}\n\n/**\n * @template T\n * @param {ObjectTypeName} type\n */\nexport function isObjectOfType(type) {\n /**\n * @param {unknown} value\n * @returns {value is T}\n */\n function is(value) {\n return getObjectType(value) === type\n }\n return is\n}\n\n/**\n * Check if value is TypeArray\n *\n * @param {unknown} value\n * @returns {value is import(\"./types\").TypedArray}\n */\nexport function isTypedArray(value) {\n return isTypedArrayName(getObjectType(value))\n}\n\n/**\n * @type {(value: unknown) => value is ArrayBuffer}\n */\nexport const isArrayBuffer = isObjectOfType('ArrayBuffer')\n\n/**\n * Check if value is BufferSource\n *\n * @param {unknown} value\n * @returns {value is BufferSource}\n */\nexport function isBufferSource(value) {\n return isTypedArray(value) || isArrayBuffer(value)\n}\n\n/**\n * Cast typedarray to Uint8Array\n *\n * @param {BufferSource} arr\n */\nexport function u8(arr) {\n return ArrayBuffer.isView(arr)\n ? new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength)\n : new Uint8Array(arr)\n}\n\n/**\n * Cast TypedArray to Buffer\n *\n * @param {BufferSource | string} arr\n * @param {BufferEncoding} [encoding]\n */\nexport function buf(arr, encoding = 'utf8') {\n if (ArrayBuffer.isView(arr)) {\n return globalThis.Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength)\n }\n\n if (typeof arr === 'string') {\n return globalThis.Buffer.from(arr, encoding)\n }\n\n return globalThis.Buffer.from(arr)\n}\n\n/**\n * Returns a new Uint8Array created by concatenating the passed ArrayLikes\n *\n * @param {Array<ArrayLike<number>>} arrays\n * @param {number} [length]\n */\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0)\n }\n\n const output = new Uint8Array(length)\n let offset = 0\n\n for (const arr of arrays) {\n output.set(arr, offset)\n offset += arr.length\n }\n\n return output\n}\n\n/**\n * Checks if two Uint8Arrays are equal\n *\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nexport function equals(aa, bb) {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n","/**\n * UTF-8 codec\n *\n * @module\n */\nimport { buf, isBufferSource, u8 } from './utils.js'\n\nconst textDecoder = new TextDecoder()\nconst textEncoder = new TextEncoder()\n/**\n * @type {import(\"./types\").Codec}\n */\nexport const utf8 = {\n encode(input) {\n if (typeof input === 'string') {\n return input\n }\n if (globalThis.Buffer) {\n return buf(input).toString('utf8')\n }\n\n return textDecoder.decode(input)\n },\n decode(input) {\n if (isBufferSource(input)) {\n return u8(input)\n }\n if (globalThis.Buffer) {\n return u8(buf(input))\n }\n return textEncoder.encode(input)\n },\n}\n","/**\n * RFC4648 codec factory and predefines `base2`, `base8`, `hex`, `base16`, `base32`, `base32hex`, `base64` and `base64url` alphabets and {@link Codec | Codecs}.\n *\n * @module\n */\n\n/* eslint-disable unicorn/prefer-math-trunc */\n/* eslint-disable unicorn/no-for-loop */\n/** @typedef {import('./types').Codec} Codec */\n\nimport { utf8 } from './utf8.js'\nimport { isBufferSource, u8 } from './utils.js'\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar) => {\n // Build the character lookup table:\n /** @type {Record<string, number>} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array(((end * bitsPerChar) / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError('Invalid character ' + string[i])\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {boolean} pad\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar, pad) => {\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/** @type {Record<string, [number, string]>} */\nconst bases = {\n base2: [1, '01'],\n base8: [3, '01234567'],\n hex: [4, '0123456789abcdef'],\n base16: [4, '0123456789ABCDEF'],\n base32: [5, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'],\n base32hex: [5, '0123456789ABCDEFGHIJKLMNOPQRSTUV'],\n base64: [\n 6,\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n ],\n base64url: [\n 6,\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n ],\n}\n\n/**\n * RFC4648 Factory\n *\n * @param {string} base\n * @param {boolean} [padding]\n * @param {((str: string) => string)} [normalize]\n * @returns {Codec}\n */\nexport function rfc4648(base, padding = false, normalize) {\n const [bits, alphabet] = bases[base]\n return {\n encode(input, pad) {\n if (typeof input === 'string') {\n if (normalize) {\n input = normalize(input)\n }\n input = utf8.decode(input)\n }\n\n return encode(u8(input), alphabet, bits, pad ?? padding)\n },\n decode(input) {\n if (isBufferSource(input)) {\n input = utf8.encode(input)\n }\n\n if (normalize) {\n input = normalize(input)\n }\n\n return decode(input, alphabet, bits)\n },\n }\n}\n\n/**\n * Matches node\n */\nexport const hex = rfc4648('hex', true, (str) => str.toLowerCase())\nexport const base2 = rfc4648('base2')\nexport const base8 = rfc4648('base8')\nexport const base16 = rfc4648('base16')\nexport const base32 = rfc4648('base32')\nexport const base32hex = rfc4648('base32hex', true)\nexport const base64 = rfc4648('base64')\nexport const base64pad = rfc4648('base64', true)\n/**\n * Base 64 URL\n *\n * Padding is skipped by default\n */\nexport const base64url = rfc4648('base64url', false)\n","/* global crypto */\n\nimport { from } from './hasher.js'\n\nfunction sha (name: AlgorithmIdentifier): (data: Uint8Array) => Promise<Uint8Array> {\n return async data => new Uint8Array(await crypto.subtle.digest(name, data))\n}\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n","import { coerce } from '../bytes.js'\nimport type { ByteView } from './interface.js'\n\nexport const name = 'raw'\nexport const code = 0x55\n\nexport function encode (node: Uint8Array): ByteView<Uint8Array> {\n return coerce(node)\n}\n\nexport function decode (data: ByteView<Uint8Array>): Uint8Array {\n return coerce(data)\n}\n","// Copyright 2018 Consensys AG\n\n// Licensed under the Apache License, Version 2.0(the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n// http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/**\n * Defines an object type that can be extended with other properties.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Extensible = Record<string, any>\n\n/**\n * Defines the result of a DID resolution operation.\n *\n * @see {@link Resolvable.resolve}\n * @see {@link https://www.w3.org/TR/did-core/#did-resolution}\n */\nexport interface DIDResolutionResult {\n '@context'?: 'https://w3id.org/did-resolution/v1' | string | string[]\n didResolutionMetadata: DIDResolutionMetadata\n didDocument: DIDDocument | null\n didDocumentMetadata: DIDDocumentMetadata\n}\n\n/**\n * Describes the options forwarded to the resolver when executing a {@link Resolvable.resolve} operation.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-resolution-options}\n */\nexport interface DIDResolutionOptions extends Extensible {\n accept?: string\n}\n\n/**\n * Encapsulates the resolution metadata resulting from a {@link Resolvable.resolve} operation.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-resolution-metadata}\n */\nexport interface DIDResolutionMetadata extends Extensible {\n contentType?: string\n error?: 'invalidDid' | 'notFound' | 'representationNotSupported' | 'unsupportedDidMethod' | string\n}\n\n/**\n * Represents metadata about the DID document resulting from a {@link Resolvable.resolve} operation.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-document-metadata}\n */\nexport interface DIDDocumentMetadata extends Extensible {\n created?: string\n updated?: string\n deactivated?: boolean\n versionId?: string\n nextUpdate?: string\n nextVersionId?: string\n equivalentId?: string\n canonicalId?: string\n}\n\n/**\n * Represents the Verification Relationship between a DID subject and a Verification Method.\n *\n * @see {@link https://www.w3.org/TR/did-core/#verification-relationships}\n */\nexport type KeyCapabilitySection =\n | 'authentication'\n | 'assertionMethod'\n | 'keyAgreement'\n | 'capabilityInvocation'\n | 'capabilityDelegation'\n\n/**\n * Represents a DID document.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-document-properties}\n */\nexport type DIDDocument = {\n '@context'?: 'https://www.w3.org/ns/did/v1' | string | string[]\n id: string\n alsoKnownAs?: string[]\n controller?: string | string[]\n verificationMethod?: VerificationMethod[]\n service?: Service[]\n /**\n * @deprecated\n */\n publicKey?: VerificationMethod[]\n} & {\n [x in KeyCapabilitySection]?: (string | VerificationMethod)[]\n}\n\n/**\n * Represents a Service entry in a {@link https://www.w3.org/TR/did-core/#did-document-properties | DID document}.\n *\n * @see {@link https://www.w3.org/TR/did-core/#services}\n * @see {@link https://www.w3.org/TR/did-core/#service-properties}\n */\nexport interface Service {\n id: string\n type: string\n serviceEndpoint: ServiceEndpoint | ServiceEndpoint[]\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any\n}\n\n/**\n * Represents an endpoint of a Service entry in a DID document.\n *\n * @see {@link https://www.w3.org/TR/did-core/#dfn-serviceendpoint}\n * @see {@link https://www.w3.org/TR/did-core/#services}\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ServiceEndpoint = string | Record<string, any>\n\n/**\n * Encapsulates a JSON web key type that includes only the public properties that\n * can be used in DID documents.\n *\n * The private properties are intentionally omitted to discourage the use\n * (and accidental disclosure) of private keys in DID documents.\n *\n * @see {@link https://www.rfc-editor.org/rfc/rfc7517 | RFC7517 JsonWebKey (JWK)}\n */\nexport interface JsonWebKey extends Extensible {\n alg?: string\n crv?: string\n e?: string\n ext?: boolean\n key_ops?: string[]\n kid?: string\n kty: string\n n?: string\n use?: string\n x?: string\n y?: string\n}\n\n/**\n * Represents the properties of a Verification Method listed in a DID document.\n *\n * This data type includes public key representations that are no longer present in the spec but are still used by\n * several DID methods / resolvers and kept for backward compatibility.\n *\n * @see {@link https://www.w3.org/TR/did-core/#verification-methods}\n * @see {@link https://www.w3.org/TR/did-core/#verification-method-properties}\n */\nexport interface VerificationMethod {\n id: string\n type: string\n controller: string\n publicKeyBase58?: string\n publicKeyBase64?: string\n publicKeyJwk?: JsonWebKey\n publicKeyHex?: string\n publicKeyMultibase?: string\n blockchainAccountId?: string\n ethereumAddress?: string\n\n // ConditionalProof2022 subtypes\n conditionOr?: VerificationMethod[]\n conditionAnd?: VerificationMethod[]\n threshold?: number\n conditionThreshold?: VerificationMethod[]\n conditionWeightedThreshold?: ConditionWeightedThreshold[]\n conditionDelegated?: string\n relationshipParent?: string[]\n relationshipChild?: string[]\n relationshipSibling?: string[]\n}\n\nexport interface ConditionWeightedThreshold {\n condition: VerificationMethod\n weight: number\n}\n\n/**\n * URI params resulting from parsing a DID URI\n */\nexport interface Params {\n [index: string]: string\n}\n\n/**\n * An object containing the results of parsing a DID URI string.\n *\n * This is forwarded to implementations of particular DID resolvers when calling the `resolve` method.\n *\n * @see {@link Resolver}\n * @see {@link Resolvable.resolve}\n */\nexport interface ParsedDID {\n did: string\n didUrl: string\n method: string\n id: string\n path?: string\n fragment?: string\n query?: string\n params?: Params\n}\n\n/**\n * The DID resolution function that DID Resolver implementations must implement.\n */\nexport type DIDResolver = (\n did: string,\n parsed: ParsedDID,\n resolver: Resolvable,\n options: DIDResolutionOptions\n) => Promise<DIDResolutionResult>\nexport type WrappedResolver = () => Promise<DIDResolutionResult>\nexport type DIDCache = (parsed: ParsedDID, resolve: WrappedResolver) => Promise<DIDResolutionResult>\nexport type LegacyDIDResolver = (did: string, parsed: ParsedDID, resolver: Resolvable) => Promise<DIDDocument>\n\nexport type ResolverRegistry = Record<string, DIDResolver>\n\nexport interface LegacyResolverRegistry {\n [index: string]: LegacyDIDResolver\n}\n\nexport interface ResolverOptions {\n cache?: DIDCache | boolean | undefined\n legacyResolvers?: LegacyResolverRegistry\n}\n\nexport function inMemoryCache(): DIDCache {\n const cache: Map<string, DIDResolutionResult> = new Map()\n return async (parsed: ParsedDID, resolve) => {\n if (parsed.params && parsed.params['no-cache'] === 'true') return await resolve()\n\n const cached = cache.get(parsed.didUrl)\n if (cached !== undefined) return cached\n const result = await resolve()\n if (result.didResolutionMetadata?.error !== 'notFound') {\n cache.set(parsed.didUrl, result)\n }\n return result\n }\n}\n\nexport function noCache(parsed: ParsedDID, resolve: WrappedResolver): Promise<DIDResolutionResult> {\n return resolve()\n}\n\nconst PCT_ENCODED = '(?:%[0-9a-fA-F]{2})'\nconst ID_CHAR = `(?:[a-zA-Z0-9._-]|${PCT_ENCODED})`\nconst METHOD = '([a-z0-9]+)'\nconst METHOD_ID = `((?:${ID_CHAR}*:)*(${ID_CHAR}+))`\nconst PARAM_CHAR = '[a-zA-Z0-9_.:%-]'\nconst PARAM = `;${PARAM_CHAR}+=${PARAM_CHAR}*`\nconst PARAMS = `((${PARAM})*)`\nconst PATH = `(/[^#?]*)?`\nconst QUERY = `([?][^#]*)?`\nconst FRAGMENT = `(#.*)?`\nconst DID_MATCHER = new RegExp(`^did:${METHOD}:${METHOD_ID}${PARAMS}${PATH}${QUERY}${FRAGMENT}$`)\n\n/**\n * Parses a DID URL and builds a {@link ParsedDID | ParsedDID object}\n *\n * @param didUrl - the DID URL string to be parsed\n * @returns a ParsedDID object, or null if the input is not a DID URL\n */\nexport function parse(didUrl: string): ParsedDID | null {\n if (didUrl === '' || !didUrl) return null\n const sections = didUrl.match(DID_MATCHER)\n if (sections) {\n const parts: ParsedDID = {\n did: `did:${sections[1]}:${sections[2]}`,\n method: sections[1],\n id: sections[2],\n didUrl,\n }\n if (sections[4]) {\n const params = sections[4].slice(1).split(';')\n parts.params = {}\n for (const p of params) {\n const kv = p.split('=')\n parts.params[kv[0]] = kv[1]\n }\n }\n if (sections[6]) parts.path = sections[6]\n if (sections[7]) parts.query = sections[7].slice(1)\n if (sections[8]) parts.fragment = sections[8].slice(1)\n return parts\n }\n return null\n}\n\nconst EMPTY_RESULT: DIDResolutionResult = {\n didResolutionMetadata: {},\n didDocument: null,\n didDocumentMetadata: {},\n}\n\nexport function wrapLegacyResolver(resolve: LegacyDIDResolver): DIDResolver {\n return async (did, parsed, resolver) => {\n try {\n const doc = await resolve(did, parsed, resolver)\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: doc,\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: {\n error: 'notFound',\n message: e.toString(), // This is not in spec, but may be helpful\n },\n }\n }\n }\n}\n\n/**\n * The method signature implemented by this resolver.\n */\nexport interface Resolvable {\n resolve: (didUrl: string, options?: DIDResolutionOptions) => Promise<DIDResolutionResult>\n}\n\n/**\n * This implementation of {@link Resolvable} bundles together multiple implementations of {@link DIDResolver} and\n * presents a single function call to users.\n */\nexport class Resolver implements Resolvable {\n private readonly registry: ResolverRegistry\n private readonly cache: DIDCache\n\n constructor(registry: ResolverRegistry = {}, options: ResolverOptions = {}) {\n this.registry = registry\n this.cache = options.cache === true ? inMemoryCache() : options.cache || noCache\n if (options.legacyResolvers) {\n Object.keys(options.legacyResolvers).map((methodName) => {\n if (!this.registry[methodName]) {\n this.registry[methodName] = wrapLegacyResolver(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.legacyResolvers![methodName]\n )\n }\n })\n }\n }\n\n async resolve(didUrl: string, options: DIDResolutionOptions = {}): Promise<DIDResolutionResult> {\n const parsed = parse(didUrl)\n if (parsed === null) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'invalidDid' },\n }\n }\n const resolver = this.registry[parsed.method]\n if (!resolver) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'unsupportedDidMethod' },\n }\n }\n return this.cache(parsed, () => resolver(parsed.did, parsed, this, options))\n }\n}\n","/**\n * Variable length integer encoding with helpers for tagging Uint8Arrays with multicodec prefixes.\n *\n * @module\n */\n/* eslint-disable no-nested-ternary */\nconst MSB = 0x80\nconst REST = 0x7f\nconst MSBALL = ~REST\nconst INT = Math.pow(2, 31)\n\n/**\n * @param {number} num\n * @param {Uint8Array} out\n * @param {number} [offset=0]\n */\nfunction encode(num, out, offset = 0) {\n out = out || []\n const oldOffset = offset\n\n while (num >= INT) {\n out[offset++] = (num & 0xff) | MSB\n num /= 128\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xff) | MSB\n num >>>= 7\n }\n // eslint-disable-next-line unicorn/prefer-math-trunc\n out[offset] = num | 0\n\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1\n\n return out\n}\n\nconst MSB$1 = 0x80\nconst REST$1 = 0x7f\n\n/**\n * @param {Uint8Array} buf\n * @param {number} [offset=0]\n * @returns {[code: number, size: number]}\n */\nfunction decode(buf, offset = 0) {\n let res = 0\n let shift = 0\n let counter = offset\n let b\n let bytes = 0\n const l = buf.length\n\n do {\n if (counter >= l) {\n bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res +=\n shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB$1)\n\n bytes = counter - offset\n\n return [res, bytes]\n}\n\nconst N1 = Math.pow(2, 7)\nconst N2 = Math.pow(2, 14)\nconst N3 = Math.pow(2, 21)\nconst N4 = Math.pow(2, 28)\nconst N5 = Math.pow(2, 35)\nconst N6 = Math.pow(2, 42)\nconst N7 = Math.pow(2, 49)\nconst N8 = Math.pow(2, 56)\nconst N9 = Math.pow(2, 63)\n\nconst length = function (/** @type {number} */ value) {\n return value < N1\n ? 1\n : value < N2\n ? 2\n : value < N3\n ? 3\n : value < N4\n ? 4\n : value < N5\n ? 5\n : value < N6\n ? 6\n : value < N7\n ? 7\n : value < N8\n ? 8\n : value < N9\n ? 9\n : 10\n}\n\nexport const varint = {\n encode,\n decode,\n encodingLength: length,\n}\n\n/**\n * @param {number} code\n * @param {Uint8Array} bytes\n */\nexport function tag(code, bytes) {\n const offset = varint.encodingLength(code)\n const taggedBytes = new Uint8Array(bytes.byteLength + offset)\n varint.encode(code, taggedBytes, 0)\n taggedBytes.set(bytes, offset)\n\n return taggedBytes\n}\n\n/**\n * @param {number} code\n * @param {Uint8Array} taggedBytes\n */\nexport function untag(code, taggedBytes) {\n const [tag, size] = varint.decode(taggedBytes)\n if (tag === code) {\n return new Uint8Array(\n taggedBytes.buffer,\n taggedBytes.byteOffset + size,\n taggedBytes.byteLength - size\n )\n } else {\n throw new Error(\n `Expected multiformat with codec 0x${code.toString(\n 16\n )} tag instead got 0x${tag.toString(16)}`\n )\n }\n}\n","/**\n * Fast base encoding / decoding of any given alphabet using bitcoin style leading zero compression.\n *\n * Uses {@link https://github.com/cryptocoinjs/base-x | cryptocoinjs/base-x} to build a {@link Codec} factory and prefines `base10`, `base36` and `base58btc` alphabets and {@link Codec | Codecs}.\n *\n * @module\n */\n\nimport _baseX from 'base-x'\nimport { utf8 } from './utf8.js'\nimport { isBufferSource, u8 } from './utils.js'\n\n/** @typedef {import('./types.js').Codec} Codec */\n\n/** @type {Record<string, string>} */\nconst bases = {\n base10: '0123456789',\n base36: '0123456789abcdefghijklmnopqrstuvwxyz',\n base58btc: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz',\n}\n\n/**\n * Base X Factory\n *\n * @param {string} base\n * @returns {Codec}\n */\nexport function baseX(base) {\n const alphabet = bases[base]\n return {\n encode(input, pad) {\n if (typeof input === 'string') {\n input = utf8.decode(input)\n }\n return _baseX(alphabet).encode(u8(input))\n },\n decode(input) {\n if (isBufferSource(input)) {\n input = utf8.encode(input)\n }\n\n return _baseX(alphabet).decode(input)\n },\n }\n}\n\nexport const base10 = baseX('base10')\nexport const base36 = baseX('base36')\nexport const base58btc = baseX('base58btc')\n","/**\n * Elliptic Curve point compression\n *\n * Decompress a compressed public key in SEC format.\n * See section 2.3.3 in {@link https://www.secg.org/sec1-v2.pdf | SEC 1 v2}\n *\n * - https://stackoverflow.com/questions/17171542/algorithm-for-elliptic-curve-point-compression/30431547#30431547\n * - https://github.com/w3c-ccg/did-method-key/issues/32\n *\n * @module\n */\nimport * as bigintModArith from 'bigint-mod-arith'\nimport { base10 } from './base-x.js'\nimport { concat } from './utils.js'\n\n/**\n * @typedef {'P-256' | 'P-384' | 'P-521'} Curve\n */\n\n/** @type {Record<Curve, number>} */\nconst curveToPointLength = {\n 'P-256': 64,\n 'P-384': 96,\n 'P-521': 132,\n}\n\n/**\n * Elliptic curves constants\n *\n * @param {Curve} curve\n */\nexport function getConstantsForCurve(curve) {\n let prime, b, pIdent\n const two = BigInt(2)\n\n switch (curve) {\n case 'P-256': {\n prime = two ** 256n - two ** 224n + two ** 192n + two ** 96n - 1n\n pIdent = (prime + 1n) / 4n\n b =\n 41_058_363_725_152_142_129_326_129_780_047_268_409_114_441_015_993_725_554_835_256_314_039_467_401_291n\n break\n }\n case 'P-384': {\n prime = two ** 384n - two ** 128n - two ** 96n + two ** 32n - 1n\n pIdent = (prime + 1n) / 4n\n b =\n 27_580_193_559_959_705_877_849_011_840_389_048_093_056_905_856_361_568_521_428_707_301_988_689_241_309_860_865_136_260_764_883_745_107_765_439_761_230_575n\n break\n }\n case 'P-521': {\n prime = two ** 521n - 1n\n pIdent = (prime + 1n) / 4n\n b =\n 1_093_849_038_073_734_274_511_112_390_766_805_569_936_207_598_951_683_748_994_586_394_495_953_116_150_735_016_013_708_737_573_759_623_248_592_132_296_706_313_309_438_452_531_591_012_912_142_327_488_478_985_984n\n break\n }\n\n default: {\n throw new Error(`Unsupported curve ${curve}`)\n }\n }\n\n return { prime, b, pIdent }\n}\n\n/**\n * @param {Uint8Array} key\n */\nexport function isCompressed(key) {\n return key[0] === 0x02 || key[0] === 0x03\n}\n\n/**\n * @param {Uint8Array} key\n */\nexport function isUncompressed(key) {\n return key[0] === 0x04\n}\n\n/**\n * Elliptic Curve point compression\n *\n * @param { Uint8Array } pubkeyBytes\n */\nexport function compress(pubkeyBytes) {\n if (!isUncompressed(pubkeyBytes)) {\n throw new Error('Expected first byte to be 0x04, meaning uncompressed key.')\n }\n // first byte is a prefix\n const unprefixed = pubkeyBytes.subarray(1)\n const x = unprefixed.subarray(0, unprefixed.length / 2)\n const y = unprefixed.subarray(unprefixed.length / 2, unprefixed.length)\n const out = new Uint8Array(x.length + 1)\n\n // eslint-disable-next-line unicorn/prefer-at\n out[0] = 2 + (y[y.length - 1] & 1)\n out.set(x, 1)\n\n return out\n}\n\n/**\n * Elliptic Curve point decompression\n *\n * @param {Uint8Array} comp - Compressed public key. 1st byte: 0x02 for even or 0x03 for odd. Following curve size n bytes: x coordinate expressed as big-endian.\n * @param {Curve} curve\n */\nexport function decompress(comp, curve = 'P-256') {\n if (!isCompressed(comp)) {\n throw new TypeError(\n 'Expected first byte to be 0x02 or 0x03, meaning compressed key.'\n )\n }\n\n const { prime, b, pIdent } = getConstantsForCurve(curve)\n\n const signY = BigInt(comp[0] - 2)\n const x = comp.subarray(1)\n const xBig = BigInt(base10.encode(x))\n\n const a = xBig ** 3n - xBig * 3n + b\n let yBig = bigintModArith.modPow(a, pIdent, prime)\n\n // If the parity doesn't match it's the *other* root\"\n if (yBig % 2n !== signY) {\n yBig = prime - yBig\n }\n\n const y = base10.decode(yBig.toString(10))\n\n // left-pad for smaller than curve size byte y\n const offset = curveToPointLength[curve] / 2 - y.length\n const yPadded = new Uint8Array(curveToPointLength[curve] / 2)\n yPadded.set(y, offset)\n\n // concat coords & prepend compressed prefix\n // eslint-disable-next-line unicorn/prefer-spread\n const publicKey = concat([[0x04], x, yPadded])\n return publicKey\n}\n","/* eslint-disable unicorn/numeric-separators-style */\nexport const KEY_TYPE_ALG = /** @type {const} */ ({\n Ed25519: 'EdDSA',\n 'P-256': 'ES256',\n 'P-384': 'ES384',\n 'P-521': 'ES512',\n secp256k1: 'ES256K',\n RSA: 'RS256',\n})\n\nexport const ALG_KEY_TYPE = /** @type {const} */ ({\n EdDSA: 'Ed25519',\n ES256: 'P-256',\n ES384: 'P-384',\n ES512: 'P-521',\n ES256K: 'secp256k1',\n RS256: 'RSA',\n})\n\n/**\n * @typedef {keyof ALG_KEY_TYPE} SignatureAlgorithm\n * @typedef {keyof KEY_TYPE_ALG} KeyType\n */\n\nexport const KEY_TYPE_CODE = /** @type {const} */ ({\n Ed25519: 0xed,\n RSA: 0x1205,\n 'P-256': 0x1200,\n 'P-384': 0x1201,\n 'P-521': 0x1202,\n secp256k1: 0xe7,\n})\n\nexport const CODE_KEY_TYPE = /** @type {const} */ ({\n 0xed: 'Ed25519',\n 0x1205: 'RSA',\n 0x1200: 'P-256',\n 0x1201: 'P-384',\n 0x1202: 'P-521',\n 0xe7: 'secp256k1',\n})\n\n/**\n * @typedef {keyof CODE_KEY_TYPE} PublicKeyCode\n */\n\n/**\n * Key type to signature algorithm name.\n *\n * @param {string} type\n * @throws {TypeError} if the key type is not supported.\n */\nexport function keyTypeToAlg(type) {\n // @ts-ignore\n const alg = /** @type {SignatureAlgorithm} */ (KEY_TYPE_ALG[type])\n\n if (!alg) {\n throw new TypeError(`Unsupported key type ${type}`)\n }\n return alg\n}\n\n/**\n * Signature algorithm name to key type.\n *\n * @param {SignatureAlgorithm} alg\n * @throws {TypeError} if the algorithm is not supported.\n */\nexport function algToKeyType(alg) {\n const type = ALG_KEY_TYPE[alg]\n\n if (!type) {\n throw new TypeError(`Unsupported algorithm ${alg}`)\n }\n return type\n}\n","import { parse } from 'did-resolver'\n\n/**\n * @typedef {import('./types').DIDURLObject} DIDURLObject\n */\n\n/**\n * DID Core\n *\n * @implements {DIDURLObject}\n */\nexport class DIDCore {\n /**\n *\n * @param {DIDURLObject} parsed\n */\n constructor(parsed) {\n this.did = parsed.did\n this.didUrl = parsed.didUrl\n this.method = parsed.method\n this.id = parsed.id\n this.path = parsed.path\n this.fragment = parsed.fragment\n this.query = parsed.query\n }\n\n /**\n * Create a DIDCore from a DID string\n *\n * @param {string} did\n */\n static fromString(did) {\n const parsedDid = /** @type {DIDURLObject} */ (parse(did))\n if (parsedDid) {\n return new DIDCore(parsedDid)\n } else {\n throw new TypeError(`Invalid DID \"${did}\"`)\n }\n }\n\n toString() {\n return this.didUrl\n }\n}\n","import * as EC from 'iso-base/ec-compression'\nimport { u8 } from 'iso-base/utils'\nimport { tag, varint } from 'iso-base/varint'\nimport { base58btc } from 'multiformats/bases/base58'\nimport { CODE_KEY_TYPE, KEY_TYPE_CODE, keyTypeToAlg } from './common.js'\nimport { DIDCore } from './core.js'\n\n// eslint-disable-next-line no-unused-vars\nimport * as T from './types.js'\n\nexport * from './common.js'\n\nconst DID_KEY_PREFIX = `did:key:`\n\n/**\n * Validate raw public key length\n *\n * @param {number} code\n * @param {Uint8Array} key\n */\nexport function validateRawPublicKeyLength(code, key) {\n switch (code) {\n case KEY_TYPE_CODE.secp256k1: {\n if (key.length !== 33) {\n throw new RangeError(`Secp256k1 public keys must be 33 bytes.`)\n }\n return key\n }\n case KEY_TYPE_CODE.Ed25519: {\n if (key.length !== 32) {\n throw new RangeError(`ed25519 public keys must be 32 bytes.`)\n }\n return key\n }\n case KEY_TYPE_CODE['P-256']: {\n if (EC.isUncompressed(key)) {\n key = EC.compress(key)\n }\n\n if (EC.isCompressed(key) && key.length !== 33) {\n throw new RangeError(`p256 public keys must be 33 bytes.`)\n }\n\n return key\n }\n case KEY_TYPE_CODE['P-384']: {\n if (EC.isUncompressed(key)) {\n key = EC.compress(key)\n }\n if (EC.isCompressed(key) && key.length !== 49) {\n throw new RangeError(`p384 public keys must be 49 bytes.`)\n }\n return key\n }\n case KEY_TYPE_CODE['P-521']: {\n if (EC.isUncompressed(key)) {\n key = EC.compress(key)\n }\n if (EC.isCompressed(key) && key.length !== 67) {\n throw new RangeError(`p521 public keys must be 67 bytes.`)\n }\n return key\n }\n\n case KEY_TYPE_CODE.RSA: {\n if (key.length !== 270 && key.length !== 526) {\n throw new RangeError(\n `RSA public keys must be 270 bytes for 2048 bits or 526 bytes for 4096 bits.`\n )\n }\n return key\n }\n default: {\n throw new RangeError(\n `Unsupported DID encoding, unknown multicode 0x${code.toString(16)}.`\n )\n }\n }\n}\n\n/**\n * did:key Method\n *\n * @implements {T.VerifiableDID}\n */\nexport class DIDKey extends DIDCore {\n /**\n *\n * @param {T.DIDURLObject} did\n * @param {T.KeyType} type\n * @param {Uint8Array} key\n */\n constructor(did, type, key) {\n super(did)\n this.type = type\n this.publicKey = key\n this.code = KEY_TYPE_CODE[type]\n this.alg = keyTypeToAlg(type)\n this.url = did\n this.didKey = did.did\n }\n\n /**\n * Create a DIDKey from a DID string\n *\n * @param {string} didString\n */\n static fromString(didString) {\n const did = DIDCore.fromString(didString)\n\n if (did.method === 'key') {\n const encodedKey = base58btc.decode(did.id)\n const [code, size] = varint.decode(encodedKey)\n const key = validateRawPublicKeyLength(code, encodedKey.slice(size))\n\n return new DIDKey(\n did,\n CODE_KEY_TYPE[/** @type {T.PublicKeyCode} */ (code)],\n key\n )\n } else {\n throw new TypeError(`Invalid DID \"${did}\", method must be 'key'`)\n }\n }\n\n /**\n * Create a DIDKey from a public key bytes\n *\n * @param {T.KeyType} type\n * @param {BufferSource} key\n */\n static fromPublicKey(type, key) {\n const code = KEY_TYPE_CODE[type]\n if (!code) {\n throw new TypeError(`Unsupported key type \"${type}\"`)\n }\n\n const keyBytes = validateRawPublicKeyLength(code, u8(key))\n const id = base58btc.encode(tag(code, keyBytes))\n\n return new DIDKey(\n {\n did: `${DID_KEY_PREFIX}${id}`,\n didUrl: `${DID_KEY_PREFIX}${id}`,\n id,\n method: 'key',\n },\n type,\n keyBytes\n )\n }\n\n /**\n *\n * @returns {T.DIDDocument}\n */\n get document() {\n const id = `${this.did}#${this.id}`\n return {\n '@context': [\n 'https://www.w3.org/ns/did/v1',\n 'https://w3id.org/security/multikey/v1',\n ],\n id: this.did,\n verificationMethod: [\n {\n id,\n type: 'MultiKey',\n controller: this.did,\n publicKeyMultibase: this.id,\n },\n ],\n authentication: [id],\n assertionMethod: [id],\n capabilityDelegation: [id],\n capabilityInvocation: [id],\n }\n }\n}\n\n/** @type {import('did-resolver').DIDResolver} */\nasync function didKeyResolver(did, parsedDid) {\n const didKey = DIDKey.fromString(did)\n return {\n didDocumentMetadata: {},\n didResolutionMetadata: {\n contentType: 'application/did+ld+json',\n },\n didDocument: didKey.document,\n }\n}\n\n/** @type {import('did-resolver').ResolverRegistry} */\nexport const resolver = {\n key: didKeyResolver,\n}\n","import { Resolver } from 'did-resolver'\nimport { varint } from 'iso-base/varint'\nimport { concat } from 'iso-base/utils'\nimport { base64url } from 'iso-base/rfc4648'\nimport { base58btc } from 'multiformats/bases/base58'\nimport * as DidKey from './key.js'\nimport { DIDCore } from './core.js'\n\n// eslint-disable-next-line no-unused-vars\nimport * as T from './types.js'\nimport {\n CODE_KEY_TYPE,\n keyTypeToAlg,\n validateRawPublicKeyLength,\n} from './key.js'\n\n/**\n * Resolve a DID to a DID Document\n *\n * @see https://www.w3.org/TR/did-core/#resolution\n *\n * @param {T.DID} did\n * @param {T.ResolveOptions} [opts]\n */\nexport async function resolve(did, opts = {}) {\n const resolver = new Resolver(\n {\n ...DidKey.resolver,\n ...opts.resolvers,\n },\n { cache: opts.cache ?? true }\n )\n\n const r = await resolver.resolve(did, {\n accept: 'application/did+ld+json',\n })\n\n if (r.didResolutionMetadata.error) {\n throw new Error(r.didResolutionMetadata.error)\n }\n\n return /** @type {T.DIDDocument} */ (r.didDocument)\n}\n\n/**\n * Parse a DID string into a DID Core object\n *\n * @see https://www.w3.org/TR/did-core/#identifier\n *\n * @param {string} did\n */\nexport function parse(did) {\n return DIDCore.fromString(did)\n}\n\n/**\n * Dereference a DID URL\n *\n * @see https://www.w3.org/TR/did-core/#did-url-dereferencing\n * @param {T.DIDURLObject} didObject\n * @param {T.ResolveOptions} [opts]\n */\nexport async function dereference(didObject, opts) {\n const didDocument = await resolve(didObject.did, opts)\n\n if (!didDocument) {\n throw new Error(`No DID Document found for ${didObject.did}`)\n }\n\n return derefDocument(didObject, didDocument)\n}\n\n/**\n * Dereference a DID URL from a DID Document\n *\n * @param {T.DIDURLObject} didObject\n * @param {T.DIDDocument} document\n */\nexport function derefDocument(didObject, document) {\n const fragment = didObject.fragment ?? didObject.id\n /** @type {T.VerificationMethod | undefined} */\n let method\n\n if (document.verificationMethod) {\n method = document.verificationMethod.find(\n (vm) => vm.id === `${didObject.did}#${fragment}`\n )\n }\n\n if (!method && document.authentication) {\n method = /** @type {T.VerificationMethod} */ (\n document.authentication.find(\n (vm) =>\n typeof vm !== 'string' && vm.id === `${didObject.did}#${fragment}`\n )\n )\n }\n\n return method\n}\n\n/**\n * Verifiable DID\n *\n * @implements {T.VerifiableDID}\n */\nexport class DID {\n /**\n *\n * @param {Omit<T.VerifiableDID, 'didKey'>} opts\n */\n constructor(opts) {\n this.did = opts.did\n this.publicKey = opts.publicKey\n this.alg = opts.alg\n this.type = opts.type\n this.document = opts.document\n this.url = opts.url\n this.didKey = DidKey.DIDKey.fromPublicKey(opts.type, opts.publicKey).url.did\n }\n\n /**\n *\n * @param {T.DIDURL} did\n * @param {T.ResolveOptions} [opts]\n */\n static async fromString(did, opts = {}) {\n const parsedDid = parse(did)\n const document = await resolve(parsedDid.did, opts)\n const method = derefDocument(parsedDid, document)\n\n if (!method) {\n throw new Error(`No verification method found for ${did}`)\n }\n\n if (method.type === 'MultiKey') {\n const encodedKey = base58btc.decode(method.publicKeyMultibase)\n const [code, size] = varint.decode(encodedKey)\n const key = validateRawPublicKeyLength(code, encodedKey.slice(size))\n const type = CODE_KEY_TYPE[/** @type {T.PublicKeyCode} */ (code)]\n\n return new DID({\n did: parsedDid.did,\n alg: keyTypeToAlg(type),\n type,\n publicKey: key,\n url: parsedDid,\n document,\n })\n }\n\n if (method.publicKeyJwk && method.publicKeyJwk.kty === 'OKP') {\n const publicKey = base64url.decode(method.publicKeyJwk.x)\n const type = method.publicKeyJwk.crv\n const alg = keyTypeToAlg(type)\n return new DID({\n did: parsedDid.did,\n alg,\n type,\n publicKey,\n url: parsedDid,\n document,\n })\n }\n\n if (method.publicKeyJwk && method.publicKeyJwk.kty === 'EC') {\n const type = method.publicKeyJwk.crv\n const didkey = DidKey.DIDKey.fromPublicKey(\n type,\n concat([\n [4],\n base64url.decode(method.publicKeyJwk.x),\n base64url.decode(method.publicKeyJwk.y),\n ])\n )\n const alg = keyTypeToAlg(type)\n return new DID({\n did: parsedDid.did,\n alg,\n type,\n publicKey: didkey.publicKey,\n url: parsedDid,\n document,\n })\n }\n throw new Error(`Unsupported verification method type \"${method.type}\"`)\n }\n\n toString() {\n return this.url.didUrl\n }\n}\n","import { base64url } from 'iso-base/rfc4648'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { code as RAW_CODE } from 'multiformats/codecs/raw'\nimport { utf8 } from 'iso-base/utf8'\nimport * as DID from 'iso-did'\nimport { CID } from 'multiformats/cid'\n\n// eslint-disable-next-line no-unused-vars\nimport * as T from './types.js'\n\n/**\n * Serialise Object to JWT style string.\n *\n * @param {import('type-fest').Jsonifiable} input - JSON input\n */\nexport function serialize(input) {\n return base64url.encode(utf8.decode(JSON.stringify(input)))\n}\n\n/**\n * Deserialise JWT style string section to object.\n *\n * @template T\n * @param {string} input\n * @returns {T}\n */\nexport function deserialize(input) {\n let decodedString\n\n try {\n const decodedBytes = base64url.decode(input)\n decodedString = utf8.encode(decodedBytes)\n } catch {\n throw new Error(`Can't parse: ${input}: Can't parse as base64url.`)\n }\n\n try {\n return JSON.parse(decodedString)\n } catch {\n throw new Error(\n `Can't parse: ${input}: Can't parse base64url encoded JSON inside.`\n )\n }\n}\n\n/**\n *\n * @param {T.UCANProps} data\n * @param {import('iso-signatures/types').ISigner<any>} signer\n * @returns {Promise<T.UCANArtifacts>}\n */\nexport async function encode(data, signer) {\n /** @type {import('type-fest').Jsonify<T.JWTHeader>} */\n const header = {\n alg: data.issuer.alg,\n typ: 'JWT',\n }\n /** @type {import('type-fest').Jsonify<T.JWTPayload>} */\n const payload = {\n aud: data.audience,\n iss: data.issuer.did,\n cap: data.capabilities,\n exp: data.expiration,\n ucv: data.version,\n fct: data.facts,\n prf: /** @type {T.StringOf<T.CID>[]} */ (\n data.proofs?.map((p) => p.toString())\n ),\n nbf: data.notBefore,\n nnc: data.nonce,\n }\n\n const headerAndPayload = `${serialize(header)}.${serialize(payload)}`\n const signature = await signer.sign(utf8.decode(headerAndPayload))\n\n const ucan = /** @type {T.JWT} */ (\n `${headerAndPayload}.${base64url.encode(signature)}`\n )\n const bytes = utf8.decode(ucan)\n\n return {\n ucan,\n signature,\n bytes,\n cid: CID.create(1, RAW_CODE, await sha256.digest(bytes)),\n }\n}\n\n/**\n * Decode JWT style string to Object.\n *\n * TODO: add valiation\n *\n * @param {T.JWT} data\n * @return {Promise<{props: T.UCANProps , artifacts: T.UCANArtifacts}>}\n */\nexport async function decode(data) {\n const [encodedHeader, encodedPayload, encodedSignature] = data.split('.')\n if (\n encodedHeader === undefined ||\n encodedPayload === undefined ||\n encodedSignature === undefined\n ) {\n throw new Error(\n `Can't parse UCAN: ${data}: Expected JWT format: 3 dot-separated base64url-encoded values.`\n )\n }\n\n /** @type {T.JWTHeader} */\n const header = deserialize(encodedHeader)\n if (header.typ !== 'JWT') {\n throw new Error(`Expected type \"JWT\" got ${header.typ}.`)\n }\n\n /** @type {T.JWTPayload} */\n const payloadObject = deserialize(encodedPayload)\n const issuer = await DID.DID.fromString(payloadObject.iss)\n\n if (header.alg !== issuer.alg) {\n throw new Error(\n `Expected signature algorithm \"${issuer.alg}\" got ${header.alg}.`\n )\n }\n const signature = base64url.decode(encodedSignature)\n const bytes = utf8.decode(data)\n\n return {\n props: {\n audience: DID.parse(payloadObject.aud).did,\n issuer,\n capabilities: payloadObject.cap,\n expiration: payloadObject.exp,\n version: payloadObject.ucv,\n facts: payloadObject.fct,\n proofs: payloadObject.prf?.map((p) => CID.parse(p)),\n notBefore: payloadObject.nbf,\n nonce: payloadObject.nnc,\n },\n artifacts: {\n signature,\n ucan: data,\n bytes,\n cid: CID.create(1, RAW_CODE, await sha256.digest(bytes)),\n },\n }\n}\n","import { utf8 } from 'iso-base/utf8'\nimport { base64 } from 'iso-base/rfc4648'\nimport * as JWT from './jwt.js'\n\n// eslint-disable-next-line no-unused-vars\nimport * as T from './types.js'\n\n/** @type {T.Version} */\nexport const VERSION = '0.10.0'\n\n/**\n * Returns UTC Unix timestamp for comparing it against time window of the UCAN.\n */\nexport const now = () => Math.floor(Date.now() / 1000)\n\n/**\n * @implements {T.IUcan}\n */\nexport class UCAN {\n /**\n * @param {Omit<T.UCANProps, 'version'>} props\n * @param {T.UCANArtifacts} artifacts\n */\n constructor(props, artifacts) {\n this.issuer = props.issuer\n this.audience = props.audience\n this.version = VERSION\n this.capabilities = props.capabilities\n this.expiration = props.expiration\n this.notBefore = props.notBefore\n this.nonce = props.nonce\n this.facts = props.facts\n this.proofs = props.proofs\n\n this.signature = artifacts.signature\n this.bytes = artifacts.bytes\n this.ucan = artifacts.ucan\n this.cid = artifacts.cid\n }\n\n /**\n *\n * @param {T.UCANOptions} opts\n */\n static async create(opts) {\n const {\n issuer,\n audience,\n capabilities,\n expiration,\n notBefore,\n nonce,\n facts,\n proofs,\n ttl,\n } = opts\n\n /** @type {T.UCANProps} */\n const props = {\n issuer,\n audience,\n capabilities,\n // eslint-disable-next-line unicorn/no-null\n expiration: expiration ?? (typeof ttl === 'number' ? now() + ttl : null),\n notBefore,\n nonce,\n facts,\n proofs,\n version: VERSION,\n }\n const ucan = new UCAN(props, await JWT.encode(props, issuer))\n return ucan\n }\n\n /**\n *\n * @param {import('./types.js').JWT} ucan - JWT string\n */\n static async fromUcan(ucan) {\n const { props, artifacts } = await JWT.decode(ucan)\n return new UCAN(props, artifacts)\n }\n\n /**\n *\n * @returns {import('multiformats').Block<Uint8Array, T.CodecCode, T.HashCode, 1>}\n */\n block() {\n return {\n bytes: this.bytes,\n cid: this.cid,\n }\n }\n\n /**\n *\n * @param {import('iso-signatures/types').IResolver} resolver\n */\n async isValid(resolver) {\n const [encodedHeader, encodedPayload] = this.ucan.split('.')\n const isVerified = await resolver.verify({\n message: utf8.decode(`${encodedHeader}.${encodedPayload}`),\n signature: this.signature,\n ...this.issuer,\n })\n\n if (!isVerified) {\n return false\n }\n\n if (this.expiration && this.expiration <= now()) {\n return false\n }\n\n if (this.notBefore && this.notBefore > now()) {\n return false\n }\n\n return true\n }\n\n /**\n *\n * @returns {T.JWT}\n */\n toString() {\n return this.ucan\n }\n\n /**\n *\n * @returns {T.Jsonifiable}\n */\n toJSON() {\n return {\n issuer: this.issuer.toString(),\n audience: this.audience.toString(),\n version: this.version,\n capabilities: /** @type {T.Jsonify<T.Capabilities>} **/ (\n this.capabilities\n ),\n expiration: this.expiration,\n notBefore: this.notBefore,\n nonce: this.nonce,\n facts: /** @type {T.Jsonify<T.Facts>} **/ (this.facts),\n proofs: /** @type {T.Jsonify<import('multiformats').LinkJSON[]>} **/ (\n this.proofs?.map((p) => p.toJSON())\n ),\n signature: base64.encode(this.signature),\n ucan: this.ucan,\n bytes: utf8.encode(this.bytes),\n cid: /** @type {T.Jsonify<import('multiformats').LinkJSON>} **/ (\n this.cid.toJSON()\n ),\n }\n }\n}\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nconst P = 2n ** 255n - 19n; // ed25519 is twisted edwards curve\nconst N = 2n ** 252n + 27742317777372353535851937790883648493n; // curve's (group) order\nconst Gx = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an; // base point x\nconst Gy = 0x6666666666666666666666666666666666666666666666666666666666666658n; // base point y\nconst CURVE = {\n a: -1n,\n d: 37095705934669439343138083508754565189542113879843219016388785533085940283555n,\n p: P, n: N, h: 8, Gx, Gy // field prime, curve (group) order, cofactor\n};\nconst err = (m = '') => { throw new Error(m); }; // error helper, messes-up stack trace\nconst str = (s) => typeof s === 'string'; // is string\nconst au8 = (a, l) => // is Uint8Array (of specific length)\n !(a instanceof Uint8Array) || (typeof l === 'number' && l > 0 && a.length !== l) ?\n err('Uint8Array expected') : a;\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst toU8 = (a, len) => au8(str(a) ? h2b(a) : u8n(a), len); // norm(hex/u8a) to u8a\nconst mod = (a, b = P) => { let r = a % b; return r >= 0n ? r : b + r; }; // mod division\nconst isPoint = (p) => (p instanceof Point ? p : err('Point expected')); // is xyzt point\nlet Gpows = undefined; // precomputes for base point G\nclass Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n }\n static fromAffine(p) { return new Point(p.x, p.y, 1n, mod(p.x * p.y)); }\n static fromHex(hex, strict = true) {\n const { d } = CURVE;\n hex = toU8(hex, 32);\n const normed = hex.slice(); // copy the array to not mess it up\n normed[31] = hex[31] & ~0x80; // adjust first LE byte = last BE byte\n const y = b2n_LE(normed); // decode as little-endian, convert to num\n if (y === 0n) { // y=0 is valid, proceed\n }\n else {\n if (strict && !(0n < y && y < P))\n err('bad y coord 1'); // strict=true [1..P-1]\n if (!strict && !(0n < y && y < 2n ** 256n))\n err('bad y coord 2'); // strict=false [1..2^256-1]\n }\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad y coordinate 3'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isHeadOdd = (hex[31] & 0x80) !== 0;\n if (isHeadOdd !== isXOdd)\n x = mod(-x);\n return new Point(x, y, 1n, mod(x * y)); // Z=1, T=xy\n }\n get x() { return this.toAffine().x; } // .x, .y will call expensive toAffine.\n get y() { return this.toAffine().y; } // Should be used with care.\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = isPoint(other); // isPoint() checks class equality\n const X1Z2 = mod(X1 * Z2), X2Z1 = mod(X2 * Z1);\n const Y1Z2 = mod(Y1 * Z2), Y2Z1 = mod(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() { return this.equals(I); }\n negate() {\n return new Point(mod(-this.ex), this.ey, this.ez, mod(-this.et));\n }\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this; // Cost: 4M + 4S + 1*a + 6add + 1*2\n const { a } = CURVE; // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(2n * mod(Z1 * Z1));\n const D = mod(a * A);\n const x1y1 = X1 + Y1;\n const E = mod(mod(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this; // Cost: 8M + 1*k + 8add + 1*2.\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = isPoint(other); // doesn't check if other on-curve\n const { a, d } = CURVE; // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = mod(X1 * X2);\n const B = mod(Y1 * Y2);\n const C = mod(T1 * d * T2);\n const D = mod(Z1 * Z2);\n const E = mod((X1 + Y1) * (X2 + Y2) - A - B);\n const F = mod(D - C);\n const G = mod(D + C);\n const H = mod(B - a * A);\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n mul(n, safe = true) {\n if (n === 0n)\n return safe === true ? err('cannot multiply by 0') : I;\n if (!(typeof n === 'bigint' && 0n < n && n < N))\n err('invalid scalar, must be < L');\n if (!safe && this.is0() || n === 1n)\n return this; // safe=true bans 0. safe=false allows 0.\n if (this.equals(G))\n return wNAF(n).p; // use wNAF precomputes for base points\n let p = I, f = G; // init result point & fake point\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) { // double-and-add ladder\n if (n & 1n)\n p = p.add(d); // if bit is present, add to point\n else if (safe)\n f = f.add(d); // if not, add to fake for timing safety\n }\n return p;\n }\n multiply(scalar) { return this.mul(scalar); } // Aliases for compatibilty\n clearCofactor() { return this.mul(BigInt(CURVE.h), false); } // multiply by cofactor\n isSmallOrder() { return this.clearCofactor().is0(); } // check if P is small order\n isTorsionFree() {\n let p = this.mul(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n toAffine() {\n const { ex: x, ey: y, ez: z } = this; // (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy)\n if (this.is0())\n return { x: 0n, y: 0n }; // fast-path for zero point\n const iz = invert(z); // z^-1: invert z\n if (mod(z * iz) !== 1n)\n err('invalid inverse'); // (z * z^-1) must be 1, otherwise bad math\n return { x: mod(x * iz), y: mod(y * iz) }; // x = x*z^-1; y = y*z^-1\n }\n toRawBytes() {\n const { x, y } = this.toAffine(); // convert to affine 2d point\n const b = n2b_32LE(y); // encode number to 32 bytes\n b[31] |= x & 1n ? 0x80 : 0; // store sign in first LE byte\n return b;\n }\n toHex() { return b2h(this.toRawBytes()); } // encode to hex string\n}\nPoint.BASE = new Point(Gx, Gy, 1n, mod(Gx * Gy)); // Generator / Base point\nPoint.ZERO = new Point(0n, 1n, 1n, 0n); // Identity / Zero point\nconst { BASE: G, ZERO: I } = Point; // Generator, identity points\nconst padh = (num, pad) => num.toString(16).padStart(pad, '0');\nconst b2h = (b) => Array.from(b).map(e => padh(e, 2)).join(''); // bytes to hex\nconst h2b = (hex) => {\n const l = hex.length; // error if not string,\n if (!str(hex) || l % 2)\n err('hex invalid 1'); // or has odd length like 3, 5.\n const arr = u8n(l / 2); // create result array\n for (let i = 0; i < arr.length; i++) {\n const j = i * 2;\n const h = hex.slice(j, j + 2); // hexByte. slice is faster than substr\n const b = Number.parseInt(h, 16); // byte, created from string part\n if (Number.isNaN(b) || b < 0)\n err('hex invalid 2'); // byte must be valid 0 <= byte < 256\n arr[i] = b;\n }\n return arr;\n};\nconst n2b_32LE = (num) => h2b(padh(num, 32 * 2)).reverse(); // number to bytes LE\nconst b2n_LE = (b) => BigInt('0x' + b2h(u8n(au8(b)).reverse())); // bytes LE to num\nconst concatB = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + au8(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\nconst invert = (num, md = P) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md); // no neg exponent for now\n let a = mod(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) { // uses euclidean gcd algorithm\n const q = b / a, r = b % a; // not constant-time\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? mod(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst pow2 = (x, power) => {\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\nconst uvRatio = (u, v) => {\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n)\n x = mod(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\nconst modL_LE = (hash) => mod(b2n_LE(hash), N); // modulo L; but little-endian\nlet _shaS;\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => // Sync SHA512, not set by default\n typeof _shaS === 'function' ? _shaS(...m) : err('etc.sha512Sync not set');\nconst hash2extK = (hashed) => {\n const head = hashed.slice(0, 32); // slice creates a copy, unlike subarray\n head[0] &= 248; // Clamp bits: 0b1111_1000,\n head[31] &= 127; // 0b0111_1111,\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(32, 64); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.mul(scalar); // public key point\n const pointBytes = point.toRawBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, 32)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, 32)));\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then(p => p.pointBytes);\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nfunction hashFinish(asynchronous, res) {\n if (asynchronous)\n return sha512a(res.hashable).then(res.finish);\n return res.finish(sha512s(res.hashable));\n}\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.mul(r).toRawBytes(); // R = [r]B\n const hashable = concatB(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const S = mod(r + modL_LE(hashed) * s, N); // S = (r + k * s) mod L; 0 <= s < l\n return au8(concatB(R, n2b_32LE(S)), 64); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key async\n const e = await getExtendedPublicKeyAsync(privKey); // pub,prfx\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(true, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst sign = (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key sync\n const e = getExtendedPublicKey(privKey); // pub,prfx\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(false, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst _verify = (sig, msg, pub) => {\n msg = toU8(msg); // Message hex str/Bytes\n sig = toU8(sig, 64); // Signature hex str/Bytes, must be 64 bytes\n const A = Point.fromHex(pub, false); // public key A decoded\n const R = Point.fromHex(sig.slice(0, 32), false); // 0 <= R < 2^256: ZIP215 R can be >= P\n const s = b2n_LE(sig.slice(32, 64)); // Decode second half as an integer S\n const SB = G.mul(s, false); // in the range 0 <= s < L\n const hashable = concatB(R.toRawBytes(), A.toRawBytes(), msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.mul(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n// RFC8032 5.1.7: verification async, sync\nconst verifyAsync = async (s, m, p) => hashFinish(true, _verify(s, m, p));\nconst verify = (s, m, p) => hashFinish(false, _verify(s, m, p));\nconst cr = () => // We support: 1) browsers 2) node.js 19+\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\nconst etc = {\n bytesToHex: b2h, hexToBytes: h2b, concatBytes: concatB,\n mod, invert,\n randomBytes: (len) => {\n const crypto = cr(); // Can be shimmed in node.js <= 18 to prevent error:\n // import { webcrypto } from 'node:crypto';\n // if (!globalThis.crypto) globalThis.crypto = webcrypto;\n if (!crypto)\n err('crypto.getRandomValues must be defined');\n return crypto.getRandomValues(u8n(len));\n },\n sha512Async: async (...messages) => {\n const crypto = cr();\n if (!crypto)\n err('crypto.subtle or etc.sha512Async must be defined');\n const m = concatB(...messages);\n return u8n(await crypto.subtle.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined, // Actual logic below\n};\nObject.defineProperties(etc, { sha512Sync: {\n configurable: false, get() { return _shaS; }, set(f) { if (!_shaS)\n _shaS = f; },\n } });\nconst utils = {\n getExtendedPublicKeyAsync, getExtendedPublicKey,\n randomPrivateKey: () => etc.randomBytes(32),\n precompute(w = 8, p = G) { p.multiply(3n); return p; }, // no-op\n};\nconst W = 8; // Precomputes-related code. W = window size\nconst precompute = () => {\n const points = []; // 10x sign(), 2x verify(). To achieve this,\n const windows = 256 / W + 1; // app needs to spend 40ms+ to calculate\n let p = G, b = p; // a lot of points related to base point G.\n for (let w = 0; w < windows; w++) { // Points are stored in array and used\n b = p; // any time Gx multiplication is done.\n points.push(b); // They consume 16-32 MiB of RAM.\n for (let i = 1; i < 2 ** (W - 1); i++) {\n b = b.add(p);\n points.push(b);\n }\n p = b.double(); // Precomputes don't speed-up getSharedKey,\n } // which multiplies user point by scalar,\n return points; // when precomputes are using base point\n};\nconst wNAF = (n) => {\n // Compared to other point mult methods,\n const comp = Gpows || (Gpows = precompute()); // stores 2x less points using subtraction\n const neg = (cnd, p) => { let n = p.negate(); return cnd ? n : p; }; // negate\n let p = I, f = G; // f must be G, or could become I in the end\n const windows = 1 + 256 / W; // W=8 17 windows\n const wsize = 2 ** (W - 1); // W=8 128 window size\n const mask = BigInt(2 ** W - 1); // W=8 will create mask 0b11111111\n const maxNum = 2 ** W; // W=8 256\n const shiftBy = BigInt(W); // W=8 8\n for (let w = 0; w < windows; w++) {\n const off = w * wsize;\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > wsize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off1 = off, off2 = off + Math.abs(wbits) - 1; // offsets, evaluate both\n const cnd1 = w % 2 !== 0, cnd2 = wbits < 0; // conditions, evaluate both\n if (wbits === 0) {\n f = f.add(neg(cnd1, comp[off1])); // bits are 0: add garbage to fake point\n }\n else { // ^ can't add off2, off2 = I\n p = p.add(neg(cnd2, comp[off2])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n}; // !! you can disable precomputes by commenting-out call of the wNAF() inside Point#mul()\nexport { getPublicKey, getPublicKeyAsync, sign, verify, // Remove the export to easily use in REPL\nsignAsync, verifyAsync, CURVE, etc, utils, Point as ExtendedPoint }; // envs like browser console\n","export const webcrypto = globalThis.crypto\n\n/**\n * Secure PRNG - Random bytes from webcrypto\n *\n * @param {number} length\n */\nexport function randomBytes(length = 32) {\n if (globalThis.crypto) {\n return globalThis.crypto.getRandomValues(new Uint8Array(length))\n } else {\n throw new Error(\"The environment doesn't have randomBytes function\")\n }\n}\n","import { DIDKey } from 'iso-did/key'\nimport { equals, u8 } from 'iso-base/utils'\n\n/**\n * Create web crypto params for ECDSA.\n *\n * @param {import(\"iso-did/types\").SignatureAlgorithm} alg\n * @returns {{name: 'ECDSA', namedCurve: 'P-256' | 'P-384' | 'P-521', hash: 'SHA-256' | 'SHA-384' | 'SHA-512'}}\n */\nexport function createEcdsaParams(alg) {\n switch (alg) {\n case 'ES256': {\n return {\n name: 'ECDSA',\n namedCurve: 'P-256',\n hash: 'SHA-256',\n }\n }\n case 'ES384': {\n return {\n name: 'ECDSA',\n namedCurve: 'P-384',\n hash: 'SHA-384',\n }\n }\n case 'ES512': {\n return {\n name: 'ECDSA',\n namedCurve: 'P-521',\n hash: 'SHA-512',\n }\n }\n\n default: {\n throw new TypeError(`Unsupported algorithm ${alg}`)\n }\n }\n}\n\n/**\n *\n * @param {import('iso-did/types').KeyType} type\n * @param {BufferSource} publicKey\n * @param {import('iso-did/types').VerifiableDID} [did]\n */\nexport function didKeyOrVerifiableDID(type, publicKey, did) {\n /** @type {import('iso-did/types').VerifiableDID} */\n let _did = DIDKey.fromPublicKey(type, u8(publicKey))\n if (did) {\n if (!equals(did.publicKey, _did.publicKey)) {\n throw new Error('Public key mismatch')\n }\n\n if (did.alg !== _did.alg) {\n throw new Error('Algorithm mismatch')\n }\n\n if (did.type !== _did.type) {\n throw new Error('Key type mismatch')\n }\n _did = did\n }\n\n return _did\n}\n","/* eslint-disable unicorn/numeric-separators-style */\nimport { getPublicKeyAsync, signAsync, utils } from '@noble/ed25519'\nimport { webcrypto } from 'iso-base/crypto'\nimport { base64pad } from 'iso-base/rfc4648'\nimport { tag, untag } from 'iso-base/varint'\nimport { DIDKey } from 'iso-did/key'\nimport { didKeyOrVerifiableDID } from '../utils.js'\n\n// @ts-ignore\nif (!globalThis.crypto) globalThis.crypto = webcrypto\n\n/**\n * @typedef {import('../types.js').ISigner<string>} ISigner\n */\n\n/**\n *\n * @param {import('iso-did/types').VerifiableDID} did\n */\nfunction checkDid(did) {\n if (did.type !== 'Ed25519') {\n throw new TypeError(`Unsupported key type ${did.type}`)\n }\n if (did.alg !== 'EdDSA') {\n throw new TypeError(`Unsupported algorithm ${did.alg}`)\n }\n}\n\n/**\n * EdDSA signer\n *\n * @implements {ISigner}\n */\nexport class EdDSASigner {\n /** @type {Extract<import('iso-did/types').SignatureAlgorithm, \"EdDSA\">} */\n static alg = 'EdDSA'\n\n /** @type {Extract<import('iso-did/types').KeyType, \"Ed25519\">} */\n static type = 'Ed25519'\n\n static code = 0x1300\n\n /** @type {Uint8Array} */\n #privateKey\n\n /**\n * @param {import('iso-did/types').VerifiableDID} did\n * @param {Uint8Array} privateKey\n */\n constructor(did, privateKey) {\n checkDid(did)\n this.did = did.did\n this.url = did.url\n this.type = did.type\n this.publicKey = did.publicKey\n this.alg = did.alg\n this.document = did.document\n this.#privateKey = privateKey\n this.didKey = did.didKey\n }\n\n /**\n * Generate a new signer\n *\n * @param {Uint8Array} [bytes]\n */\n static async generate(bytes) {\n const privateKey = bytes || utils.randomPrivateKey()\n const publicKey = await getPublicKeyAsync(privateKey)\n return new EdDSASigner(\n DIDKey.fromPublicKey('Ed25519', publicKey),\n privateKey\n )\n }\n\n /**\n * Import a signer from a encoded string\n *\n * @param {string} encoded\n * @param {import('iso-did/types').VerifiableDID} [did]\n */\n static async import(encoded, did) {\n const privateKey = untag(EdDSASigner.code, base64pad.decode(encoded))\n const publicKey = await getPublicKeyAsync(privateKey)\n\n return new EdDSASigner(\n didKeyOrVerifiableDID('Ed25519', publicKey, did),\n privateKey\n )\n }\n\n /**\n * Sign a message\n *\n * @param {Uint8Array} message\n */\n async sign(message) {\n return signAsync(message, this.#privateKey)\n }\n\n /**\n * Export the signer as a encoded string\n */\n export() {\n return base64pad.encode(tag(EdDSASigner.code, this.#privateKey))\n }\n\n toString() {\n return this.url.didUrl\n }\n}\n","import { UCAN } from '@fission-codes/ucan'\nimport { encodeBlock } from '@wovin/core'\nimport { type StorageConnector } from '@wovin/core/pubsub'\nimport { Logger } from 'besonders-logger'\nimport { DID } from 'iso-did'\nimport { EdDSASigner } from 'iso-signatures/signers/eddsa.js'\nimport { ISigner } from 'iso-signatures/types'\nimport { CID } from 'multiformats'\nimport { retrieveCar } from './retrieve'\nimport { storeCar } from './store'\n\nconst { WARN, LOG, DEBUG, VERBOSE, ERROR } = Logger.setup(Logger.INFO) // eslint-disable-line no-unused-vars\n\nexport * from './retrieve'\nexport * from './store'\n\nexport class UcanStoreProxyConnector implements StorageConnector {\n\tstatic async init({ url, issuerKey, ucanList }: {\n\t\turl: string\n\t\tissuerKey: ISigner<any>\n\t\tucanList?: UCAN[]\n\t}) {\n\t\tDEBUG(`Init UcanStoreProxyConnector:`, { url, issuerKey, ucanList })\n\t\tconst serviceDID = `did:web:${encodeURIComponent(new URL(url).host)}` as const // ? path\n\t\tconst tmpKey = await EdDSASigner.generate()\n\t\tconst selfAuthUcan = await UCAN.create({\n\t\t\tissuer: issuerKey,\n\t\t\t// TODO not sure how to do this\n\t\t\taudience: tmpKey.did,\n\t\t\t// ? capability format - https://github.com/ucan-wg/spec#326-capabilities--attenuation\n\t\t\tcapabilities: {\n\t\t\t\t[`${serviceDID}`]: {\n\t\t\t\t\t'storage/read': [{}],\n\t\t\t\t\t'storage/store': [{}],\n\t\t\t\t\t'storage/pin': [{}],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tDEBUG(`UCAN for proxy`, { selfAuthUcan, encoded: selfAuthUcan.toString() })\n\t\treturn new UcanStoreProxyConnector(url, issuerKey, tmpKey, [selfAuthUcan]) // TODO: ucanList\n\t}\n\n\tconstructor(\n\t\tpublic baseUrl: string,\n\t\tprivate issuerKey: ISigner<any>,\n\t\tprivate tmpKey: ISigner<any>,\n\t\tprivate ucanList: UCAN[] = [],\n\t\tpublic gatewayBaseUrl: string = baseUrl, // TODO: query baseURL from ucan proxy?\n\t) {\n\t}\n\n\tget isSetup() {\n\t\treturn true\n\t}\n\tget isValid() {\n\t\treturn true // TODO test ucan etc\n\t}\n\n\tasync storeCar(car: Blob) {\n\t\tconst baseUrl = new URL(this.baseUrl)\n\t\tconst serviceDID = `did:web:${encodeURIComponent(baseUrl.host)}` as const // ? path\n\t\tconst ucan = this.ucanList[0] // HACK how to select ucan?\n\t\tconst encodedProofs = [ucan.toString()]\n\t\tconst proofCIDs = [ucan.cid]\n\t\tconst requestUcan = await UCAN.create({\n\t\t\tissuer: this.tmpKey,\n\t\t\taudience: serviceDID,\n\t\t\t// ? capability format - https://github.com/ucan-wg/spec#326-capabilities--attenuation\n\t\t\tcapabilities: {\n\t\t\t\t[`${serviceDID}`]: {\n\t\t\t\t\t// 'storage/read': [{}],\n\t\t\t\t\t'storage/store': [{}],\n\t\t\t\t\t// 'storage/pin': [{}],\n\t\t\t\t},\n\t\t\t},\n\t\t\tproofs: proofCIDs,\n\t\t})\n\t\treturn storeCar(this.baseUrl, car, requestUcan, { ucans: encodedProofs })\n\t}\n\n\tasync retrieveCar(cid: CID) {\n\t\tif (!this.gatewayBaseUrl) throw new Error(`gatewayBaseUrl required for retrieveCar`)\n\t\treturn retrieveCar(this.gatewayBaseUrl, cid)\n\t}\n}\n"],"mappings":"kOAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAMA,SAASC,GAAMC,EAAU,CACvB,GAAIA,EAAS,QAAU,IAAO,MAAM,IAAI,UAAU,mBAAmB,EAErE,QADIC,EAAW,IAAI,WAAW,GAAG,EACxBC,EAAI,EAAGA,EAAID,EAAS,OAAQC,IACnCD,EAASC,CAAC,EAAI,IAEhB,QAASC,EAAI,EAAGA,EAAIH,EAAS,OAAQG,IAAK,CACxC,IAAIC,EAAIJ,EAAS,OAAOG,CAAC,EACrBE,EAAKD,EAAE,WAAW,CAAC,EACvB,GAAIH,EAASI,CAAE,IAAM,IAAO,MAAM,IAAI,UAAUD,EAAI,eAAe,EACnEH,EAASI,CAAE,EAAIF,CACjB,CACA,IAAIG,EAAON,EAAS,OAChBO,EAASP,EAAS,OAAO,CAAC,EAC1BQ,EAAS,KAAK,IAAIF,CAAI,EAAI,KAAK,IAAI,GAAG,EACtCG,EAAU,KAAK,IAAI,GAAG,EAAI,KAAK,IAAIH,CAAI,EAC3C,SAASI,EAAQC,EAAQ,CAOvB,GANIA,aAAkB,aACX,YAAY,OAAOA,CAAM,EAClCA,EAAS,IAAI,WAAWA,EAAO,OAAQA,EAAO,WAAYA,EAAO,UAAU,EAClE,MAAM,QAAQA,CAAM,IAC7BA,EAAS,WAAW,KAAKA,CAAM,IAE7B,EAAEA,aAAkB,YAAe,MAAM,IAAI,UAAU,qBAAqB,EAChF,GAAIA,EAAO,SAAW,EAAK,MAAO,GAMlC,QAJIC,EAAS,EACTC,EAAS,EACTC,EAAS,EACTC,EAAOJ,EAAO,OACXG,IAAWC,GAAQJ,EAAOG,CAAM,IAAM,GAC3CA,IACAF,IAMF,QAHII,GAASD,EAAOD,GAAUL,EAAU,IAAO,EAC3CQ,EAAM,IAAI,WAAWD,CAAI,EAEtBF,IAAWC,GAAM,CAItB,QAHIG,EAAQP,EAAOG,CAAM,EAErBX,EAAI,EACCgB,EAAMH,EAAO,GAAIE,IAAU,GAAKf,EAAIU,IAAYM,IAAQ,GAAKA,IAAOhB,IAC3Ee,GAAU,IAAMD,EAAIE,CAAG,IAAO,EAC9BF,EAAIE,CAAG,EAAKD,EAAQZ,IAAU,EAC9BY,EAASA,EAAQZ,IAAU,EAE7B,GAAIY,IAAU,EAAK,MAAM,IAAI,MAAM,gBAAgB,EACnDL,EAASV,EACTW,GACF,CAGA,QADIM,EAAMJ,EAAOH,EACVO,IAAQJ,GAAQC,EAAIG,CAAG,IAAM,GAClCA,IAIF,QADIC,EAAMd,EAAO,OAAOK,CAAM,EACvBQ,EAAMJ,EAAM,EAAEI,EAAOC,GAAOrB,EAAS,OAAOiB,EAAIG,CAAG,CAAC,EAC3D,OAAOC,CACT,CACA,SAASC,EAAcX,EAAQ,CAC7B,GAAI,OAAOA,GAAW,SAAY,MAAM,IAAI,UAAU,iBAAiB,EACvE,GAAIA,EAAO,SAAW,EAAK,OAAO,IAAI,WAKtC,QAJIY,EAAM,EAENX,EAAS,EACTC,EAAS,EACNF,EAAOY,CAAG,IAAMhB,GACrBK,IACAW,IAMF,QAHIP,GAAUL,EAAO,OAASY,GAAOf,EAAU,IAAO,EAClDgB,EAAO,IAAI,WAAWR,CAAI,EAEvBL,EAAOY,CAAG,GAAG,CAElB,IAAIL,EAAQjB,EAASU,EAAO,WAAWY,CAAG,CAAC,EAE3C,GAAIL,IAAU,IAAO,OAErB,QADIf,EAAI,EACCsB,EAAMT,EAAO,GAAIE,IAAU,GAAKf,EAAIU,IAAYY,IAAQ,GAAKA,IAAOtB,IAC3Ee,GAAUZ,EAAOkB,EAAKC,CAAG,IAAO,EAChCD,EAAKC,CAAG,EAAKP,EAAQ,MAAS,EAC9BA,EAASA,EAAQ,MAAS,EAE5B,GAAIA,IAAU,EAAK,MAAM,IAAI,MAAM,gBAAgB,EACnDL,EAASV,EACToB,GACF,CAGA,QADIG,EAAMV,EAAOH,EACVa,IAAQV,GAAQQ,EAAKE,CAAG,IAAM,GACnCA,IAIF,QAFIC,EAAM,IAAI,WAAWf,GAAUI,EAAOU,EAAI,EAC1CxB,EAAIU,EACDc,IAAQV,GACbW,EAAIzB,GAAG,EAAIsB,EAAKE,GAAK,EAEvB,OAAOC,CACT,CACA,SAASC,EAAQC,EAAQ,CACvB,IAAIC,EAASR,EAAaO,CAAM,EAChC,GAAIC,EAAU,OAAOA,EACrB,MAAM,IAAI,MAAM,WAAaxB,EAAO,YAAY,CAClD,CACA,MAAO,CACL,OAAQI,EACR,aAAcY,EACd,OAAQM,CACV,CACF,CACA9B,GAAO,QAAUC,KClHjB,IAAMgC,GAA4C,CAChD,YACA,aACA,oBACA,aACA,cACA,aACA,cACA,eACA,eACA,gBACA,gBACF,EAGMC,GAAwC,CAC5C,WACA,YACA,iBACA,oBACA,yBACA,gBACA,aACA,QACA,SACA,OACA,SACA,SACA,OACA,QACA,MACA,MACA,UACA,UACA,UACA,cACA,oBACA,WACA,UACA,MACA,WACA,kBACA,cACA,MACA,GAAGD,EACL,EAWA,SAASE,GAAiBC,EAAM,CAC9B,OAAOH,GAAoB,SAA4CG,CAAK,CAC9E,CAMA,SAASC,GAAiBD,EAAM,CAC9B,OAAOF,GAAgB,SAAwCE,CAAK,CACtE,CAMO,SAASE,GAAcC,EAAO,CACnC,IAAMC,EAAiB,SAAS,KAAKD,CAAK,EAAE,MAAM,EAAG,EAAE,EAEvD,GAAIF,GAAiBG,CAAc,EACjC,OAAOA,CAEX,CAMO,SAASC,GAAeC,EAAM,CAKnC,SAASC,EAAGJ,EAAO,CACjB,OAAOD,GAAcC,CAAK,IAAMG,CAClC,CACA,OAAOC,CACT,CAQO,SAASC,GAAaL,EAAO,CAClC,OAAOJ,GAAiBG,GAAcC,CAAK,CAAC,CAC9C,CAKO,IAAMM,GAAgBJ,GAAe,aAAa,EAQlD,SAASK,EAAeP,EAAO,CACpC,OAAOK,GAAaL,CAAK,GAAKM,GAAcN,CAAK,CACnD,CAOO,SAASQ,EAAGC,EAAK,CACtB,OAAO,YAAY,OAAOA,CAAG,EACzB,IAAI,WAAWA,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,EACzD,IAAI,WAAWA,CAAG,CACxB,CAQO,SAASC,GAAID,EAAKE,EAAW,OAAQ,CAC1C,OAAI,YAAY,OAAOF,CAAG,EACjB,WAAW,OAAO,KAAKA,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,EAGtE,OAAOA,GAAQ,SACV,WAAW,OAAO,KAAKA,EAAKE,CAAQ,EAGtC,WAAW,OAAO,KAAKF,CAAG,CACnC,CAQO,SAASG,GAAOC,EAAQC,EAAQ,CAChCA,IACHA,EAASD,EAAO,OAAO,CAACE,EAAKC,IAASD,EAAMC,EAAK,OAAQ,CAAC,GAG5D,IAAMC,EAAS,IAAI,WAAWH,CAAM,EAChCI,EAAS,EAEb,QAAWT,KAAOI,EAChBI,EAAO,IAAIR,EAAKS,CAAM,EACtBA,GAAUT,EAAI,OAGhB,OAAOQ,CACT,CAQO,SAASE,GAAOC,EAAIC,EAAI,CAC7B,GAAID,IAAOC,EAAI,MAAO,GACtB,GAAID,EAAG,aAAeC,EAAG,WACvB,MAAO,GAGT,QAASC,EAAK,EAAGA,EAAKF,EAAG,WAAYE,IACnC,GAAIF,EAAGE,CAAE,IAAMD,EAAGC,CAAE,EAClB,MAAO,GAIX,MAAO,EACT,CC7LA,IAAMC,GAAc,IAAI,YAClBC,GAAc,IAAI,YAIXC,EAAO,CAClB,OAAOC,EAAO,CACZ,OAAI,OAAOA,GAAU,SACZA,EAEL,WAAW,OACNC,GAAID,CAAK,EAAE,SAAS,MAAM,EAG5BH,GAAY,OAAOG,CAAK,CACjC,EACA,OAAOA,EAAO,CACZ,OAAIE,EAAeF,CAAK,EACfG,EAAGH,CAAK,EAEb,WAAW,OACNG,EAAGF,GAAID,CAAK,CAAC,EAEfF,GAAY,OAAOE,CAAK,CACjC,CACF,ECdA,IAAMI,GAAS,CAACC,EAAQC,EAAUC,IAAgB,CAGhD,IAAMC,EAAQ,CAAC,EACf,QAASC,EAAI,EAAGA,EAAIH,EAAS,OAAQ,EAAEG,EACrCD,EAAMF,EAASG,CAAC,CAAC,EAAIA,EAIvB,IAAIC,EAAML,EAAO,OACjB,KAAOA,EAAOK,EAAM,CAAC,IAAM,KACzB,EAAEA,EAIJ,IAAMC,EAAM,IAAI,WAAaD,EAAMH,EAAe,EAAK,CAAC,EAGpDK,EAAO,EACPC,EAAS,EACTC,EAAU,EACd,QAASL,EAAI,EAAGA,EAAIC,EAAK,EAAED,EAAG,CAE5B,IAAMM,EAAQP,EAAMH,EAAOI,CAAC,CAAC,EAC7B,GAAIM,IAAU,OACZ,MAAM,IAAI,YAAY,qBAAuBV,EAAOI,CAAC,CAAC,EAIxDI,EAAUA,GAAUN,EAAeQ,EACnCH,GAAQL,EAGJK,GAAQ,IACVA,GAAQ,EACRD,EAAIG,GAAS,EAAI,IAAQD,GAAUD,EAEvC,CAGA,GAAIA,GAAQL,GAAe,IAAQM,GAAW,EAAID,EAChD,MAAM,IAAI,YAAY,wBAAwB,EAGhD,OAAOD,CACT,EASMK,GAAS,CAACC,EAAMX,EAAUC,EAAaW,IAAQ,CACnD,IAAMC,GAAQ,GAAKZ,GAAe,EAC9BI,EAAM,GAENC,EAAO,EACPC,EAAS,EACb,QAASJ,EAAI,EAAGA,EAAIQ,EAAK,OAAQ,EAAER,EAMjC,IAJAI,EAAUA,GAAU,EAAKI,EAAKR,CAAC,EAC/BG,GAAQ,EAGDA,EAAOL,GACZK,GAAQL,EACRI,GAAOL,EAASa,EAAQN,GAAUD,CAAK,EAU3C,GALIA,IACFD,GAAOL,EAASa,EAAQN,GAAWN,EAAcK,CAAM,GAIrDM,EACF,KAAQP,EAAI,OAASJ,EAAe,GAClCI,GAAO,IAIX,OAAOA,CACT,EAGMS,GAAQ,CACZ,MAAO,CAAC,EAAG,IAAI,EACf,MAAO,CAAC,EAAG,UAAU,EACrB,IAAK,CAAC,EAAG,kBAAkB,EAC3B,OAAQ,CAAC,EAAG,kBAAkB,EAC9B,OAAQ,CAAC,EAAG,kCAAkC,EAC9C,UAAW,CAAC,EAAG,kCAAkC,EACjD,OAAQ,CACN,EACA,kEACF,EACA,UAAW,CACT,EACA,kEACF,CACF,EAUO,SAASC,EAAQC,EAAMC,EAAU,GAAOC,EAAW,CACxD,GAAM,CAACZ,EAAMN,CAAQ,EAAIc,GAAME,CAAI,EACnC,MAAO,CACL,OAAOG,EAAOP,EAAK,CACjB,OAAI,OAAOO,GAAU,WACfD,IACFC,EAAQD,EAAUC,CAAK,GAEzBA,EAAQC,EAAK,OAAOD,CAAK,GAGpBT,GAAOW,EAAGF,CAAK,EAAGnB,EAAUM,EAAMM,GAAOK,CAAO,CACzD,EACA,OAAOE,EAAO,CACZ,OAAIG,EAAeH,CAAK,IACtBA,EAAQC,EAAK,OAAOD,CAAK,GAGvBD,IACFC,EAAQD,EAAUC,CAAK,GAGlBrB,GAAOqB,EAAOnB,EAAUM,CAAI,CACrC,CACF,CACF,CAKO,IAAMiB,GAAMR,EAAQ,MAAO,GAAOS,GAAQA,EAAI,YAAY,CAAC,EACrDC,GAAQV,EAAQ,OAAO,EACvBW,GAAQX,EAAQ,OAAO,EACvBY,GAASZ,EAAQ,QAAQ,EACzBa,GAASb,EAAQ,QAAQ,EACzBc,GAAYd,EAAQ,YAAa,EAAI,EACrCe,GAASf,EAAQ,QAAQ,EACzBgB,GAAYhB,EAAQ,SAAU,EAAI,EAMlCiB,EAAYjB,EAAQ,YAAa,EAAK,EC1KnD,SAASkB,GAAKC,EAAyB,CACrC,MAAO,OAAMC,GAAQ,IAAI,WAAW,MAAM,OAAO,OAAO,OAAOD,EAAMC,CAAI,CAAC,CAC5E,CAEO,IAAMC,GAASC,GAAK,CACzB,KAAM,WACN,KAAM,GACN,OAAQJ,GAAI,SAAS,EACtB,EAEYK,GAASD,GAAK,CACzB,KAAM,WACN,KAAM,GACN,OAAQJ,GAAI,SAAS,EACtB,ECdM,IAAMM,GAAO,oGCuOJC,IAAa,CAC3B,IAAMC,EAA0C,IAAIC,IACpD,OAAcC,SAAAA,EAAmBC,EAAO,CAAA,GAAI,CAAA,IAAAC,EAAA,SAAAC,EAAA,CAAA,GAAAC,EAAA,OAAAD,EAG1C,IAAME,EAASP,EAAMQ,IAAIN,EAAOO,MAAM,EAAC,OACnCF,IAAWG,OAAkBH,EACZJ,QAAAA,QAAAA,EAAO,CAAE,EAAA,KAAA,SAAxBQ,EAAM,CAAA,IAAAC,EACZ,QAAIA,EAAAD,EAAOE,wBAAqB,KAAA,OAA5BD,EAA8BE,SAAU,YAC1Cd,EAAMe,IAAIb,EAAOO,OAAQE,CAAM,EAE1BA,CAAM,CAAA,CAAA,EAT6B,IAAAP,IAAA,IAAAE,EAS7BU,EAAA,UAAA,CAAA,GARTd,EAAOe,QAAUf,EAAOe,OAAO,UAAU,IAAM,OAAM,OAAA,QAAA,QAAed,EAAO,CAAE,EAAA,KAAA,SAAAe,EAAA,CAAA,OAAAZ,EAAA,EAAAY,CAAA,CAAA,CAAA,EAAA,EAAA,OAAA,QAAA,QAAAF,GAAAA,EAAA,KAAAA,EAAA,KAAAZ,CAAA,EAAAA,EAAAY,CAAA,CAAA,QASlFG,EAAA,CAAA,OAAA,QAAA,OAAAA,CAAA,CAAA,CAAA,CACH,CAEgB,SAAAC,GAAQlB,EAAmBC,EAAwB,CACjE,OAAOA,EAAO,CAChB,CAEA,IAAMkB,GAAc,sBACdC,GAA+B,qBAAAD,EAAAA,IAC/BE,GAAS,cACTC,GAAY,OAAOF,EAAe,QAAAA,EAAAA,MAClCG,GAAa,mBACbC,GAAQ,IAAID,EAAe,KAAAA,EAAAA,IAC3BE,GAAc,KAAAD,EAAAA,MACdE,GAAO,aACPC,GAAQ,cACRC,GAAW,SACXC,GAAc,IAAIC,OAAO,QAAQT,EAAU,IAAAC,EAAAA,GAAYG,EAAM,GAAGC,EAAO,GAAAC,EAAAA,GAAQC,EAAQ,GAAG,EAQ1F,SAAUG,GAAMxB,EAAc,CAClC,GAAIA,IAAW,IAAM,CAACA,EAAQ,OAAO,KACrC,IAAMyB,EAAWzB,EAAO0B,MAAMJ,EAAW,EACzC,GAAIG,EAAU,CACZ,IAAME,EAAmB,CACvBC,IAAY,OAAAH,EAAS,CAAC,CAAC,IAAIA,EAAS,CAAC,CAAG,GACxCI,OAAQJ,EAAS,CAAC,EAClBK,GAAIL,EAAS,CAAC,EACdzB,OAAAA,GAEF,GAAIyB,EAAS,CAAC,EAAG,CACf,IAAMjB,EAASiB,EAAS,CAAC,EAAEM,MAAM,CAAC,EAAEC,MAAM,GAAG,EAC7CL,EAAMnB,OAAS,CAAA,EACf,QAAWyB,KAAKzB,EAAQ,CACtB,IAAM0B,EAAKD,EAAED,MAAM,GAAG,EACtBL,EAAMnB,OAAO0B,EAAG,CAAC,CAAC,EAAIA,EAAG,CAAC,CAC3B,CACF,CACD,OAAIT,EAAS,CAAC,IAAGE,EAAMQ,KAAOV,EAAS,CAAC,GACpCA,EAAS,CAAC,IAAGE,EAAMS,MAAQX,EAAS,CAAC,EAAEM,MAAM,CAAC,GAC9CN,EAAS,CAAC,IAAGE,EAAMU,SAAWZ,EAAS,CAAC,EAAEM,MAAM,CAAC,GAC9CJ,CACR,CACD,OAAO,IACT,CAEA,IAAMW,EAAoC,CACxClC,sBAAuB,CAAA,EACvBmC,YAAa,KACbC,oBAAqB,CAAA,GAGjB,SAAUC,GAAmB/C,EAA0B,CAC3D,OAAA,SAAckC,EAAKnC,EAAQiD,EAAQ,CAAA,GAAI,CAAA,OACjC,QAAA,QAAAC,GAAA,UAAA,CAAA,OACgBjD,QAAAA,QAAAA,EAAQkC,EAAKnC,EAAQiD,CAAQ,CAAC,EAAA,KAAA,SAA1CE,EAAG,CACT,MAAO,CACL,GAAGN,EACHlC,sBAAuB,CAAEyC,YAAa,2BACtCN,YAAaK,EAEf,CAAA,GACD,SAAQlC,EAAQ,CACf,MAAO,CACL,GAAG4B,EACHlC,sBAAuB,CACrBC,MAAO,WACPyC,QAASpC,EAAEqC,SAAQ,CACpB,GAEJ,CAAA,QACFrC,EAAA,CAAA,OAAA,QAAA,OAAAA,CAAA,CAAA,CAAA,CACH,KAaasC,OAAQ,CAInBC,YAAYC,EAA6B,CAAA,EAAIC,EAA2B,CAAA,EAAE,CAAA,KAHzDD,SAAQ,OAAA,KACR3D,MAAK,OAGpB,KAAK2D,SAAWA,EAChB,KAAK3D,MAAQ4D,EAAQ5D,QAAU,GAAOD,GAAa,EAAK6D,EAAQ5D,OAASoB,GACrEwC,EAAQC,iBACVC,OAAOC,KAAKH,EAAQC,eAAe,EAAEG,IAAKC,GAAc,CACjD,KAAKN,SAASM,CAAU,IAC3B,KAAKN,SAASM,CAAU,EAAIf,GAE1BU,EAAQC,gBAAiBI,CAAU,CAAC,EAG1C,CAAC,CAEL,CAEM9D,QAAQM,EAAgBmD,EAAgC,CAAA,EAAE,CAAA,GAAA,CAAA,IAAAM,EAQ7C,KAPXhE,EAAS+B,GAAMxB,CAAM,EAC3B,GAAIP,IAAW,KACb,OAAO,QAAA,QAAA,CACL,GAAG6C,EACHlC,sBAAuB,CAAEC,MAAO,YAAc,EAC/C,EAEH,IAAMqC,EAAWe,EAAKP,SAASzD,EAAOoC,MAAM,EAC5C,OAAKa,EAML,QAAA,QAAOe,EAAKlE,MAAME,EAAQ,IAAMiD,EAASjD,EAAOmC,IAAKnC,EAAc0D,EAAAA,CAAO,CAAC,CAAC,EALnE,QAAA,QAAA,CACL,GAAGb,EACHlC,sBAAuB,CAAEC,MAAO,sBAAwB,EACzD,QAGJK,EAAA,CAAA,OAAA,QAAA,OAAAA,CAAA,CAAA,CAAA,CACF,EC5WD,IAAMgD,GAAM,KAAK,IAAI,EAAG,EAAE,EAO1B,SAASC,GAAOC,EAAKC,EAAKC,EAAS,EAAG,CACpCD,EAAMA,GAAO,CAAC,EACd,IAAME,EAAYD,EAElB,KAAOF,GAAOF,IACZG,EAAIC,GAAQ,EAAKF,EAAM,IAAQ,IAC/BA,GAAO,IAET,KAAOA,EAAM,MACXC,EAAIC,GAAQ,EAAKF,EAAM,IAAQ,IAC/BA,KAAS,EAGX,OAAAC,EAAIC,CAAM,EAAIF,EAAM,EAGpBD,GAAO,MAAQG,EAASC,EAAY,EAE7BF,CACT,CAEA,IAAMG,GAAQ,IACRC,GAAS,IAOf,SAASC,GAAOC,EAAKL,EAAS,EAAG,CAC/B,IAAIM,EAAM,EACNC,EAAQ,EACRC,EAAUR,EACVS,EACAC,EAAQ,EACNC,EAAIN,EAAI,OAEd,EAAG,CACD,GAAIG,GAAWG,EACb,MAAAD,EAAQ,EACF,IAAI,WAAW,yBAAyB,EAEhDD,EAAIJ,EAAIG,GAAS,EACjBF,GACEC,EAAQ,IAAME,EAAIN,KAAWI,GAASE,EAAIN,IAAU,KAAK,IAAI,EAAGI,CAAK,EACvEA,GAAS,CACX,OAASE,GAAKP,IAEd,OAAAQ,EAAQF,EAAUR,EAEX,CAACM,EAAKI,CAAK,CACpB,CAEA,IAAME,GAAK,KAAK,IAAI,EAAG,CAAC,EAClBC,GAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,GAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,GAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,GAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,GAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,GAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,GAAK,KAAK,IAAI,EAAG,EAAE,EACnBC,GAAK,KAAK,IAAI,EAAG,EAAE,EAEnBC,GAAS,SAAgCC,EAAO,CACpD,OAAOA,EAAQV,GACX,EACAU,EAAQT,GACR,EACAS,EAAQR,GACR,EACAQ,EAAQP,GACR,EACAO,EAAQN,GACR,EACAM,EAAQL,GACR,EACAK,EAAQJ,GACR,EACAI,EAAQH,GACR,EACAG,EAAQF,GACR,EACA,EACN,EAEaG,EAAS,CACpB,OAAA1B,GACA,OAAAO,GACA,eAAgBiB,EAClB,EAMO,SAASG,EAAIC,EAAMf,EAAO,CAC/B,IAAMV,EAASuB,EAAO,eAAeE,CAAI,EACnCC,EAAc,IAAI,WAAWhB,EAAM,WAAaV,CAAM,EAC5D,OAAAuB,EAAO,OAAOE,EAAMC,EAAa,CAAC,EAClCA,EAAY,IAAIhB,EAAOV,CAAM,EAEtB0B,CACT,CAMO,SAASC,GAAMF,EAAMC,EAAa,CACvC,GAAM,CAACF,EAAKI,CAAI,EAAIL,EAAO,OAAOG,CAAW,EAC7C,GAAIF,IAAQC,EACV,OAAO,IAAI,WACTC,EAAY,OACZA,EAAY,WAAaE,EACzBF,EAAY,WAAaE,CAC3B,EAEA,MAAM,IAAI,MACR,qCAAqCH,EAAK,SACxC,EACF,CAAC,sBAAsBD,EAAI,SAAS,EAAE,CAAC,EACzC,CAEJ,CCnIA,IAAAK,GAAmB,WAOnB,IAAMC,GAAQ,CACZ,OAAQ,aACR,OAAQ,uCACR,UAAW,4DACb,EAQO,SAASC,GAAMC,EAAM,CAC1B,IAAMC,EAAWH,GAAME,CAAI,EAC3B,MAAO,CACL,OAAOE,EAAOC,EAAK,CACjB,OAAI,OAAOD,GAAU,WACnBA,EAAQE,EAAK,OAAOF,CAAK,MAEpB,GAAAG,SAAOJ,CAAQ,EAAE,OAAOK,EAAGJ,CAAK,CAAC,CAC1C,EACA,OAAOA,EAAO,CACZ,OAAIK,EAAeL,CAAK,IACtBA,EAAQE,EAAK,OAAOF,CAAK,MAGpB,GAAAG,SAAOJ,CAAQ,EAAE,OAAOC,CAAK,CACtC,CACF,CACF,CAEO,IAAMM,GAAST,GAAM,QAAQ,EACvBU,GAASV,GAAM,QAAQ,EACvBW,GAAYX,GAAM,WAAW,ECqBnC,SAASY,EAAaC,EAAK,CAChC,OAAOA,EAAI,CAAC,IAAM,GAAQA,EAAI,CAAC,IAAM,CACvC,CAKO,SAASC,EAAeD,EAAK,CAClC,OAAOA,EAAI,CAAC,IAAM,CACpB,CAOO,SAASE,EAASC,EAAa,CACpC,GAAI,CAACF,EAAeE,CAAW,EAC7B,MAAM,IAAI,MAAM,2DAA2D,EAG7E,IAAMC,EAAaD,EAAY,SAAS,CAAC,EACnCE,EAAID,EAAW,SAAS,EAAGA,EAAW,OAAS,CAAC,EAChDE,EAAIF,EAAW,SAASA,EAAW,OAAS,EAAGA,EAAW,MAAM,EAChEG,EAAM,IAAI,WAAWF,EAAE,OAAS,CAAC,EAGvC,OAAAE,EAAI,CAAC,EAAI,GAAKD,EAAEA,EAAE,OAAS,CAAC,EAAI,GAChCC,EAAI,IAAIF,EAAG,CAAC,EAELE,CACT,CCnGO,IAAMC,GAAqC,CAChD,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,UAAW,SACX,IAAK,OACP,EAgBO,IAAMC,EAAsC,CACjD,QAAS,IACT,IAAK,KACL,QAAS,KACT,QAAS,KACT,QAAS,KACT,UAAW,GACb,EAEaC,GAAsC,CACjD,IAAM,UACN,KAAQ,MACR,KAAQ,QACR,KAAQ,QACR,KAAQ,QACR,IAAM,WACR,EAYO,SAASC,EAAaC,EAAM,CAEjC,IAAMC,EAAyCC,GAAaF,CAAI,EAEhE,GAAI,CAACC,EACH,MAAM,IAAI,UAAU,wBAAwBD,CAAI,EAAE,EAEpD,OAAOC,CACT,CCjDO,IAAME,EAAN,MAAMC,CAAQ,CAKnB,YAAYC,EAAQ,CAClB,KAAK,IAAMA,EAAO,IAClB,KAAK,OAASA,EAAO,OACrB,KAAK,OAASA,EAAO,OACrB,KAAK,GAAKA,EAAO,GACjB,KAAK,KAAOA,EAAO,KACnB,KAAK,SAAWA,EAAO,SACvB,KAAK,MAAQA,EAAO,KACtB,CAOA,OAAO,WAAWC,EAAK,CACrB,IAAMC,EAAyCC,GAAMF,CAAG,EACxD,GAAIC,EACF,OAAO,IAAIH,EAAQG,CAAS,EAE5B,MAAM,IAAI,UAAU,gBAAgBD,CAAG,GAAG,CAE9C,CAEA,UAAW,CACT,OAAO,KAAK,MACd,CACF,EC/BA,IAAMG,GAAiB,WAQhB,SAASC,GAA2BC,EAAMC,EAAK,CACpD,OAAQD,EAAM,CACZ,KAAKE,EAAc,UAAW,CAC5B,GAAID,EAAI,SAAW,GACjB,MAAM,IAAI,WAAW,yCAAyC,EAEhE,OAAOA,CACT,CACA,KAAKC,EAAc,QAAS,CAC1B,GAAID,EAAI,SAAW,GACjB,MAAM,IAAI,WAAW,uCAAuC,EAE9D,OAAOA,CACT,CACA,KAAKC,EAAc,OAAO,EAAG,CAK3B,GAJOC,EAAeF,CAAG,IACvBA,EAASG,EAASH,CAAG,GAGhBI,EAAaJ,CAAG,GAAKA,EAAI,SAAW,GACzC,MAAM,IAAI,WAAW,oCAAoC,EAG3D,OAAOA,CACT,CACA,KAAKC,EAAc,OAAO,EAAG,CAI3B,GAHOC,EAAeF,CAAG,IACvBA,EAASG,EAASH,CAAG,GAEhBI,EAAaJ,CAAG,GAAKA,EAAI,SAAW,GACzC,MAAM,IAAI,WAAW,oCAAoC,EAE3D,OAAOA,CACT,CACA,KAAKC,EAAc,OAAO,EAAG,CAI3B,GAHOC,EAAeF,CAAG,IACvBA,EAASG,EAASH,CAAG,GAEhBI,EAAaJ,CAAG,GAAKA,EAAI,SAAW,GACzC,MAAM,IAAI,WAAW,oCAAoC,EAE3D,OAAOA,CACT,CAEA,KAAKC,EAAc,IAAK,CACtB,GAAID,EAAI,SAAW,KAAOA,EAAI,SAAW,IACvC,MAAM,IAAI,WACR,6EACF,EAEF,OAAOA,CACT,CACA,QACE,MAAM,IAAI,WACR,iDAAiDD,EAAK,SAAS,EAAE,CAAC,GACpE,CAEJ,CACF,CAOO,IAAMM,EAAN,MAAMC,UAAeC,CAAQ,CAOlC,YAAYC,EAAKC,EAAMT,EAAK,CAC1B,MAAMQ,CAAG,EACT,KAAK,KAAOC,EACZ,KAAK,UAAYT,EACjB,KAAK,KAAOC,EAAcQ,CAAI,EAC9B,KAAK,IAAMC,EAAaD,CAAI,EAC5B,KAAK,IAAMD,EACX,KAAK,OAASA,EAAI,GACpB,CAOA,OAAO,WAAWG,EAAW,CAC3B,IAAMH,EAAMD,EAAQ,WAAWI,CAAS,EAExC,GAAIH,EAAI,SAAW,MAAO,CACxB,IAAMI,EAAaC,EAAU,OAAOL,EAAI,EAAE,EACpC,CAACT,EAAMe,CAAI,EAAIC,EAAO,OAAOH,CAAU,EACvCZ,EAAMF,GAA2BC,EAAMa,EAAW,MAAME,CAAI,CAAC,EAEnE,OAAO,IAAIR,EACTE,EACAQ,GAA8CjB,CAAK,EACnDC,CACF,CACF,KACE,OAAM,IAAI,UAAU,gBAAgBQ,CAAG,yBAAyB,CAEpE,CAQA,OAAO,cAAcC,EAAMT,EAAK,CAC9B,IAAMD,EAAOE,EAAcQ,CAAI,EAC/B,GAAI,CAACV,EACH,MAAM,IAAI,UAAU,yBAAyBU,CAAI,GAAG,EAGtD,IAAMQ,EAAWnB,GAA2BC,EAAMmB,EAAGlB,CAAG,CAAC,EACnDmB,EAAKN,EAAU,OAAOO,EAAIrB,EAAMkB,CAAQ,CAAC,EAE/C,OAAO,IAAIX,EACT,CACE,IAAK,GAAGT,EAAc,GAAGsB,CAAE,GAC3B,OAAQ,GAAGtB,EAAc,GAAGsB,CAAE,GAC9B,GAAAA,EACA,OAAQ,KACV,EACAV,EACAQ,CACF,CACF,CAMA,IAAI,UAAW,CACb,IAAME,EAAK,GAAG,KAAK,GAAG,IAAI,KAAK,EAAE,GACjC,MAAO,CACL,WAAY,CACV,+BACA,uCACF,EACA,GAAI,KAAK,IACT,mBAAoB,CAClB,CACE,GAAAA,EACA,KAAM,WACN,WAAY,KAAK,IACjB,mBAAoB,KAAK,EAC3B,CACF,EACA,eAAgB,CAACA,CAAE,EACnB,gBAAiB,CAACA,CAAE,EACpB,qBAAsB,CAACA,CAAE,EACzB,qBAAsB,CAACA,CAAE,CAC3B,CACF,CACF,EAGA,eAAeE,GAAeb,EAAKc,EAAW,CAC5C,IAAMC,EAASlB,EAAO,WAAWG,CAAG,EACpC,MAAO,CACL,oBAAqB,CAAC,EACtB,sBAAuB,CACrB,YAAa,yBACf,EACA,YAAae,EAAO,QACtB,CACF,CAGO,IAAMC,GAAW,CACtB,IAAKH,EACP,EC3KA,eAAsBI,GAAQC,EAAKC,EAAO,CAAC,EAAG,CAS5C,IAAM,EAAI,MARO,IAAIC,EACnB,CACE,GAAUC,GACV,GAAGF,EAAK,SACV,EACA,CAAE,MAAOA,EAAK,OAAS,EAAK,CAC9B,EAEyB,QAAQD,EAAK,CACpC,OAAQ,yBACV,CAAC,EAED,GAAI,EAAE,sBAAsB,MAC1B,MAAM,IAAI,MAAM,EAAE,sBAAsB,KAAK,EAG/C,OAAqC,EAAE,WACzC,CASO,SAASI,GAAMJ,EAAK,CACzB,OAAOK,EAAQ,WAAWL,CAAG,CAC/B,CAyBO,SAASM,GAAcC,EAAWC,EAAU,CACjD,IAAMC,EAAWF,EAAU,UAAYA,EAAU,GAE7CG,EAEJ,OAAIF,EAAS,qBACXE,EAASF,EAAS,mBAAmB,KAClCG,GAAOA,EAAG,KAAO,GAAGJ,EAAU,GAAG,IAAIE,CAAQ,EAChD,GAGE,CAACC,GAAUF,EAAS,iBACtBE,EACEF,EAAS,eAAe,KACrBG,GACC,OAAOA,GAAO,UAAYA,EAAG,KAAO,GAAGJ,EAAU,GAAG,IAAIE,CAAQ,EACpE,GAIGC,CACT,CAOO,IAAME,GAAN,MAAMC,CAAI,CAKf,YAAYC,EAAM,CAChB,KAAK,IAAMA,EAAK,IAChB,KAAK,UAAYA,EAAK,UACtB,KAAK,IAAMA,EAAK,IAChB,KAAK,KAAOA,EAAK,KACjB,KAAK,SAAWA,EAAK,SACrB,KAAK,IAAMA,EAAK,IAChB,KAAK,OAAgBC,EAAO,cAAcD,EAAK,KAAMA,EAAK,SAAS,EAAE,IAAI,GAC3E,CAOA,aAAa,WAAWE,EAAKF,EAAO,CAAC,EAAG,CACtC,IAAMG,EAAYC,GAAMF,CAAG,EACrBR,EAAW,MAAMW,GAAQF,EAAU,IAAKH,CAAI,EAC5CJ,EAASJ,GAAcW,EAAWT,CAAQ,EAEhD,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,oCAAoCM,CAAG,EAAE,EAG3D,GAAIN,EAAO,OAAS,WAAY,CAC9B,IAAMU,EAAaC,EAAU,OAAOX,EAAO,kBAAkB,EACvD,CAACY,EAAMC,CAAI,EAAIC,EAAO,OAAOJ,CAAU,EACvCK,EAAMC,GAA2BJ,EAAMF,EAAW,MAAMG,CAAI,CAAC,EAC7DI,EAAOC,GAA8CN,CAAK,EAEhE,OAAO,IAAIT,EAAI,CACb,IAAKI,EAAU,IACf,IAAKY,EAAaF,CAAI,EACtB,KAAAA,EACA,UAAWF,EACX,IAAKR,EACL,SAAAT,CACF,CAAC,CACH,CAEA,GAAIE,EAAO,cAAgBA,EAAO,aAAa,MAAQ,MAAO,CAC5D,IAAMoB,EAAYC,EAAU,OAAOrB,EAAO,aAAa,CAAC,EAClDiB,EAAOjB,EAAO,aAAa,IAC3BsB,EAAMH,EAAaF,CAAI,EAC7B,OAAO,IAAId,EAAI,CACb,IAAKI,EAAU,IACf,IAAAe,EACA,KAAAL,EACA,UAAAG,EACA,IAAKb,EACL,SAAAT,CACF,CAAC,CACH,CAEA,GAAIE,EAAO,cAAgBA,EAAO,aAAa,MAAQ,KAAM,CAC3D,IAAMiB,EAAOjB,EAAO,aAAa,IAC3BuB,EAAgBlB,EAAO,cAC3BY,EACAO,GAAO,CACL,CAAC,CAAC,EACFH,EAAU,OAAOrB,EAAO,aAAa,CAAC,EACtCqB,EAAU,OAAOrB,EAAO,aAAa,CAAC,CACxC,CAAC,CACH,EACMsB,EAAMH,EAAaF,CAAI,EAC7B,OAAO,IAAId,EAAI,CACb,IAAKI,EAAU,IACf,IAAAe,EACA,KAAAL,EACA,UAAWM,EAAO,UAClB,IAAKhB,EACL,SAAAT,CACF,CAAC,CACH,CACA,MAAM,IAAI,MAAM,yCAAyCE,EAAO,IAAI,GAAG,CACzE,CAEA,UAAW,CACT,OAAO,KAAK,IAAI,MAClB,CACF,EChLO,SAASyB,GAAUC,EAAO,CAC/B,OAAOC,EAAU,OAAOC,EAAK,OAAO,KAAK,UAAUF,CAAK,CAAC,CAAC,CAC5D,CASO,SAASG,GAAYH,EAAO,CACjC,IAAII,EAEJ,GAAI,CACF,IAAMC,EAAeJ,EAAU,OAAOD,CAAK,EAC3CI,EAAgBF,EAAK,OAAOG,CAAY,CAC1C,MAAQ,CACN,MAAM,IAAI,MAAM,gBAAgBL,CAAK,6BAA6B,CACpE,CAEA,GAAI,CACF,OAAO,KAAK,MAAMI,CAAa,CACjC,MAAQ,CACN,MAAM,IAAI,MACR,gBAAgBJ,CAAK,8CACvB,CACF,CACF,CAQA,eAAsBM,GAAOC,EAAMC,EAAQ,CAEzC,IAAMC,EAAS,CACb,IAAKF,EAAK,OAAO,IACjB,IAAK,KACP,EAEMG,EAAU,CACd,IAAKH,EAAK,SACV,IAAKA,EAAK,OAAO,IACjB,IAAKA,EAAK,aACV,IAAKA,EAAK,WACV,IAAKA,EAAK,QACV,IAAKA,EAAK,MACV,IACEA,EAAK,QAAQ,IAAKI,GAAMA,EAAE,SAAS,CAAC,EAEtC,IAAKJ,EAAK,UACV,IAAKA,EAAK,KACZ,EAEMK,EAAmB,GAAGb,GAAUU,CAAM,CAAC,IAAIV,GAAUW,CAAO,CAAC,GAC7DG,EAAY,MAAML,EAAO,KAAKN,EAAK,OAAOU,CAAgB,CAAC,EAE3DE,EACJ,GAAGF,CAAgB,IAAIX,EAAU,OAAOY,CAAS,CAAC,GAE9CE,EAAQb,EAAK,OAAOY,CAAI,EAE9B,MAAO,CACL,KAAAA,EACA,UAAAD,EACA,MAAAE,EACA,IAAKC,EAAI,OAAO,EAAGC,GAAU,MAAMC,GAAO,OAAOH,CAAK,CAAC,CACzD,CACF,CAUA,eAAsBI,GAAOZ,EAAM,CACjC,GAAM,CAACa,EAAeC,EAAgBC,CAAgB,EAAIf,EAAK,MAAM,GAAG,EACxE,GACEa,IAAkB,QAClBC,IAAmB,QACnBC,IAAqB,OAErB,MAAM,IAAI,MACR,qBAAqBf,CAAI,kEAC3B,EAIF,IAAME,EAASN,GAAYiB,CAAa,EACxC,GAAIX,EAAO,MAAQ,MACjB,MAAM,IAAI,MAAM,2BAA2BA,EAAO,GAAG,GAAG,EAI1D,IAAMc,EAAgBpB,GAAYkB,CAAc,EAC1CG,EAAS,MAAUC,GAAI,WAAWF,EAAc,GAAG,EAEzD,GAAId,EAAO,MAAQe,EAAO,IACxB,MAAM,IAAI,MACR,iCAAiCA,EAAO,GAAG,SAASf,EAAO,GAAG,GAChE,EAEF,IAAMI,EAAYZ,EAAU,OAAOqB,CAAgB,EAC7CP,EAAQb,EAAK,OAAOK,CAAI,EAE9B,MAAO,CACL,MAAO,CACL,SAAcmB,GAAMH,EAAc,GAAG,EAAE,IACvC,OAAAC,EACA,aAAcD,EAAc,IAC5B,WAAYA,EAAc,IAC1B,QAASA,EAAc,IACvB,MAAOA,EAAc,IACrB,OAAQA,EAAc,KAAK,IAAKZ,GAAMK,EAAI,MAAML,CAAC,CAAC,EAClD,UAAWY,EAAc,IACzB,MAAOA,EAAc,GACvB,EACA,UAAW,CACT,UAAAV,EACA,KAAMN,EACN,MAAAQ,EACA,IAAKC,EAAI,OAAO,EAAGC,GAAU,MAAMC,GAAO,OAAOH,CAAK,CAAC,CACzD,CACF,CACF,CCzIO,IAAMY,GAAU,SAKVC,GAAM,IAAM,KAAK,MAAM,KAAK,IAAI,EAAI,GAAI,EAKxCC,EAAN,MAAMC,CAAK,CAKhB,YAAYC,EAAOC,EAAW,CAC5B,KAAK,OAASD,EAAM,OACpB,KAAK,SAAWA,EAAM,SACtB,KAAK,QAAUJ,GACf,KAAK,aAAeI,EAAM,aAC1B,KAAK,WAAaA,EAAM,WACxB,KAAK,UAAYA,EAAM,UACvB,KAAK,MAAQA,EAAM,MACnB,KAAK,MAAQA,EAAM,MACnB,KAAK,OAASA,EAAM,OAEpB,KAAK,UAAYC,EAAU,UAC3B,KAAK,MAAQA,EAAU,MACvB,KAAK,KAAOA,EAAU,KACtB,KAAK,IAAMA,EAAU,GACvB,CAMA,aAAa,OAAOC,EAAM,CACxB,GAAM,CACJ,OAAAC,EACA,SAAAC,EACA,aAAAC,EACA,WAAAC,EACA,UAAAC,EACA,MAAAC,EACA,MAAAC,EACA,OAAAC,EACA,IAAAC,CACF,EAAIT,EAGEF,EAAQ,CACZ,OAAAG,EACA,SAAAC,EACA,aAAAC,EAEA,WAAYC,IAAe,OAAOK,GAAQ,SAAWd,GAAI,EAAIc,EAAM,MACnE,UAAAJ,EACA,MAAAC,EACA,MAAAC,EACA,OAAAC,EACA,QAASd,EACX,EAEA,OADa,IAAIG,EAAKC,EAAO,MAAUY,GAAOZ,EAAOG,CAAM,CAAC,CAE9D,CAMA,aAAa,SAASU,EAAM,CAC1B,GAAM,CAAE,MAAAb,EAAO,UAAAC,CAAU,EAAI,MAAUa,GAAOD,CAAI,EAClD,OAAO,IAAId,EAAKC,EAAOC,CAAS,CAClC,CAMA,OAAQ,CACN,MAAO,CACL,MAAO,KAAK,MACZ,IAAK,KAAK,GACZ,CACF,CAMA,MAAM,QAAQc,EAAU,CACtB,GAAM,CAACC,EAAeC,CAAc,EAAI,KAAK,KAAK,MAAM,GAAG,EAe3D,MARI,GANe,MAAMF,EAAS,OAAO,CACvC,QAASG,EAAK,OAAO,GAAGF,CAAa,IAAIC,CAAc,EAAE,EACzD,UAAW,KAAK,UAChB,GAAG,KAAK,MACV,CAAC,GAMG,KAAK,YAAc,KAAK,YAAcpB,GAAI,GAI1C,KAAK,WAAa,KAAK,UAAYA,GAAI,EAK7C,CAMA,UAAW,CACT,OAAO,KAAK,IACd,CAMA,QAAS,CACP,MAAO,CACL,OAAQ,KAAK,OAAO,SAAS,EAC7B,SAAU,KAAK,SAAS,SAAS,EACjC,QAAS,KAAK,QACd,aACE,KAAK,aAEP,WAAY,KAAK,WACjB,UAAW,KAAK,UAChB,MAAO,KAAK,MACZ,MAA2C,KAAK,MAChD,OACE,KAAK,QAAQ,IAAKsB,GAAMA,EAAE,OAAO,CAAC,EAEpC,UAAWC,GAAO,OAAO,KAAK,SAAS,EACvC,KAAM,KAAK,KACX,MAAOF,EAAK,OAAO,KAAK,KAAK,EAC7B,IACE,KAAK,IAAI,OAAO,CAEpB,CACF,CACF,EC3JA,IAAMG,EAAI,IAAM,KAAO,IACjBC,EAAI,IAAM,KAAO,wCACjBC,GAAK,oEACLC,GAAK,oEACLC,GAAQ,CACV,EAAG,CAAC,GACJ,EAAG,+EACH,EAAGJ,EAAG,EAAGC,EAAG,EAAG,EAAG,GAAAC,GAAI,GAAAC,EAC1B,EACME,EAAM,CAACC,EAAI,KAAO,CAAE,MAAM,IAAI,MAAMA,CAAC,CAAG,EACxCC,GAAOC,GAAM,OAAOA,GAAM,SAC1BC,GAAM,CAACC,EAAGC,IACf,EAAED,aAAa,aAAgB,OAAOC,GAAM,UAAYA,EAAI,GAAKD,EAAE,SAAWC,EAC3EN,EAAI,qBAAqB,EAAIK,EAC3BE,EAAOC,GAAS,IAAI,WAAWA,CAAI,EACnCC,GAAO,CAACJ,EAAGK,IAAQN,GAAIF,GAAIG,CAAC,EAAIM,GAAIN,CAAC,EAAIE,EAAIF,CAAC,EAAGK,CAAG,EACpDE,EAAM,CAACP,EAAGQ,EAAIlB,IAAM,CAAE,IAAImB,EAAIT,EAAIQ,EAAG,OAAOC,GAAK,GAAKA,EAAID,EAAIC,CAAG,EACjEC,GAAWC,GAAOA,aAAaC,EAAQD,EAAIhB,EAAI,gBAAgB,EACjEkB,GACED,EAAN,MAAME,CAAM,CACR,YAAYC,EAAIC,EAAIC,EAAIC,EAAI,CACxB,KAAK,GAAKH,EACV,KAAK,GAAKC,EACV,KAAK,GAAKC,EACV,KAAK,GAAKC,CACd,CACA,OAAO,WAAWP,EAAG,CAAE,OAAO,IAAIG,EAAMH,EAAE,EAAGA,EAAE,EAAG,GAAIJ,EAAII,EAAE,EAAIA,EAAE,CAAC,CAAC,CAAG,CACvE,OAAO,QAAQQ,EAAKC,EAAS,GAAM,CAC/B,GAAM,CAAE,EAAAC,CAAE,EAAI3B,GACdyB,EAAMf,GAAKe,EAAK,EAAE,EAClB,IAAMG,EAASH,EAAI,MAAM,EACzBG,EAAO,EAAE,EAAIH,EAAI,EAAE,EAAI,KACvB,IAAMI,EAAIC,GAAOF,CAAM,EACnBC,IAAM,KAGFH,GAAU,EAAE,GAAKG,GAAKA,EAAIjC,IAC1BK,EAAI,eAAe,EACnB,CAACyB,GAAU,EAAE,GAAKG,GAAKA,EAAI,IAAM,OACjC5B,EAAI,eAAe,GAE3B,IAAM8B,EAAKlB,EAAIgB,EAAIA,CAAC,EACdG,EAAInB,EAAIkB,EAAK,EAAE,EACfE,EAAIpB,EAAIc,EAAII,EAAK,EAAE,EACrB,CAAE,QAAAG,EAAS,MAAOC,CAAE,EAAIC,GAAQJ,EAAGC,CAAC,EACnCC,GACDjC,EAAI,oBAAoB,EAC5B,IAAMoC,GAAUF,EAAI,MAAQ,GAE5B,OADmBV,EAAI,EAAE,EAAI,OAAU,IACrBY,IACdF,EAAItB,EAAI,CAACsB,CAAC,GACP,IAAIf,EAAMe,EAAGN,EAAG,GAAIhB,EAAIsB,EAAIN,CAAC,CAAC,CACzC,CACA,IAAI,GAAI,CAAE,OAAO,KAAK,SAAS,EAAE,CAAG,CACpC,IAAI,GAAI,CAAE,OAAO,KAAK,SAAS,EAAE,CAAG,CACpC,OAAOS,EAAO,CACV,GAAM,CAAE,GAAIC,EAAI,GAAIC,EAAI,GAAIC,CAAG,EAAI,KAC7B,CAAE,GAAIC,EAAI,GAAIC,EAAI,GAAIC,CAAG,EAAI5B,GAAQsB,CAAK,EAC1CO,EAAOhC,EAAI0B,EAAKK,CAAE,EAAGE,EAAOjC,EAAI6B,EAAKD,CAAE,EACvCM,EAAOlC,EAAI2B,EAAKI,CAAE,EAAGI,EAAOnC,EAAI8B,EAAKF,CAAE,EAC7C,OAAOI,IAASC,GAAQC,IAASC,CACrC,CACA,KAAM,CAAE,OAAO,KAAK,OAAOC,EAAC,CAAG,CAC/B,QAAS,CACL,OAAO,IAAI7B,EAAMP,EAAI,CAAC,KAAK,EAAE,EAAG,KAAK,GAAI,KAAK,GAAIA,EAAI,CAAC,KAAK,EAAE,CAAC,CACnE,CACA,QAAS,CACL,GAAM,CAAE,GAAI0B,EAAI,GAAIC,EAAI,GAAIC,CAAG,EAAI,KAC7B,CAAE,EAAAnC,CAAE,EAAIN,GACRkD,EAAIrC,EAAI0B,EAAKA,CAAE,EACfY,EAAItC,EAAI2B,EAAKA,CAAE,EACfY,EAAIvC,EAAI,GAAKA,EAAI4B,EAAKA,CAAE,CAAC,EACzBY,EAAIxC,EAAIP,EAAI4C,CAAC,EACbI,EAAOf,EAAKC,EACZe,EAAI1C,EAAIA,EAAIyC,EAAOA,CAAI,EAAIJ,EAAIC,CAAC,EAChCK,EAAIH,EAAIF,EACRM,EAAID,EAAIJ,EACRM,EAAIL,EAAIF,EACRQ,EAAK9C,EAAI0C,EAAIE,CAAC,EACdG,EAAK/C,EAAI2C,EAAIE,CAAC,EACdG,EAAKhD,EAAI0C,EAAIG,CAAC,EACdI,EAAKjD,EAAI4C,EAAID,CAAC,EACpB,OAAO,IAAIpC,EAAMuC,EAAIC,EAAIE,EAAID,CAAE,CACnC,CACA,IAAIvB,EAAO,CACP,GAAM,CAAE,GAAIC,EAAI,GAAIC,EAAI,GAAIC,EAAI,GAAIsB,CAAG,EAAI,KACrC,CAAE,GAAIrB,EAAI,GAAIC,EAAI,GAAIC,EAAI,GAAIoB,CAAG,EAAIhD,GAAQsB,CAAK,EAClD,CAAE,EAAAhC,EAAG,EAAAqB,CAAE,EAAI3B,GACXkD,EAAIrC,EAAI0B,EAAKG,CAAE,EACfS,EAAItC,EAAI2B,EAAKG,CAAE,EACfS,EAAIvC,EAAIkD,EAAKpC,EAAIqC,CAAE,EACnBX,EAAIxC,EAAI4B,EAAKG,CAAE,EACfW,EAAI1C,GAAK0B,EAAKC,IAAOE,EAAKC,GAAMO,EAAIC,CAAC,EACrCM,EAAI5C,EAAIwC,EAAID,CAAC,EACbI,EAAI3C,EAAIwC,EAAID,CAAC,EACbM,EAAI7C,EAAIsC,EAAI7C,EAAI4C,CAAC,EACjBS,EAAK9C,EAAI0C,EAAIE,CAAC,EACdG,EAAK/C,EAAI2C,EAAIE,CAAC,EACdG,EAAKhD,EAAI0C,EAAIG,CAAC,EACdI,EAAKjD,EAAI4C,EAAID,CAAC,EACpB,OAAO,IAAIpC,EAAMuC,EAAIC,EAAIE,EAAID,CAAE,CACnC,CACA,IAAII,EAAGC,EAAO,GAAM,CAChB,GAAID,IAAM,GACN,OAAOC,IAAS,GAAOjE,EAAI,sBAAsB,EAAIgD,GAGzD,GAFM,OAAOgB,GAAM,UAAY,GAAKA,GAAKA,EAAIpE,GACzCI,EAAI,6BAA6B,EACjC,CAACiE,GAAQ,KAAK,IAAI,GAAKD,IAAM,GAC7B,OAAO,KACX,GAAI,KAAK,OAAOT,CAAC,EACb,OAAOW,GAAKF,CAAC,EAAE,EACnB,IAAIhD,EAAIgC,GAAGmB,EAAIZ,EACf,QAAS7B,EAAI,KAAMsC,EAAI,GAAItC,EAAIA,EAAE,OAAO,EAAGsC,IAAM,GACzCA,EAAI,GACJhD,EAAIA,EAAE,IAAIU,CAAC,EACNuC,IACLE,EAAIA,EAAE,IAAIzC,CAAC,GAEnB,OAAOV,CACX,CACA,SAASoD,EAAQ,CAAE,OAAO,KAAK,IAAIA,CAAM,CAAG,CAC5C,eAAgB,CAAE,OAAO,KAAK,IAAI,OAAOrE,GAAM,CAAC,EAAG,EAAK,CAAG,CAC3D,cAAe,CAAE,OAAO,KAAK,cAAc,EAAE,IAAI,CAAG,CACpD,eAAgB,CACZ,IAAIiB,EAAI,KAAK,IAAIpB,EAAI,GAAI,EAAK,EAAE,OAAO,EACvC,OAAIA,EAAI,KACJoB,EAAIA,EAAE,IAAI,IAAI,GACXA,EAAE,IAAI,CACjB,CACA,UAAW,CACP,GAAM,CAAE,GAAIkB,EAAG,GAAIN,EAAG,GAAIyC,CAAE,EAAI,KAChC,GAAI,KAAK,IAAI,EACT,MAAO,CAAE,EAAG,GAAI,EAAG,EAAG,EAC1B,IAAMC,EAAKC,GAAOF,CAAC,EACnB,OAAIzD,EAAIyD,EAAIC,CAAE,IAAM,IAChBtE,EAAI,iBAAiB,EAClB,CAAE,EAAGY,EAAIsB,EAAIoC,CAAE,EAAG,EAAG1D,EAAIgB,EAAI0C,CAAE,CAAE,CAC5C,CACA,YAAa,CACT,GAAM,CAAE,EAAApC,EAAG,EAAAN,CAAE,EAAI,KAAK,SAAS,EACzBf,EAAI2D,GAAS5C,CAAC,EACpB,OAAAf,EAAE,EAAE,GAAKqB,EAAI,GAAK,IAAO,EAClBrB,CACX,CACA,OAAQ,CAAE,OAAO4D,GAAI,KAAK,WAAW,CAAC,CAAG,CAC7C,EACAxD,EAAM,KAAO,IAAIA,EAAMpB,GAAIC,GAAI,GAAIc,EAAIf,GAAKC,EAAE,CAAC,EAC/CmB,EAAM,KAAO,IAAIA,EAAM,GAAI,GAAI,GAAI,EAAE,EACrC,GAAM,CAAE,KAAMsC,EAAG,KAAMP,EAAE,EAAI/B,EACvByD,GAAO,CAACC,EAAKC,IAAQD,EAAI,SAAS,EAAE,EAAE,SAASC,EAAK,GAAG,EACvDH,GAAO5D,GAAM,MAAM,KAAKA,CAAC,EAAE,IAAI,GAAK6D,GAAK,EAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EACvD/D,GAAOa,GAAQ,CACjB,IAAMlB,EAAIkB,EAAI,QACV,CAACtB,GAAIsB,CAAG,GAAKlB,EAAI,IACjBN,EAAI,eAAe,EACvB,IAAM6E,EAAMtE,EAAID,EAAI,CAAC,EACrB,QAASwE,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAAK,CACjC,IAAMC,EAAID,EAAI,EACRE,EAAIxD,EAAI,MAAMuD,EAAGA,EAAI,CAAC,EACtBlE,EAAI,OAAO,SAASmE,EAAG,EAAE,GAC3B,OAAO,MAAMnE,CAAC,GAAKA,EAAI,IACvBb,EAAI,eAAe,EACvB6E,EAAIC,CAAC,EAAIjE,CACb,CACA,OAAOgE,CACX,EACML,GAAYG,GAAQhE,GAAI+D,GAAKC,EAAK,GAAK,CAAC,CAAC,EAAE,QAAQ,EACnD9C,GAAUhB,GAAM,OAAO,KAAO4D,GAAIlE,EAAIH,GAAIS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EACxDoE,GAAU,IAAIC,IAAS,CACzB,IAAMpE,EAAIP,EAAI2E,EAAK,OAAO,CAACC,EAAK9E,IAAM8E,EAAM/E,GAAIC,CAAC,EAAE,OAAQ,CAAC,CAAC,EACzDuE,EAAM,EACV,OAAAM,EAAK,QAAQ7E,GAAK,CAAES,EAAE,IAAIT,EAAGuE,CAAG,EAAGA,GAAOvE,EAAE,MAAQ,CAAC,EAC9CS,CACX,EACMyD,GAAS,CAACI,EAAKS,EAAKzF,IAAM,EACxBgF,IAAQ,IAAMS,GAAM,KACpBpF,EAAI,gBAAkB2E,EAAM,QAAUS,CAAE,EAC5C,IAAI/E,EAAIO,EAAI+D,EAAKS,CAAE,EAAGvE,EAAIuE,EAAIlD,EAAI,GAAIN,EAAI,GAAIG,EAAI,GAAIC,EAAI,GAC1D,KAAO3B,IAAM,IAAI,CACb,IAAMgF,EAAIxE,EAAIR,EAAGS,EAAID,EAAIR,EACnBJ,EAAIiC,EAAIH,EAAIsD,EAAGrB,EAAIpC,EAAII,EAAIqD,EACjCxE,EAAIR,EAAGA,EAAIS,EAAGoB,EAAIH,EAAGH,EAAII,EAAGD,EAAI9B,EAAG+B,EAAIgC,CAC3C,CACA,OAAOnD,IAAM,GAAKD,EAAIsB,EAAGkD,CAAE,EAAIpF,EAAI,YAAY,CACnD,EACMsF,EAAO,CAACpD,EAAGqD,IAAU,CACvB,IAAIzE,EAAIoB,EACR,KAAOqD,KAAU,IACbzE,GAAKA,EACLA,GAAKnB,EAET,OAAOmB,CACX,EACM0E,GAAetD,GAAM,CAEvB,IAAMuD,EADMvD,EAAIA,EAAKvC,EACJuC,EAAKvC,EAChB+F,EAAMJ,EAAKG,EAAI,EAAE,EAAIA,EAAM9F,EAC3BgG,EAAML,EAAKI,EAAI,EAAE,EAAIxD,EAAKvC,EAC1BiG,EAAON,EAAKK,EAAI,EAAE,EAAIA,EAAMhG,EAC5BkG,EAAOP,EAAKM,EAAK,GAAG,EAAIA,EAAOjG,EAC/BmG,EAAOR,EAAKO,EAAK,GAAG,EAAIA,EAAOlG,EAC/BoG,EAAOT,EAAKQ,EAAK,GAAG,EAAIA,EAAOnG,EAC/BqG,EAAQV,EAAKS,EAAK,GAAG,EAAIA,EAAOpG,EAChCsG,EAAQX,EAAKU,EAAM,GAAG,EAAID,EAAOpG,EACjCuG,EAAQZ,EAAKW,EAAM,GAAG,EAAIL,EAAOjG,EAEvC,MAAO,CAAE,UADU2F,EAAKY,EAAM,EAAE,EAAIhE,EAAKvC,EACrB,GAAA8F,CAAG,CAC3B,EACMU,GAAM,+EACNhE,GAAU,CAACJ,EAAGC,IAAM,CACtB,IAAMoE,EAAKxF,EAAIoB,EAAIA,EAAIA,CAAC,EAClBqE,EAAKzF,EAAIwF,EAAKA,EAAKpE,CAAC,EACpBsE,EAAMd,GAAYzD,EAAIsE,CAAE,EAAE,UAC5BnE,EAAItB,EAAImB,EAAIqE,EAAKE,CAAG,EAClBC,EAAM3F,EAAIoB,EAAIE,EAAIA,CAAC,EACnBsE,EAAQtE,EACRuE,EAAQ7F,EAAIsB,EAAIiE,EAAG,EACnBO,EAAWH,IAAQxE,EACnB4E,EAAWJ,IAAQ3F,EAAI,CAACmB,CAAC,EACzB6E,EAASL,IAAQ3F,EAAI,CAACmB,EAAIoE,EAAG,EACnC,OAAIO,IACAxE,EAAIsE,IACJG,GAAYC,KACZ1E,EAAIuE,IACH7F,EAAIsB,CAAC,EAAI,MAAQ,KAClBA,EAAItB,EAAI,CAACsB,CAAC,GACP,CAAE,QAASwE,GAAYC,EAAU,MAAOzE,CAAE,CACrD,EACM2E,GAAWC,GAASlG,EAAIiB,GAAOiF,CAAI,EAAGlH,CAAC,EACzCmH,EACEC,GAAU,IAAI/G,IAAMgH,GAAI,YAAY,GAAGhH,CAAC,EACxCiH,GAAU,IAAIjH,IACnB,OAAO8G,GAAU,WAAaA,EAAM,GAAG9G,CAAC,EAAID,EAAI,wBAAwB,EACnEmH,GAAaC,GAAW,CAC1B,IAAMC,EAAOD,EAAO,MAAM,EAAG,EAAE,EAC/BC,EAAK,CAAC,GAAK,IACXA,EAAK,EAAE,GAAK,IACZA,EAAK,EAAE,GAAK,GACZ,IAAMC,EAASF,EAAO,MAAM,GAAI,EAAE,EAC5BhD,EAASyC,GAAQQ,CAAI,EACrBE,EAAQhE,EAAE,IAAIa,CAAM,EACpBoD,EAAaD,EAAM,WAAW,EACpC,MAAO,CAAE,KAAAF,EAAM,OAAAC,EAAQ,OAAAlD,EAAQ,MAAAmD,EAAO,WAAAC,CAAW,CACrD,EAEMC,GAA6BC,GAASV,GAAQvG,GAAKiH,EAAM,EAAE,CAAC,EAAE,KAAKP,EAAS,EAC5EQ,GAAwBD,GAASP,GAAUD,GAAQzG,GAAKiH,EAAM,EAAE,CAAC,CAAC,EAClEE,GAAqBF,GAASD,GAA0BC,CAAI,EAAE,KAAK1G,GAAKA,EAAE,UAAU,EAE1F,SAAS6G,GAAWC,EAAcC,EAAK,CACnC,OAAID,EACOE,GAAQD,EAAI,QAAQ,EAAE,KAAKA,EAAI,MAAM,EACzCA,EAAI,OAAOE,GAAQF,EAAI,QAAQ,CAAC,CAC3C,CACA,IAAMG,GAAQ,CAACC,EAAGC,EAAQC,IAAQ,CAC9B,GAAM,CAAE,WAAYC,EAAG,OAAQ,CAAE,EAAIH,EAC/BI,EAAIC,GAAQJ,CAAM,EAClBK,EAAIC,EAAE,IAAIH,CAAC,EAAE,WAAW,EAM9B,MAAO,CAAE,SALQI,GAAQF,EAAGH,EAAGD,CAAG,EAKf,OAJHO,GAAW,CACvB,IAAMC,EAAIC,EAAIP,EAAIC,GAAQI,CAAM,EAAI,EAAGG,CAAC,EACxC,OAAOC,GAAIL,GAAQF,EAAGQ,GAASJ,CAAC,CAAC,EAAG,EAAE,CAC1C,CAC0B,CAC9B,EACMK,GAAY,MAAOb,EAAKc,IAAY,CACtC,IAAMC,EAAIC,GAAKhB,CAAG,EACZF,EAAI,MAAMmB,GAA0BH,CAAO,EAC3Cf,EAAS,MAAMJ,GAAQG,EAAE,OAAQiB,CAAC,EACxC,OAAOvB,GAAW,GAAMK,GAAMC,EAAGC,EAAQgB,CAAC,CAAC,CAC/C,EAyBA,IAAMG,GAAK,IACV,OAAO,YAAe,UAAY,WAAY,WAAa,WAAW,OAAS,OAC1EC,GAAM,CACR,WAAYC,GAAK,WAAYC,GAAK,YAAaC,GAC/C,IAAAC,EAAK,OAAAC,GACL,YAAcC,GAAQ,CAClB,IAAMC,EAASR,GAAG,EAGlB,OAAKQ,GACDC,EAAI,wCAAwC,EACzCD,EAAO,gBAAgBE,EAAIH,CAAG,CAAC,CAC1C,EACA,YAAa,SAAUI,IAAa,CAChC,IAAMH,EAASR,GAAG,EACbQ,GACDC,EAAI,kDAAkD,EAC1D,IAAMG,EAAIR,GAAQ,GAAGO,CAAQ,EAC7B,OAAOD,EAAI,MAAMF,EAAO,OAAO,OAAO,UAAWI,EAAE,MAAM,CAAC,CAC9D,EACA,WAAY,MAChB,EACA,OAAO,iBAAiBX,GAAK,CAAE,WAAY,CACnC,aAAc,GAAO,KAAM,CAAE,OAAOY,CAAO,EAAG,IAAIC,EAAG,CAAOD,IACxDA,EAAQC,EAAG,CACnB,CAAE,CAAC,EACP,IAAMC,GAAQ,CACV,0BAAAC,GAA2B,qBAAAC,GAC3B,iBAAkB,IAAMhB,GAAI,YAAY,EAAE,EAC1C,WAAWiB,EAAI,EAAGC,EAAIC,EAAG,CAAE,OAAAD,EAAE,SAAS,EAAE,EAAUA,CAAG,CACzD,EACME,EAAI,EACJC,GAAa,IAAM,CACrB,IAAMC,EAAS,CAAC,EACVC,EAAU,IAAMH,EAAI,EACtBF,EAAIC,EAAGK,EAAIN,EACf,QAASD,EAAI,EAAGA,EAAIM,EAASN,IAAK,CAC9BO,EAAIN,EACJI,EAAO,KAAKE,CAAC,EACb,QAASC,EAAI,EAAGA,EAAI,IAAML,EAAI,GAAIK,IAC9BD,EAAIA,EAAE,IAAIN,CAAC,EACXI,EAAO,KAAKE,CAAC,EAEjBN,EAAIM,EAAE,OAAO,CACjB,CACA,OAAOF,CACX,EACMI,GAAQC,GAAM,CAEhB,IAAMC,EAAOC,KAAUA,GAAQR,GAAW,GACpCS,EAAM,CAACC,EAAK,IAAM,CAAE,IAAIJ,EAAI,EAAE,OAAO,EAAG,OAAOI,EAAMJ,EAAI,CAAG,EAC9DT,EAAIc,GAAGnB,EAAIM,EACTI,EAAU,EAAI,IAAMH,EACpBa,EAAQ,IAAMb,EAAI,GAClBc,EAAO,OAAO,GAAKd,EAAI,CAAC,EACxBe,EAAS,GAAKf,EACdgB,EAAU,OAAOhB,CAAC,EACxB,QAASH,EAAI,EAAGA,EAAIM,EAASN,IAAK,CAC9B,IAAMoB,EAAMpB,EAAIgB,EACZK,EAAQ,OAAOX,EAAIO,CAAI,EAC3BP,IAAMS,EACFE,EAAQL,IACRK,GAASH,EACTR,GAAK,IAET,IAAMY,EAAOF,EAAKG,EAAOH,EAAM,KAAK,IAAIC,CAAK,EAAI,EAC3CG,EAAOxB,EAAI,IAAM,EAAGyB,EAAOJ,EAAQ,EACrCA,IAAU,EACVzB,EAAIA,EAAE,IAAIiB,EAAIW,EAAMb,EAAKW,CAAI,CAAC,CAAC,EAG/BrB,EAAIA,EAAE,IAAIY,EAAIY,EAAMd,EAAKY,CAAI,CAAC,CAAC,CAEvC,CACA,MAAO,CAAE,EAAAtB,EAAG,EAAAL,CAAE,CAClB,ECnXO,IAAM8B,GAAY,WAAW,OC6C7B,SAASC,GAAsBC,EAAMC,EAAWC,EAAK,CAE1D,IAAIC,EAAOC,EAAO,cAAcJ,EAAMK,EAAGJ,CAAS,CAAC,EACnD,GAAIC,EAAK,CACP,GAAI,CAACI,GAAOJ,EAAI,UAAWC,EAAK,SAAS,EACvC,MAAM,IAAI,MAAM,qBAAqB,EAGvC,GAAID,EAAI,MAAQC,EAAK,IACnB,MAAM,IAAI,MAAM,oBAAoB,EAGtC,GAAID,EAAI,OAASC,EAAK,KACpB,MAAM,IAAI,MAAM,mBAAmB,EAErCA,EAAOD,CACT,CAEA,OAAOC,CACT,CCvDK,WAAW,SAAQ,WAAW,OAASI,IAU5C,SAASC,GAASC,EAAK,CACrB,GAAIA,EAAI,OAAS,UACf,MAAM,IAAI,UAAU,wBAAwBA,EAAI,IAAI,EAAE,EAExD,GAAIA,EAAI,MAAQ,QACd,MAAM,IAAI,UAAU,yBAAyBA,EAAI,GAAG,EAAE,CAE1D,CAOO,IAAMC,GAAN,MAAMC,CAAY,CAEvB,OAAO,IAAM,QAGb,OAAO,KAAO,UAEd,OAAO,KAAO,KAGdC,GAMA,YAAYH,EAAKI,EAAY,CAC3BL,GAASC,CAAG,EACZ,KAAK,IAAMA,EAAI,IACf,KAAK,IAAMA,EAAI,IACf,KAAK,KAAOA,EAAI,KAChB,KAAK,UAAYA,EAAI,UACrB,KAAK,IAAMA,EAAI,IACf,KAAK,SAAWA,EAAI,SACpB,KAAKG,GAAcC,EACnB,KAAK,OAASJ,EAAI,MACpB,CAOA,aAAa,SAASK,EAAO,CAC3B,IAAMD,EAAaC,GAASC,GAAM,iBAAiB,EAC7CC,EAAY,MAAMC,GAAkBJ,CAAU,EACpD,OAAO,IAAIF,EACTO,EAAO,cAAc,UAAWF,CAAS,EACzCH,CACF,CACF,CAQA,aAAa,OAAOM,EAASV,EAAK,CAChC,IAAMI,EAAaO,GAAMT,EAAY,KAAMU,GAAU,OAAOF,CAAO,CAAC,EAC9DH,EAAY,MAAMC,GAAkBJ,CAAU,EAEpD,OAAO,IAAIF,EACTW,GAAsB,UAAWN,EAAWP,CAAG,EAC/CI,CACF,CACF,CAOA,MAAM,KAAKU,EAAS,CAClB,OAAOC,GAAUD,EAAS,KAAKX,EAAW,CAC5C,CAKA,QAAS,CACP,OAAOS,GAAU,OAAOI,EAAId,EAAY,KAAM,KAAKC,EAAW,CAAC,CACjE,CAEA,UAAW,CACT,OAAO,KAAK,IAAI,MAClB,CACF,ECnGA,GAAM,CAAE,KAAAc,GAAM,IAAAC,GAAK,MAAAC,GAAO,QAAAC,GAAS,MAAAC,EAAM,EAAIC,GAAO,MAAMA,GAAO,IAAI,EAKxDC,GAAN,MAAMC,CAAoD,CA0BhE,YACQC,EACCC,EACAC,EACAC,EAAmB,CAAC,EACrBC,EAAyBJ,EAC/B,CALM,aAAAA,EACC,eAAAC,EACA,YAAAC,EACA,cAAAC,EACD,oBAAAC,CAER,CAhCA,aAAa,KAAK,CAAE,IAAAC,EAAK,UAAAJ,EAAW,SAAAE,CAAS,EAI1C,CACFT,GAAM,gCAAiC,CAAE,IAAAW,EAAK,UAAAJ,EAAW,SAAAE,CAAS,CAAC,EACnE,IAAMG,EAAa,WAAW,mBAAmB,IAAI,IAAID,CAAG,EAAE,IAAI,CAAC,GAC7DH,EAAS,MAAMK,GAAY,SAAS,EACpCC,EAAe,MAAMC,EAAK,OAAO,CACtC,OAAQR,EAER,SAAUC,EAAO,IAEjB,aAAc,CACb,CAAC,GAAGI,CAAU,EAAE,EAAG,CAClB,eAAgB,CAAC,CAAC,CAAC,EACnB,gBAAiB,CAAC,CAAC,CAAC,EACpB,cAAe,CAAC,CAAC,CAAC,CACnB,CACD,CACD,CAAC,EACD,OAAAZ,GAAM,iBAAkB,CAAE,aAAAc,EAAc,QAASA,EAAa,SAAS,CAAE,CAAC,EACnE,IAAIT,EAAwBM,EAAKJ,EAAWC,EAAQ,CAACM,CAAY,CAAC,CAC1E,CAWA,IAAI,SAAU,CACb,MAAO,EACR,CACA,IAAI,SAAU,CACb,MAAO,EACR,CAEA,MAAM,SAASE,EAAW,CACzB,IAAMV,EAAU,IAAI,IAAI,KAAK,OAAO,EAC9BM,EAAa,WAAW,mBAAmBN,EAAQ,IAAI,CAAC,GACxDW,EAAO,KAAK,SAAS,CAAC,EACtBC,EAAgB,CAACD,EAAK,SAAS,CAAC,EAChCE,EAAY,CAACF,EAAK,GAAG,EACrBG,EAAc,MAAML,EAAK,OAAO,CACrC,OAAQ,KAAK,OACb,SAAUH,EAEV,aAAc,CACb,CAAC,GAAGA,CAAU,EAAE,EAAG,CAElB,gBAAiB,CAAC,CAAC,CAAC,CAErB,CACD,EACA,OAAQO,CACT,CAAC,EACD,OAAOE,GAAS,KAAK,QAASL,EAAKI,EAAa,CAAE,MAAOF,CAAc,CAAC,CACzE,CAEA,MAAM,YAAYI,EAAU,CAC3B,GAAI,CAAC,KAAK,eAAgB,MAAM,IAAI,MAAM,yCAAyC,EACnF,OAAOC,GAAY,KAAK,eAAgBD,CAAG,CAC5C,CACD","names":["require_src","__commonJSMin","exports","module","base","ALPHABET","BASE_MAP","j","i","x","xc","BASE","LEADER","FACTOR","iFACTOR","encode","source","zeroes","length","pbegin","pend","size","b58","carry","it1","it2","str","decodeUnsafe","psz","b256","it3","it4","vch","decode","string","buffer","typedArrayTypeNames","objectTypeNames","isTypedArrayName","name","isObjectTypeName","getObjectType","value","objectTypeName","isObjectOfType","type","is","isTypedArray","isArrayBuffer","isBufferSource","u8","arr","buf","encoding","concat","arrays","length","acc","curr","output","offset","equals","aa","bb","ii","textDecoder","textEncoder","utf8","input","buf","isBufferSource","u8","decode","string","alphabet","bitsPerChar","codes","i","end","out","bits","buffer","written","value","encode","data","pad","mask","bases","rfc4648","base","padding","normalize","input","utf8","u8","isBufferSource","hex","str","base2","base8","base16","base32","base32hex","base64","base64pad","base64url","sha","name","data","sha256","from","sha512","code","inMemoryCache","cache","Map","parsed","resolve","_temp2","_result","_exit","cached","get","didUrl","undefined","result","_result$didResolution","didResolutionMetadata","error","set","_temp","params","_await$resolve","e","noCache","PCT_ENCODED","ID_CHAR","METHOD","METHOD_ID","PARAM_CHAR","PARAM","PARAMS","PATH","QUERY","FRAGMENT","DID_MATCHER","RegExp","parse","sections","match","parts","did","method","id","slice","split","p","kv","path","query","fragment","EMPTY_RESULT","didDocument","didDocumentMetadata","wrapLegacyResolver","resolver","_catch","doc","contentType","message","toString","Resolver","constructor","registry","options","legacyResolvers","Object","keys","map","methodName","_this","INT","encode","num","out","offset","oldOffset","MSB$1","REST$1","decode","buf","res","shift","counter","b","bytes","l","N1","N2","N3","N4","N5","N6","N7","N8","N9","length","value","varint","tag","code","taggedBytes","untag","size","import_base_x","bases","baseX","base","alphabet","input","pad","utf8","_baseX","u8","isBufferSource","base10","base36","base58btc","isCompressed","key","isUncompressed","compress","pubkeyBytes","unprefixed","x","y","out","KEY_TYPE_ALG","KEY_TYPE_CODE","CODE_KEY_TYPE","keyTypeToAlg","type","alg","KEY_TYPE_ALG","DIDCore","_DIDCore","parsed","did","parsedDid","parse","DID_KEY_PREFIX","validateRawPublicKeyLength","code","key","KEY_TYPE_CODE","isUncompressed","compress","isCompressed","DIDKey","_DIDKey","DIDCore","did","type","keyTypeToAlg","didString","encodedKey","base58btc","size","varint","CODE_KEY_TYPE","keyBytes","u8","id","tag","didKeyResolver","parsedDid","didKey","resolver","resolve","did","opts","Resolver","resolver","parse","DIDCore","derefDocument","didObject","document","fragment","method","vm","DID","_DID","opts","DIDKey","did","parsedDid","parse","resolve","encodedKey","base58btc","code","size","varint","key","validateRawPublicKeyLength","type","CODE_KEY_TYPE","keyTypeToAlg","publicKey","base64url","alg","didkey","concat","serialize","input","base64url","utf8","deserialize","decodedString","decodedBytes","encode","data","signer","header","payload","p","headerAndPayload","signature","ucan","bytes","CID","code","sha256","decode","encodedHeader","encodedPayload","encodedSignature","payloadObject","issuer","DID","parse","VERSION","now","UCAN","_UCAN","props","artifacts","opts","issuer","audience","capabilities","expiration","notBefore","nonce","facts","proofs","ttl","encode","ucan","decode","resolver","encodedHeader","encodedPayload","utf8","p","base64","P","N","Gx","Gy","CURVE","err","m","str","s","au8","a","l","u8n","data","toU8","len","h2b","mod","b","r","isPoint","p","Point","Gpows","_Point","ex","ey","ez","et","hex","strict","d","normed","y","b2n_LE","y2","u","v","isValid","x","uvRatio","isXOdd","other","X1","Y1","Z1","X2","Y2","Z2","X1Z2","X2Z1","Y1Z2","Y2Z1","I","A","B","C","D","x1y1","E","G","F","H","X3","Y3","T3","Z3","T1","T2","n","safe","wNAF","f","scalar","z","iz","invert","n2b_32LE","b2h","padh","num","pad","arr","i","j","h","concatB","arrs","sum","md","q","pow2","power","pow_2_252_3","b2","b4","b5","b10","b20","b40","b80","b160","b240","b250","RM1","v3","v7","pow","vx2","root1","root2","useRoot1","useRoot2","noRoot","modL_LE","hash","_shaS","sha512a","etc","sha512s","hash2extK","hashed","head","prefix","point","pointBytes","getExtendedPublicKeyAsync","priv","getExtendedPublicKey","getPublicKeyAsync","hashFinish","asynchronous","res","sha512a","sha512s","_sign","e","rBytes","msg","P","r","modL_LE","R","G","concatB","hashed","S","mod","N","au8","n2b_32LE","signAsync","privKey","m","toU8","getExtendedPublicKeyAsync","cr","etc","b2h","h2b","concatB","mod","invert","len","crypto","err","u8n","messages","m","_shaS","f","utils","getExtendedPublicKeyAsync","getExtendedPublicKey","w","p","G","W","precompute","points","windows","b","i","wNAF","n","comp","Gpows","neg","cnd","I","wsize","mask","maxNum","shiftBy","off","wbits","off1","off2","cnd1","cnd2","webcrypto","didKeyOrVerifiableDID","type","publicKey","did","_did","DIDKey","u8","equals","webcrypto","checkDid","did","EdDSASigner","_EdDSASigner","#privateKey","privateKey","bytes","utils","publicKey","getPublicKeyAsync","DIDKey","encoded","untag","base64pad","didKeyOrVerifiableDID","message","signAsync","tag","WARN","LOG","DEBUG","VERBOSE","ERROR","E","UcanStoreProxyConnector","_UcanStoreProxyConnector","baseUrl","issuerKey","tmpKey","ucanList","gatewayBaseUrl","url","serviceDID","EdDSASigner","selfAuthUcan","UCAN","car","ucan","encodedProofs","proofCIDs","requestUcan","storeCar","cid","retrieveCar"]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/.pnpm/base-x@4.0.0/node_modules/base-x/src/index.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/utils.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/utf8.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/rfc4648.js","../../../../node_modules/.pnpm/multiformats@13.0.1/node_modules/multiformats/src/hashes/sha2-browser.ts","../../../../node_modules/.pnpm/multiformats@13.0.1/node_modules/multiformats/src/codecs/raw.ts","../../../../node_modules/.pnpm/did-resolver@4.1.0/node_modules/did-resolver/src/resolver.ts","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/varint.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/base-x.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/ec-compression.js","../../../../node_modules/.pnpm/iso-did@1.6.0/node_modules/iso-did/src/common.js","../../../../node_modules/.pnpm/iso-did@1.6.0/node_modules/iso-did/src/core.js","../../../../node_modules/.pnpm/iso-did@1.6.0/node_modules/iso-did/src/key.js","../../../../node_modules/.pnpm/iso-did@1.6.0/node_modules/iso-did/src/index.js","../../../../node_modules/.pnpm/@fission-codes+ucan@0.2.0/node_modules/@fission-codes/ucan/src/jwt.js","../../../../node_modules/.pnpm/@fission-codes+ucan@0.2.0/node_modules/@fission-codes/ucan/src/index.js","../../../../node_modules/.pnpm/@noble+ed25519@2.0.0/node_modules/@noble/ed25519/index.js","../../../../node_modules/.pnpm/iso-base@2.0.1/node_modules/iso-base/src/crypto-browser.js","../../../../node_modules/.pnpm/iso-signatures@0.3.2/node_modules/iso-signatures/src/utils.js","../../../../node_modules/.pnpm/iso-signatures@0.3.2/node_modules/iso-signatures/src/signers/eddsa.js","../src/index.ts"],"sourcesContent":["'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","/**\n * Utilities to work with TypedArrays, BufferSource, and other bytes sources.\n *\n * @module\n */\n\nconst typedArrayTypeNames = /** @type {const} */ ([\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array',\n])\n\n// eslint-disable-next-line unicorn/prefer-set-has\nconst objectTypeNames = /** @type {const} */ ([\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Blob',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'WeakRef',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'FormData',\n 'URLSearchParams',\n 'HTMLElement',\n 'NaN',\n ...typedArrayTypeNames,\n])\n\n/**\n * @typedef {typeof typedArrayTypeNames[number]} TypedArrayTypeName\n * @typedef {typeof objectTypeNames[number]} ObjectTypeName\n */\n\n/**\n * @param {unknown} name\n * @returns {name is TypedArrayTypeName}\n */\nfunction isTypedArrayName(name) {\n return typedArrayTypeNames.includes(/** @type {TypedArrayTypeName} */ (name))\n}\n\n/**\n * @param {unknown} name\n * @returns {name is ObjectTypeName}\n */\nfunction isObjectTypeName(name) {\n return objectTypeNames.includes(/** @type {ObjectTypeName} */ (name))\n}\n\n/**\n * @param {unknown} value\n * @returns {ObjectTypeName | undefined}\n */\nexport function getObjectType(value) {\n const objectTypeName = toString.call(value).slice(8, -1)\n\n if (isObjectTypeName(objectTypeName)) {\n return objectTypeName\n }\n}\n\n/**\n * @template T\n * @param {ObjectTypeName} type\n */\nexport function isObjectOfType(type) {\n /**\n * @param {unknown} value\n * @returns {value is T}\n */\n function is(value) {\n return getObjectType(value) === type\n }\n return is\n}\n\n/**\n * Check if value is TypeArray\n *\n * @param {unknown} value\n * @returns {value is import(\"./types\").TypedArray}\n */\nexport function isTypedArray(value) {\n return isTypedArrayName(getObjectType(value))\n}\n\n/**\n * @type {(value: unknown) => value is ArrayBuffer}\n */\nexport const isArrayBuffer = isObjectOfType('ArrayBuffer')\n\n/**\n * Check if value is BufferSource\n *\n * @param {unknown} value\n * @returns {value is BufferSource}\n */\nexport function isBufferSource(value) {\n return isTypedArray(value) || isArrayBuffer(value)\n}\n\n/**\n * Cast typedarray to Uint8Array\n *\n * @param {BufferSource} arr\n */\nexport function u8(arr) {\n return ArrayBuffer.isView(arr)\n ? new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength)\n : new Uint8Array(arr)\n}\n\n/**\n * Cast TypedArray to Buffer\n *\n * @param {BufferSource | string} arr\n * @param {BufferEncoding} [encoding]\n */\nexport function buf(arr, encoding = 'utf8') {\n if (ArrayBuffer.isView(arr)) {\n return globalThis.Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength)\n }\n\n if (typeof arr === 'string') {\n return globalThis.Buffer.from(arr, encoding)\n }\n\n return globalThis.Buffer.from(arr)\n}\n\n/**\n * Returns a new Uint8Array created by concatenating the passed ArrayLikes\n *\n * @param {Array<ArrayLike<number>>} arrays\n * @param {number} [length]\n */\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0)\n }\n\n const output = new Uint8Array(length)\n let offset = 0\n\n for (const arr of arrays) {\n output.set(arr, offset)\n offset += arr.length\n }\n\n return output\n}\n\n/**\n * Checks if two Uint8Arrays are equal\n *\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nexport function equals(aa, bb) {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n","/**\n * UTF-8 codec\n *\n * @module\n */\nimport { buf, isBufferSource, u8 } from './utils.js'\n\nconst textDecoder = new TextDecoder()\nconst textEncoder = new TextEncoder()\n/**\n * @type {import(\"./types\").Codec}\n */\nexport const utf8 = {\n encode(input) {\n if (typeof input === 'string') {\n return input\n }\n if (globalThis.Buffer) {\n return buf(input).toString('utf8')\n }\n\n return textDecoder.decode(input)\n },\n decode(input) {\n if (isBufferSource(input)) {\n return u8(input)\n }\n if (globalThis.Buffer) {\n return u8(buf(input))\n }\n return textEncoder.encode(input)\n },\n}\n","/**\n * RFC4648 codec factory and predefines `base2`, `base8`, `hex`, `base16`, `base32`, `base32hex`, `base64` and `base64url` alphabets and {@link Codec | Codecs}.\n *\n * @module\n */\n\n/* eslint-disable unicorn/prefer-math-trunc */\n/* eslint-disable unicorn/no-for-loop */\n/** @typedef {import('./types').Codec} Codec */\n\nimport { utf8 } from './utf8.js'\nimport { isBufferSource, u8 } from './utils.js'\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar) => {\n // Build the character lookup table:\n /** @type {Record<string, number>} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array(((end * bitsPerChar) / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError('Invalid character ' + string[i])\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {boolean} pad\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar, pad) => {\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/** @type {Record<string, [number, string]>} */\nconst bases = {\n base2: [1, '01'],\n base8: [3, '01234567'],\n hex: [4, '0123456789abcdef'],\n base16: [4, '0123456789ABCDEF'],\n base32: [5, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'],\n base32hex: [5, '0123456789ABCDEFGHIJKLMNOPQRSTUV'],\n base64: [\n 6,\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n ],\n base64url: [\n 6,\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n ],\n}\n\n/**\n * RFC4648 Factory\n *\n * @param {string} base\n * @param {boolean} [padding]\n * @param {((str: string) => string)} [normalize]\n * @returns {Codec}\n */\nexport function rfc4648(base, padding = false, normalize) {\n const [bits, alphabet] = bases[base]\n return {\n encode(input, pad) {\n if (typeof input === 'string') {\n if (normalize) {\n input = normalize(input)\n }\n input = utf8.decode(input)\n }\n\n return encode(u8(input), alphabet, bits, pad ?? padding)\n },\n decode(input) {\n if (isBufferSource(input)) {\n input = utf8.encode(input)\n }\n\n if (normalize) {\n input = normalize(input)\n }\n\n return decode(input, alphabet, bits)\n },\n }\n}\n\n/**\n * Matches node\n */\nexport const hex = rfc4648('hex', true, (str) => str.toLowerCase())\nexport const base2 = rfc4648('base2')\nexport const base8 = rfc4648('base8')\nexport const base16 = rfc4648('base16')\nexport const base32 = rfc4648('base32')\nexport const base32hex = rfc4648('base32hex', true)\nexport const base64 = rfc4648('base64')\nexport const base64pad = rfc4648('base64', true)\n/**\n * Base 64 URL\n *\n * Padding is skipped by default\n */\nexport const base64url = rfc4648('base64url', false)\n","/* global crypto */\n\nimport { from } from './hasher.js'\n\nfunction sha (name: AlgorithmIdentifier): (data: Uint8Array) => Promise<Uint8Array> {\n return async data => new Uint8Array(await crypto.subtle.digest(name, data))\n}\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n})\n","import { coerce } from '../bytes.js'\nimport type { ByteView } from './interface.js'\n\nexport const name = 'raw'\nexport const code = 0x55\n\nexport function encode (node: Uint8Array): ByteView<Uint8Array> {\n return coerce(node)\n}\n\nexport function decode (data: ByteView<Uint8Array>): Uint8Array {\n return coerce(data)\n}\n","// Copyright 2018 Consensys AG\n\n// Licensed under the Apache License, Version 2.0(the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n// http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/**\n * Defines an object type that can be extended with other properties.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Extensible = Record<string, any>\n\n/**\n * Defines the result of a DID resolution operation.\n *\n * @see {@link Resolvable.resolve}\n * @see {@link https://www.w3.org/TR/did-core/#did-resolution}\n */\nexport interface DIDResolutionResult {\n '@context'?: 'https://w3id.org/did-resolution/v1' | string | string[]\n didResolutionMetadata: DIDResolutionMetadata\n didDocument: DIDDocument | null\n didDocumentMetadata: DIDDocumentMetadata\n}\n\n/**\n * Describes the options forwarded to the resolver when executing a {@link Resolvable.resolve} operation.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-resolution-options}\n */\nexport interface DIDResolutionOptions extends Extensible {\n accept?: string\n}\n\n/**\n * Encapsulates the resolution metadata resulting from a {@link Resolvable.resolve} operation.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-resolution-metadata}\n */\nexport interface DIDResolutionMetadata extends Extensible {\n contentType?: string\n error?: 'invalidDid' | 'notFound' | 'representationNotSupported' | 'unsupportedDidMethod' | string\n}\n\n/**\n * Represents metadata about the DID document resulting from a {@link Resolvable.resolve} operation.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-document-metadata}\n */\nexport interface DIDDocumentMetadata extends Extensible {\n created?: string\n updated?: string\n deactivated?: boolean\n versionId?: string\n nextUpdate?: string\n nextVersionId?: string\n equivalentId?: string\n canonicalId?: string\n}\n\n/**\n * Represents the Verification Relationship between a DID subject and a Verification Method.\n *\n * @see {@link https://www.w3.org/TR/did-core/#verification-relationships}\n */\nexport type KeyCapabilitySection =\n | 'authentication'\n | 'assertionMethod'\n | 'keyAgreement'\n | 'capabilityInvocation'\n | 'capabilityDelegation'\n\n/**\n * Represents a DID document.\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-document-properties}\n */\nexport type DIDDocument = {\n '@context'?: 'https://www.w3.org/ns/did/v1' | string | string[]\n id: string\n alsoKnownAs?: string[]\n controller?: string | string[]\n verificationMethod?: VerificationMethod[]\n service?: Service[]\n /**\n * @deprecated\n */\n publicKey?: VerificationMethod[]\n} & {\n [x in KeyCapabilitySection]?: (string | VerificationMethod)[]\n}\n\n/**\n * Represents a Service entry in a {@link https://www.w3.org/TR/did-core/#did-document-properties | DID document}.\n *\n * @see {@link https://www.w3.org/TR/did-core/#services}\n * @see {@link https://www.w3.org/TR/did-core/#service-properties}\n */\nexport interface Service {\n id: string\n type: string\n serviceEndpoint: ServiceEndpoint | ServiceEndpoint[]\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any\n}\n\n/**\n * Represents an endpoint of a Service entry in a DID document.\n *\n * @see {@link https://www.w3.org/TR/did-core/#dfn-serviceendpoint}\n * @see {@link https://www.w3.org/TR/did-core/#services}\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ServiceEndpoint = string | Record<string, any>\n\n/**\n * Encapsulates a JSON web key type that includes only the public properties that\n * can be used in DID documents.\n *\n * The private properties are intentionally omitted to discourage the use\n * (and accidental disclosure) of private keys in DID documents.\n *\n * @see {@link https://www.rfc-editor.org/rfc/rfc7517 | RFC7517 JsonWebKey (JWK)}\n */\nexport interface JsonWebKey extends Extensible {\n alg?: string\n crv?: string\n e?: string\n ext?: boolean\n key_ops?: string[]\n kid?: string\n kty: string\n n?: string\n use?: string\n x?: string\n y?: string\n}\n\n/**\n * Represents the properties of a Verification Method listed in a DID document.\n *\n * This data type includes public key representations that are no longer present in the spec but are still used by\n * several DID methods / resolvers and kept for backward compatibility.\n *\n * @see {@link https://www.w3.org/TR/did-core/#verification-methods}\n * @see {@link https://www.w3.org/TR/did-core/#verification-method-properties}\n */\nexport interface VerificationMethod {\n id: string\n type: string\n controller: string\n publicKeyBase58?: string\n publicKeyBase64?: string\n publicKeyJwk?: JsonWebKey\n publicKeyHex?: string\n publicKeyMultibase?: string\n blockchainAccountId?: string\n ethereumAddress?: string\n\n // ConditionalProof2022 subtypes\n conditionOr?: VerificationMethod[]\n conditionAnd?: VerificationMethod[]\n threshold?: number\n conditionThreshold?: VerificationMethod[]\n conditionWeightedThreshold?: ConditionWeightedThreshold[]\n conditionDelegated?: string\n relationshipParent?: string[]\n relationshipChild?: string[]\n relationshipSibling?: string[]\n}\n\nexport interface ConditionWeightedThreshold {\n condition: VerificationMethod\n weight: number\n}\n\n/**\n * URI params resulting from parsing a DID URI\n */\nexport interface Params {\n [index: string]: string\n}\n\n/**\n * An object containing the results of parsing a DID URI string.\n *\n * This is forwarded to implementations of particular DID resolvers when calling the `resolve` method.\n *\n * @see {@link Resolver}\n * @see {@link Resolvable.resolve}\n */\nexport interface ParsedDID {\n did: string\n didUrl: string\n method: string\n id: string\n path?: string\n fragment?: string\n query?: string\n params?: Params\n}\n\n/**\n * The DID resolution function that DID Resolver implementations must implement.\n */\nexport type DIDResolver = (\n did: string,\n parsed: ParsedDID,\n resolver: Resolvable,\n options: DIDResolutionOptions\n) => Promise<DIDResolutionResult>\nexport type WrappedResolver = () => Promise<DIDResolutionResult>\nexport type DIDCache = (parsed: ParsedDID, resolve: WrappedResolver) => Promise<DIDResolutionResult>\nexport type LegacyDIDResolver = (did: string, parsed: ParsedDID, resolver: Resolvable) => Promise<DIDDocument>\n\nexport type ResolverRegistry = Record<string, DIDResolver>\n\nexport interface LegacyResolverRegistry {\n [index: string]: LegacyDIDResolver\n}\n\nexport interface ResolverOptions {\n cache?: DIDCache | boolean | undefined\n legacyResolvers?: LegacyResolverRegistry\n}\n\nexport function inMemoryCache(): DIDCache {\n const cache: Map<string, DIDResolutionResult> = new Map()\n return async (parsed: ParsedDID, resolve) => {\n if (parsed.params && parsed.params['no-cache'] === 'true') return await resolve()\n\n const cached = cache.get(parsed.didUrl)\n if (cached !== undefined) return cached\n const result = await resolve()\n if (result.didResolutionMetadata?.error !== 'notFound') {\n cache.set(parsed.didUrl, result)\n }\n return result\n }\n}\n\nexport function noCache(parsed: ParsedDID, resolve: WrappedResolver): Promise<DIDResolutionResult> {\n return resolve()\n}\n\nconst PCT_ENCODED = '(?:%[0-9a-fA-F]{2})'\nconst ID_CHAR = `(?:[a-zA-Z0-9._-]|${PCT_ENCODED})`\nconst METHOD = '([a-z0-9]+)'\nconst METHOD_ID = `((?:${ID_CHAR}*:)*(${ID_CHAR}+))`\nconst PARAM_CHAR = '[a-zA-Z0-9_.:%-]'\nconst PARAM = `;${PARAM_CHAR}+=${PARAM_CHAR}*`\nconst PARAMS = `((${PARAM})*)`\nconst PATH = `(/[^#?]*)?`\nconst QUERY = `([?][^#]*)?`\nconst FRAGMENT = `(#.*)?`\nconst DID_MATCHER = new RegExp(`^did:${METHOD}:${METHOD_ID}${PARAMS}${PATH}${QUERY}${FRAGMENT}$`)\n\n/**\n * Parses a DID URL and builds a {@link ParsedDID | ParsedDID object}\n *\n * @param didUrl - the DID URL string to be parsed\n * @returns a ParsedDID object, or null if the input is not a DID URL\n */\nexport function parse(didUrl: string): ParsedDID | null {\n if (didUrl === '' || !didUrl) return null\n const sections = didUrl.match(DID_MATCHER)\n if (sections) {\n const parts: ParsedDID = {\n did: `did:${sections[1]}:${sections[2]}`,\n method: sections[1],\n id: sections[2],\n didUrl,\n }\n if (sections[4]) {\n const params = sections[4].slice(1).split(';')\n parts.params = {}\n for (const p of params) {\n const kv = p.split('=')\n parts.params[kv[0]] = kv[1]\n }\n }\n if (sections[6]) parts.path = sections[6]\n if (sections[7]) parts.query = sections[7].slice(1)\n if (sections[8]) parts.fragment = sections[8].slice(1)\n return parts\n }\n return null\n}\n\nconst EMPTY_RESULT: DIDResolutionResult = {\n didResolutionMetadata: {},\n didDocument: null,\n didDocumentMetadata: {},\n}\n\nexport function wrapLegacyResolver(resolve: LegacyDIDResolver): DIDResolver {\n return async (did, parsed, resolver) => {\n try {\n const doc = await resolve(did, parsed, resolver)\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { contentType: 'application/did+ld+json' },\n didDocument: doc,\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: {\n error: 'notFound',\n message: e.toString(), // This is not in spec, but may be helpful\n },\n }\n }\n }\n}\n\n/**\n * The method signature implemented by this resolver.\n */\nexport interface Resolvable {\n resolve: (didUrl: string, options?: DIDResolutionOptions) => Promise<DIDResolutionResult>\n}\n\n/**\n * This implementation of {@link Resolvable} bundles together multiple implementations of {@link DIDResolver} and\n * presents a single function call to users.\n */\nexport class Resolver implements Resolvable {\n private readonly registry: ResolverRegistry\n private readonly cache: DIDCache\n\n constructor(registry: ResolverRegistry = {}, options: ResolverOptions = {}) {\n this.registry = registry\n this.cache = options.cache === true ? inMemoryCache() : options.cache || noCache\n if (options.legacyResolvers) {\n Object.keys(options.legacyResolvers).map((methodName) => {\n if (!this.registry[methodName]) {\n this.registry[methodName] = wrapLegacyResolver(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.legacyResolvers![methodName]\n )\n }\n })\n }\n }\n\n async resolve(didUrl: string, options: DIDResolutionOptions = {}): Promise<DIDResolutionResult> {\n const parsed = parse(didUrl)\n if (parsed === null) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'invalidDid' },\n }\n }\n const resolver = this.registry[parsed.method]\n if (!resolver) {\n return {\n ...EMPTY_RESULT,\n didResolutionMetadata: { error: 'unsupportedDidMethod' },\n }\n }\n return this.cache(parsed, () => resolver(parsed.did, parsed, this, options))\n }\n}\n","/**\n * Variable length integer encoding with helpers for tagging Uint8Arrays with multicodec prefixes.\n *\n * @module\n */\n/* eslint-disable no-nested-ternary */\nconst MSB = 0x80\nconst REST = 0x7f\nconst MSBALL = ~REST\nconst INT = Math.pow(2, 31)\n\n/**\n * @param {number} num\n * @param {Uint8Array} out\n * @param {number} [offset=0]\n */\nfunction encode(num, out, offset = 0) {\n out = out || []\n const oldOffset = offset\n\n while (num >= INT) {\n out[offset++] = (num & 0xff) | MSB\n num /= 128\n }\n while (num & MSBALL) {\n out[offset++] = (num & 0xff) | MSB\n num >>>= 7\n }\n // eslint-disable-next-line unicorn/prefer-math-trunc\n out[offset] = num | 0\n\n // @ts-ignore\n encode.bytes = offset - oldOffset + 1\n\n return out\n}\n\nconst MSB$1 = 0x80\nconst REST$1 = 0x7f\n\n/**\n * @param {Uint8Array} buf\n * @param {number} [offset=0]\n * @returns {[code: number, size: number]}\n */\nfunction decode(buf, offset = 0) {\n let res = 0\n let shift = 0\n let counter = offset\n let b\n let bytes = 0\n const l = buf.length\n\n do {\n if (counter >= l) {\n bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res +=\n shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB$1)\n\n bytes = counter - offset\n\n return [res, bytes]\n}\n\nconst N1 = Math.pow(2, 7)\nconst N2 = Math.pow(2, 14)\nconst N3 = Math.pow(2, 21)\nconst N4 = Math.pow(2, 28)\nconst N5 = Math.pow(2, 35)\nconst N6 = Math.pow(2, 42)\nconst N7 = Math.pow(2, 49)\nconst N8 = Math.pow(2, 56)\nconst N9 = Math.pow(2, 63)\n\nconst length = function (/** @type {number} */ value) {\n return value < N1\n ? 1\n : value < N2\n ? 2\n : value < N3\n ? 3\n : value < N4\n ? 4\n : value < N5\n ? 5\n : value < N6\n ? 6\n : value < N7\n ? 7\n : value < N8\n ? 8\n : value < N9\n ? 9\n : 10\n}\n\nexport const varint = {\n encode,\n decode,\n encodingLength: length,\n}\n\n/**\n * @param {number} code\n * @param {Uint8Array} bytes\n */\nexport function tag(code, bytes) {\n const offset = varint.encodingLength(code)\n const taggedBytes = new Uint8Array(bytes.byteLength + offset)\n varint.encode(code, taggedBytes, 0)\n taggedBytes.set(bytes, offset)\n\n return taggedBytes\n}\n\n/**\n * @param {number} code\n * @param {Uint8Array} taggedBytes\n */\nexport function untag(code, taggedBytes) {\n const [tag, size] = varint.decode(taggedBytes)\n if (tag === code) {\n return new Uint8Array(\n taggedBytes.buffer,\n taggedBytes.byteOffset + size,\n taggedBytes.byteLength - size\n )\n } else {\n throw new Error(\n `Expected multiformat with codec 0x${code.toString(\n 16\n )} tag instead got 0x${tag.toString(16)}`\n )\n }\n}\n","/**\n * Fast base encoding / decoding of any given alphabet using bitcoin style leading zero compression.\n *\n * Uses {@link https://github.com/cryptocoinjs/base-x | cryptocoinjs/base-x} to build a {@link Codec} factory and prefines `base10`, `base36` and `base58btc` alphabets and {@link Codec | Codecs}.\n *\n * @module\n */\n\nimport _baseX from 'base-x'\nimport { utf8 } from './utf8.js'\nimport { isBufferSource, u8 } from './utils.js'\n\n/** @typedef {import('./types.js').Codec} Codec */\n\n/** @type {Record<string, string>} */\nconst bases = {\n base10: '0123456789',\n base36: '0123456789abcdefghijklmnopqrstuvwxyz',\n base58btc: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz',\n}\n\n/**\n * Base X Factory\n *\n * @param {string} base\n * @returns {Codec}\n */\nexport function baseX(base) {\n const alphabet = bases[base]\n return {\n encode(input, pad) {\n if (typeof input === 'string') {\n input = utf8.decode(input)\n }\n return _baseX(alphabet).encode(u8(input))\n },\n decode(input) {\n if (isBufferSource(input)) {\n input = utf8.encode(input)\n }\n\n return _baseX(alphabet).decode(input)\n },\n }\n}\n\nexport const base10 = baseX('base10')\nexport const base36 = baseX('base36')\nexport const base58btc = baseX('base58btc')\n","/**\n * Elliptic Curve point compression\n *\n * Decompress a compressed public key in SEC format.\n * See section 2.3.3 in {@link https://www.secg.org/sec1-v2.pdf | SEC 1 v2}\n *\n * - https://stackoverflow.com/questions/17171542/algorithm-for-elliptic-curve-point-compression/30431547#30431547\n * - https://github.com/w3c-ccg/did-method-key/issues/32\n *\n * @module\n */\nimport * as bigintModArith from 'bigint-mod-arith'\nimport { base10 } from './base-x.js'\nimport { concat } from './utils.js'\n\n/**\n * @typedef {'P-256' | 'P-384' | 'P-521'} Curve\n */\n\n/** @type {Record<Curve, number>} */\nconst curveToPointLength = {\n 'P-256': 64,\n 'P-384': 96,\n 'P-521': 132,\n}\n\n/**\n * Elliptic curves constants\n *\n * @param {Curve} curve\n */\nexport function getConstantsForCurve(curve) {\n let prime, b, pIdent\n const two = BigInt(2)\n\n switch (curve) {\n case 'P-256': {\n prime = two ** 256n - two ** 224n + two ** 192n + two ** 96n - 1n\n pIdent = (prime + 1n) / 4n\n b =\n 41_058_363_725_152_142_129_326_129_780_047_268_409_114_441_015_993_725_554_835_256_314_039_467_401_291n\n break\n }\n case 'P-384': {\n prime = two ** 384n - two ** 128n - two ** 96n + two ** 32n - 1n\n pIdent = (prime + 1n) / 4n\n b =\n 27_580_193_559_959_705_877_849_011_840_389_048_093_056_905_856_361_568_521_428_707_301_988_689_241_309_860_865_136_260_764_883_745_107_765_439_761_230_575n\n break\n }\n case 'P-521': {\n prime = two ** 521n - 1n\n pIdent = (prime + 1n) / 4n\n b =\n 1_093_849_038_073_734_274_511_112_390_766_805_569_936_207_598_951_683_748_994_586_394_495_953_116_150_735_016_013_708_737_573_759_623_248_592_132_296_706_313_309_438_452_531_591_012_912_142_327_488_478_985_984n\n break\n }\n\n default: {\n throw new Error(`Unsupported curve ${curve}`)\n }\n }\n\n return { prime, b, pIdent }\n}\n\n/**\n * @param {Uint8Array} key\n */\nexport function isCompressed(key) {\n return key[0] === 0x02 || key[0] === 0x03\n}\n\n/**\n * @param {Uint8Array} key\n */\nexport function isUncompressed(key) {\n return key[0] === 0x04\n}\n\n/**\n * Elliptic Curve point compression\n *\n * @param { Uint8Array } pubkeyBytes\n */\nexport function compress(pubkeyBytes) {\n if (!isUncompressed(pubkeyBytes)) {\n throw new Error('Expected first byte to be 0x04, meaning uncompressed key.')\n }\n // first byte is a prefix\n const unprefixed = pubkeyBytes.subarray(1)\n const x = unprefixed.subarray(0, unprefixed.length / 2)\n const y = unprefixed.subarray(unprefixed.length / 2, unprefixed.length)\n const out = new Uint8Array(x.length + 1)\n\n // eslint-disable-next-line unicorn/prefer-at\n out[0] = 2 + (y[y.length - 1] & 1)\n out.set(x, 1)\n\n return out\n}\n\n/**\n * Elliptic Curve point decompression\n *\n * @param {Uint8Array} comp - Compressed public key. 1st byte: 0x02 for even or 0x03 for odd. Following curve size n bytes: x coordinate expressed as big-endian.\n * @param {Curve} curve\n */\nexport function decompress(comp, curve = 'P-256') {\n if (!isCompressed(comp)) {\n throw new TypeError(\n 'Expected first byte to be 0x02 or 0x03, meaning compressed key.'\n )\n }\n\n const { prime, b, pIdent } = getConstantsForCurve(curve)\n\n const signY = BigInt(comp[0] - 2)\n const x = comp.subarray(1)\n const xBig = BigInt(base10.encode(x))\n\n const a = xBig ** 3n - xBig * 3n + b\n let yBig = bigintModArith.modPow(a, pIdent, prime)\n\n // If the parity doesn't match it's the *other* root\"\n if (yBig % 2n !== signY) {\n yBig = prime - yBig\n }\n\n const y = base10.decode(yBig.toString(10))\n\n // left-pad for smaller than curve size byte y\n const offset = curveToPointLength[curve] / 2 - y.length\n const yPadded = new Uint8Array(curveToPointLength[curve] / 2)\n yPadded.set(y, offset)\n\n // concat coords & prepend compressed prefix\n // eslint-disable-next-line unicorn/prefer-spread\n const publicKey = concat([[0x04], x, yPadded])\n return publicKey\n}\n","/* eslint-disable unicorn/numeric-separators-style */\nexport const KEY_TYPE_ALG = /** @type {const} */ ({\n Ed25519: 'EdDSA',\n 'P-256': 'ES256',\n 'P-384': 'ES384',\n 'P-521': 'ES512',\n secp256k1: 'ES256K',\n RSA: 'RS256',\n})\n\nexport const ALG_KEY_TYPE = /** @type {const} */ ({\n EdDSA: 'Ed25519',\n ES256: 'P-256',\n ES384: 'P-384',\n ES512: 'P-521',\n ES256K: 'secp256k1',\n RS256: 'RSA',\n})\n\n/**\n * @typedef {keyof ALG_KEY_TYPE} SignatureAlgorithm\n * @typedef {keyof KEY_TYPE_ALG} KeyType\n */\n\nexport const KEY_TYPE_CODE = /** @type {const} */ ({\n Ed25519: 0xed,\n RSA: 0x1205,\n 'P-256': 0x1200,\n 'P-384': 0x1201,\n 'P-521': 0x1202,\n secp256k1: 0xe7,\n})\n\nexport const CODE_KEY_TYPE = /** @type {const} */ ({\n 0xed: 'Ed25519',\n 0x1205: 'RSA',\n 0x1200: 'P-256',\n 0x1201: 'P-384',\n 0x1202: 'P-521',\n 0xe7: 'secp256k1',\n})\n\n/**\n * @typedef {keyof CODE_KEY_TYPE} PublicKeyCode\n */\n\n/**\n * Key type to signature algorithm name.\n *\n * @param {string} type\n * @throws {TypeError} if the key type is not supported.\n */\nexport function keyTypeToAlg(type) {\n // @ts-ignore\n const alg = /** @type {SignatureAlgorithm} */ (KEY_TYPE_ALG[type])\n\n if (!alg) {\n throw new TypeError(`Unsupported key type ${type}`)\n }\n return alg\n}\n\n/**\n * Signature algorithm name to key type.\n *\n * @param {SignatureAlgorithm} alg\n * @throws {TypeError} if the algorithm is not supported.\n */\nexport function algToKeyType(alg) {\n const type = ALG_KEY_TYPE[alg]\n\n if (!type) {\n throw new TypeError(`Unsupported algorithm ${alg}`)\n }\n return type\n}\n","import { parse } from 'did-resolver'\n\n/**\n * @typedef {import('./types').DIDURLObject} DIDURLObject\n */\n\n/**\n * DID Core\n *\n * @implements {DIDURLObject}\n */\nexport class DIDCore {\n /**\n *\n * @param {DIDURLObject} parsed\n */\n constructor(parsed) {\n this.did = parsed.did\n this.didUrl = parsed.didUrl\n this.method = parsed.method\n this.id = parsed.id\n this.path = parsed.path\n this.fragment = parsed.fragment\n this.query = parsed.query\n }\n\n /**\n * Create a DIDCore from a DID string\n *\n * @param {string} did\n */\n static fromString(did) {\n const parsedDid = /** @type {DIDURLObject} */ (parse(did))\n if (parsedDid) {\n return new DIDCore(parsedDid)\n } else {\n throw new TypeError(`Invalid DID \"${did}\"`)\n }\n }\n\n toString() {\n return this.didUrl\n }\n}\n","import * as EC from 'iso-base/ec-compression'\nimport { u8 } from 'iso-base/utils'\nimport { tag, varint } from 'iso-base/varint'\nimport { base58btc } from 'multiformats/bases/base58'\nimport { CODE_KEY_TYPE, KEY_TYPE_CODE, keyTypeToAlg } from './common.js'\nimport { DIDCore } from './core.js'\n\n// eslint-disable-next-line no-unused-vars\nimport * as T from './types.js'\n\nexport * from './common.js'\n\nconst DID_KEY_PREFIX = `did:key:`\n\n/**\n * Validate raw public key length\n *\n * @param {number} code\n * @param {Uint8Array} key\n */\nexport function validateRawPublicKeyLength(code, key) {\n switch (code) {\n case KEY_TYPE_CODE.secp256k1: {\n if (key.length !== 33) {\n throw new RangeError(`Secp256k1 public keys must be 33 bytes.`)\n }\n return key\n }\n case KEY_TYPE_CODE.Ed25519: {\n if (key.length !== 32) {\n throw new RangeError(`ed25519 public keys must be 32 bytes.`)\n }\n return key\n }\n case KEY_TYPE_CODE['P-256']: {\n if (EC.isUncompressed(key)) {\n key = EC.compress(key)\n }\n\n if (EC.isCompressed(key) && key.length !== 33) {\n throw new RangeError(`p256 public keys must be 33 bytes.`)\n }\n\n return key\n }\n case KEY_TYPE_CODE['P-384']: {\n if (EC.isUncompressed(key)) {\n key = EC.compress(key)\n }\n if (EC.isCompressed(key) && key.length !== 49) {\n throw new RangeError(`p384 public keys must be 49 bytes.`)\n }\n return key\n }\n case KEY_TYPE_CODE['P-521']: {\n if (EC.isUncompressed(key)) {\n key = EC.compress(key)\n }\n if (EC.isCompressed(key) && key.length !== 67) {\n throw new RangeError(`p521 public keys must be 67 bytes.`)\n }\n return key\n }\n\n case KEY_TYPE_CODE.RSA: {\n if (key.length !== 270 && key.length !== 526) {\n throw new RangeError(\n `RSA public keys must be 270 bytes for 2048 bits or 526 bytes for 4096 bits.`\n )\n }\n return key\n }\n default: {\n throw new RangeError(\n `Unsupported DID encoding, unknown multicode 0x${code.toString(16)}.`\n )\n }\n }\n}\n\n/**\n * did:key Method\n *\n * @implements {T.VerifiableDID}\n */\nexport class DIDKey extends DIDCore {\n /**\n *\n * @param {T.DIDURLObject} did\n * @param {T.KeyType} type\n * @param {Uint8Array} key\n */\n constructor(did, type, key) {\n super(did)\n this.type = type\n this.publicKey = key\n this.code = KEY_TYPE_CODE[type]\n this.alg = keyTypeToAlg(type)\n this.url = did\n this.didKey = did.did\n }\n\n /**\n * Create a DIDKey from a DID string\n *\n * @param {string} didString\n */\n static fromString(didString) {\n const did = DIDCore.fromString(didString)\n\n if (did.method === 'key') {\n const encodedKey = base58btc.decode(did.id)\n const [code, size] = varint.decode(encodedKey)\n const key = validateRawPublicKeyLength(code, encodedKey.slice(size))\n\n return new DIDKey(\n did,\n CODE_KEY_TYPE[/** @type {T.PublicKeyCode} */ (code)],\n key\n )\n } else {\n throw new TypeError(`Invalid DID \"${did}\", method must be 'key'`)\n }\n }\n\n /**\n * Create a DIDKey from a public key bytes\n *\n * @param {T.KeyType} type\n * @param {BufferSource} key\n */\n static fromPublicKey(type, key) {\n const code = KEY_TYPE_CODE[type]\n if (!code) {\n throw new TypeError(`Unsupported key type \"${type}\"`)\n }\n\n const keyBytes = validateRawPublicKeyLength(code, u8(key))\n const id = base58btc.encode(tag(code, keyBytes))\n\n return new DIDKey(\n {\n did: `${DID_KEY_PREFIX}${id}`,\n didUrl: `${DID_KEY_PREFIX}${id}`,\n id,\n method: 'key',\n },\n type,\n keyBytes\n )\n }\n\n /**\n *\n * @returns {T.DIDDocument}\n */\n get document() {\n const id = `${this.did}#${this.id}`\n return {\n '@context': [\n 'https://www.w3.org/ns/did/v1',\n 'https://w3id.org/security/multikey/v1',\n ],\n id: this.did,\n verificationMethod: [\n {\n id,\n type: 'MultiKey',\n controller: this.did,\n publicKeyMultibase: this.id,\n },\n ],\n authentication: [id],\n assertionMethod: [id],\n capabilityDelegation: [id],\n capabilityInvocation: [id],\n }\n }\n}\n\n/** @type {import('did-resolver').DIDResolver} */\nasync function didKeyResolver(did, parsedDid) {\n const didKey = DIDKey.fromString(did)\n return {\n didDocumentMetadata: {},\n didResolutionMetadata: {\n contentType: 'application/did+ld+json',\n },\n didDocument: didKey.document,\n }\n}\n\n/** @type {import('did-resolver').ResolverRegistry} */\nexport const resolver = {\n key: didKeyResolver,\n}\n","import { Resolver } from 'did-resolver'\nimport { varint } from 'iso-base/varint'\nimport { concat } from 'iso-base/utils'\nimport { base64url } from 'iso-base/rfc4648'\nimport { base58btc } from 'multiformats/bases/base58'\nimport * as DidKey from './key.js'\nimport { DIDCore } from './core.js'\n\n// eslint-disable-next-line no-unused-vars\nimport * as T from './types.js'\nimport {\n CODE_KEY_TYPE,\n keyTypeToAlg,\n validateRawPublicKeyLength,\n} from './key.js'\n\n/**\n * Resolve a DID to a DID Document\n *\n * @see https://www.w3.org/TR/did-core/#resolution\n *\n * @param {T.DID} did\n * @param {T.ResolveOptions} [opts]\n */\nexport async function resolve(did, opts = {}) {\n const resolver = new Resolver(\n {\n ...DidKey.resolver,\n ...opts.resolvers,\n },\n { cache: opts.cache ?? true }\n )\n\n const r = await resolver.resolve(did, {\n accept: 'application/did+ld+json',\n })\n\n if (r.didResolutionMetadata.error) {\n throw new Error(r.didResolutionMetadata.error)\n }\n\n return /** @type {T.DIDDocument} */ (r.didDocument)\n}\n\n/**\n * Parse a DID string into a DID Core object\n *\n * @see https://www.w3.org/TR/did-core/#identifier\n *\n * @param {string} did\n */\nexport function parse(did) {\n return DIDCore.fromString(did)\n}\n\n/**\n * Dereference a DID URL\n *\n * @see https://www.w3.org/TR/did-core/#did-url-dereferencing\n * @param {T.DIDURLObject} didObject\n * @param {T.ResolveOptions} [opts]\n */\nexport async function dereference(didObject, opts) {\n const didDocument = await resolve(didObject.did, opts)\n\n if (!didDocument) {\n throw new Error(`No DID Document found for ${didObject.did}`)\n }\n\n return derefDocument(didObject, didDocument)\n}\n\n/**\n * Dereference a DID URL from a DID Document\n *\n * @param {T.DIDURLObject} didObject\n * @param {T.DIDDocument} document\n */\nexport function derefDocument(didObject, document) {\n const fragment = didObject.fragment ?? didObject.id\n /** @type {T.VerificationMethod | undefined} */\n let method\n\n if (document.verificationMethod) {\n method = document.verificationMethod.find(\n (vm) => vm.id === `${didObject.did}#${fragment}`\n )\n }\n\n if (!method && document.authentication) {\n method = /** @type {T.VerificationMethod} */ (\n document.authentication.find(\n (vm) =>\n typeof vm !== 'string' && vm.id === `${didObject.did}#${fragment}`\n )\n )\n }\n\n return method\n}\n\n/**\n * Verifiable DID\n *\n * @implements {T.VerifiableDID}\n */\nexport class DID {\n /**\n *\n * @param {Omit<T.VerifiableDID, 'didKey'>} opts\n */\n constructor(opts) {\n this.did = opts.did\n this.publicKey = opts.publicKey\n this.alg = opts.alg\n this.type = opts.type\n this.document = opts.document\n this.url = opts.url\n this.didKey = DidKey.DIDKey.fromPublicKey(opts.type, opts.publicKey).url.did\n }\n\n /**\n *\n * @param {T.DIDURL} did\n * @param {T.ResolveOptions} [opts]\n */\n static async fromString(did, opts = {}) {\n const parsedDid = parse(did)\n const document = await resolve(parsedDid.did, opts)\n const method = derefDocument(parsedDid, document)\n\n if (!method) {\n throw new Error(`No verification method found for ${did}`)\n }\n\n if (method.type === 'MultiKey') {\n const encodedKey = base58btc.decode(method.publicKeyMultibase)\n const [code, size] = varint.decode(encodedKey)\n const key = validateRawPublicKeyLength(code, encodedKey.slice(size))\n const type = CODE_KEY_TYPE[/** @type {T.PublicKeyCode} */ (code)]\n\n return new DID({\n did: parsedDid.did,\n alg: keyTypeToAlg(type),\n type,\n publicKey: key,\n url: parsedDid,\n document,\n })\n }\n\n if (method.publicKeyJwk && method.publicKeyJwk.kty === 'OKP') {\n const publicKey = base64url.decode(method.publicKeyJwk.x)\n const type = method.publicKeyJwk.crv\n const alg = keyTypeToAlg(type)\n return new DID({\n did: parsedDid.did,\n alg,\n type,\n publicKey,\n url: parsedDid,\n document,\n })\n }\n\n if (method.publicKeyJwk && method.publicKeyJwk.kty === 'EC') {\n const type = method.publicKeyJwk.crv\n const didkey = DidKey.DIDKey.fromPublicKey(\n type,\n concat([\n [4],\n base64url.decode(method.publicKeyJwk.x),\n base64url.decode(method.publicKeyJwk.y),\n ])\n )\n const alg = keyTypeToAlg(type)\n return new DID({\n did: parsedDid.did,\n alg,\n type,\n publicKey: didkey.publicKey,\n url: parsedDid,\n document,\n })\n }\n throw new Error(`Unsupported verification method type \"${method.type}\"`)\n }\n\n toString() {\n return this.url.didUrl\n }\n}\n","import { base64url } from 'iso-base/rfc4648'\nimport { sha256 } from 'multiformats/hashes/sha2'\nimport { code as RAW_CODE } from 'multiformats/codecs/raw'\nimport { utf8 } from 'iso-base/utf8'\nimport * as DID from 'iso-did'\nimport { CID } from 'multiformats/cid'\n\n// eslint-disable-next-line no-unused-vars\nimport * as T from './types.js'\n\n/**\n * Serialise Object to JWT style string.\n *\n * @param {import('type-fest').Jsonifiable} input - JSON input\n */\nexport function serialize(input) {\n return base64url.encode(utf8.decode(JSON.stringify(input)))\n}\n\n/**\n * Deserialise JWT style string section to object.\n *\n * @template T\n * @param {string} input\n * @returns {T}\n */\nexport function deserialize(input) {\n let decodedString\n\n try {\n const decodedBytes = base64url.decode(input)\n decodedString = utf8.encode(decodedBytes)\n } catch {\n throw new Error(`Can't parse: ${input}: Can't parse as base64url.`)\n }\n\n try {\n return JSON.parse(decodedString)\n } catch {\n throw new Error(\n `Can't parse: ${input}: Can't parse base64url encoded JSON inside.`\n )\n }\n}\n\n/**\n *\n * @param {T.UCANProps} data\n * @param {import('iso-signatures/types').ISigner<any>} signer\n * @returns {Promise<T.UCANArtifacts>}\n */\nexport async function encode(data, signer) {\n /** @type {import('type-fest').Jsonify<T.JWTHeader>} */\n const header = {\n alg: data.issuer.alg,\n typ: 'JWT',\n }\n /** @type {import('type-fest').Jsonify<T.JWTPayload>} */\n const payload = {\n aud: data.audience,\n iss: data.issuer.did,\n cap: data.capabilities,\n exp: data.expiration,\n ucv: data.version,\n fct: data.facts,\n prf: /** @type {T.StringOf<T.CID>[]} */ (\n data.proofs?.map((p) => p.toString())\n ),\n nbf: data.notBefore,\n nnc: data.nonce,\n }\n\n const headerAndPayload = `${serialize(header)}.${serialize(payload)}`\n const signature = await signer.sign(utf8.decode(headerAndPayload))\n\n const ucan = /** @type {T.JWT} */ (\n `${headerAndPayload}.${base64url.encode(signature)}`\n )\n const bytes = utf8.decode(ucan)\n\n return {\n ucan,\n signature,\n bytes,\n cid: CID.create(1, RAW_CODE, await sha256.digest(bytes)),\n }\n}\n\n/**\n * Decode JWT style string to Object.\n *\n * TODO: add valiation\n *\n * @param {T.JWT} data\n * @return {Promise<{props: T.UCANProps , artifacts: T.UCANArtifacts}>}\n */\nexport async function decode(data) {\n const [encodedHeader, encodedPayload, encodedSignature] = data.split('.')\n if (\n encodedHeader === undefined ||\n encodedPayload === undefined ||\n encodedSignature === undefined\n ) {\n throw new Error(\n `Can't parse UCAN: ${data}: Expected JWT format: 3 dot-separated base64url-encoded values.`\n )\n }\n\n /** @type {T.JWTHeader} */\n const header = deserialize(encodedHeader)\n if (header.typ !== 'JWT') {\n throw new Error(`Expected type \"JWT\" got ${header.typ}.`)\n }\n\n /** @type {T.JWTPayload} */\n const payloadObject = deserialize(encodedPayload)\n const issuer = await DID.DID.fromString(payloadObject.iss)\n\n if (header.alg !== issuer.alg) {\n throw new Error(\n `Expected signature algorithm \"${issuer.alg}\" got ${header.alg}.`\n )\n }\n const signature = base64url.decode(encodedSignature)\n const bytes = utf8.decode(data)\n\n return {\n props: {\n audience: DID.parse(payloadObject.aud).did,\n issuer,\n capabilities: payloadObject.cap,\n expiration: payloadObject.exp,\n version: payloadObject.ucv,\n facts: payloadObject.fct,\n proofs: payloadObject.prf?.map((p) => CID.parse(p)),\n notBefore: payloadObject.nbf,\n nonce: payloadObject.nnc,\n },\n artifacts: {\n signature,\n ucan: data,\n bytes,\n cid: CID.create(1, RAW_CODE, await sha256.digest(bytes)),\n },\n }\n}\n","import { utf8 } from 'iso-base/utf8'\nimport { base64 } from 'iso-base/rfc4648'\nimport * as JWT from './jwt.js'\n\n// eslint-disable-next-line no-unused-vars\nimport * as T from './types.js'\n\n/** @type {T.Version} */\nexport const VERSION = '0.10.0'\n\n/**\n * Returns UTC Unix timestamp for comparing it against time window of the UCAN.\n */\nexport const now = () => Math.floor(Date.now() / 1000)\n\n/**\n * @implements {T.IUcan}\n */\nexport class UCAN {\n /**\n * @param {Omit<T.UCANProps, 'version'>} props\n * @param {T.UCANArtifacts} artifacts\n */\n constructor(props, artifacts) {\n this.issuer = props.issuer\n this.audience = props.audience\n this.version = VERSION\n this.capabilities = props.capabilities\n this.expiration = props.expiration\n this.notBefore = props.notBefore\n this.nonce = props.nonce\n this.facts = props.facts\n this.proofs = props.proofs\n\n this.signature = artifacts.signature\n this.bytes = artifacts.bytes\n this.ucan = artifacts.ucan\n this.cid = artifacts.cid\n }\n\n /**\n *\n * @param {T.UCANOptions} opts\n */\n static async create(opts) {\n const {\n issuer,\n audience,\n capabilities,\n expiration,\n notBefore,\n nonce,\n facts,\n proofs,\n ttl,\n } = opts\n\n /** @type {T.UCANProps} */\n const props = {\n issuer,\n audience,\n capabilities,\n // eslint-disable-next-line unicorn/no-null\n expiration: expiration ?? (typeof ttl === 'number' ? now() + ttl : null),\n notBefore,\n nonce,\n facts,\n proofs,\n version: VERSION,\n }\n const ucan = new UCAN(props, await JWT.encode(props, issuer))\n return ucan\n }\n\n /**\n *\n * @param {import('./types.js').JWT} ucan - JWT string\n */\n static async fromUcan(ucan) {\n const { props, artifacts } = await JWT.decode(ucan)\n return new UCAN(props, artifacts)\n }\n\n /**\n *\n * @returns {import('multiformats').Block<Uint8Array, T.CodecCode, T.HashCode, 1>}\n */\n block() {\n return {\n bytes: this.bytes,\n cid: this.cid,\n }\n }\n\n /**\n *\n * @param {import('iso-signatures/types').IResolver} resolver\n */\n async isValid(resolver) {\n const [encodedHeader, encodedPayload] = this.ucan.split('.')\n const isVerified = await resolver.verify({\n message: utf8.decode(`${encodedHeader}.${encodedPayload}`),\n signature: this.signature,\n ...this.issuer,\n })\n\n if (!isVerified) {\n return false\n }\n\n if (this.expiration && this.expiration <= now()) {\n return false\n }\n\n if (this.notBefore && this.notBefore > now()) {\n return false\n }\n\n return true\n }\n\n /**\n *\n * @returns {T.JWT}\n */\n toString() {\n return this.ucan\n }\n\n /**\n *\n * @returns {T.Jsonifiable}\n */\n toJSON() {\n return {\n issuer: this.issuer.toString(),\n audience: this.audience.toString(),\n version: this.version,\n capabilities: /** @type {T.Jsonify<T.Capabilities>} **/ (\n this.capabilities\n ),\n expiration: this.expiration,\n notBefore: this.notBefore,\n nonce: this.nonce,\n facts: /** @type {T.Jsonify<T.Facts>} **/ (this.facts),\n proofs: /** @type {T.Jsonify<import('multiformats').LinkJSON[]>} **/ (\n this.proofs?.map((p) => p.toJSON())\n ),\n signature: base64.encode(this.signature),\n ucan: this.ucan,\n bytes: utf8.encode(this.bytes),\n cid: /** @type {T.Jsonify<import('multiformats').LinkJSON>} **/ (\n this.cid.toJSON()\n ),\n }\n }\n}\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nconst P = 2n ** 255n - 19n; // ed25519 is twisted edwards curve\nconst N = 2n ** 252n + 27742317777372353535851937790883648493n; // curve's (group) order\nconst Gx = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an; // base point x\nconst Gy = 0x6666666666666666666666666666666666666666666666666666666666666658n; // base point y\nconst CURVE = {\n a: -1n,\n d: 37095705934669439343138083508754565189542113879843219016388785533085940283555n,\n p: P, n: N, h: 8, Gx, Gy // field prime, curve (group) order, cofactor\n};\nconst err = (m = '') => { throw new Error(m); }; // error helper, messes-up stack trace\nconst str = (s) => typeof s === 'string'; // is string\nconst au8 = (a, l) => // is Uint8Array (of specific length)\n !(a instanceof Uint8Array) || (typeof l === 'number' && l > 0 && a.length !== l) ?\n err('Uint8Array expected') : a;\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst toU8 = (a, len) => au8(str(a) ? h2b(a) : u8n(a), len); // norm(hex/u8a) to u8a\nconst mod = (a, b = P) => { let r = a % b; return r >= 0n ? r : b + r; }; // mod division\nconst isPoint = (p) => (p instanceof Point ? p : err('Point expected')); // is xyzt point\nlet Gpows = undefined; // precomputes for base point G\nclass Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n }\n static fromAffine(p) { return new Point(p.x, p.y, 1n, mod(p.x * p.y)); }\n static fromHex(hex, strict = true) {\n const { d } = CURVE;\n hex = toU8(hex, 32);\n const normed = hex.slice(); // copy the array to not mess it up\n normed[31] = hex[31] & ~0x80; // adjust first LE byte = last BE byte\n const y = b2n_LE(normed); // decode as little-endian, convert to num\n if (y === 0n) { // y=0 is valid, proceed\n }\n else {\n if (strict && !(0n < y && y < P))\n err('bad y coord 1'); // strict=true [1..P-1]\n if (!strict && !(0n < y && y < 2n ** 256n))\n err('bad y coord 2'); // strict=false [1..2^256-1]\n }\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad y coordinate 3'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isHeadOdd = (hex[31] & 0x80) !== 0;\n if (isHeadOdd !== isXOdd)\n x = mod(-x);\n return new Point(x, y, 1n, mod(x * y)); // Z=1, T=xy\n }\n get x() { return this.toAffine().x; } // .x, .y will call expensive toAffine.\n get y() { return this.toAffine().y; } // Should be used with care.\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = isPoint(other); // isPoint() checks class equality\n const X1Z2 = mod(X1 * Z2), X2Z1 = mod(X2 * Z1);\n const Y1Z2 = mod(Y1 * Z2), Y2Z1 = mod(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() { return this.equals(I); }\n negate() {\n return new Point(mod(-this.ex), this.ey, this.ez, mod(-this.et));\n }\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this; // Cost: 4M + 4S + 1*a + 6add + 1*2\n const { a } = CURVE; // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(2n * mod(Z1 * Z1));\n const D = mod(a * A);\n const x1y1 = X1 + Y1;\n const E = mod(mod(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this; // Cost: 8M + 1*k + 8add + 1*2.\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = isPoint(other); // doesn't check if other on-curve\n const { a, d } = CURVE; // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = mod(X1 * X2);\n const B = mod(Y1 * Y2);\n const C = mod(T1 * d * T2);\n const D = mod(Z1 * Z2);\n const E = mod((X1 + Y1) * (X2 + Y2) - A - B);\n const F = mod(D - C);\n const G = mod(D + C);\n const H = mod(B - a * A);\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n mul(n, safe = true) {\n if (n === 0n)\n return safe === true ? err('cannot multiply by 0') : I;\n if (!(typeof n === 'bigint' && 0n < n && n < N))\n err('invalid scalar, must be < L');\n if (!safe && this.is0() || n === 1n)\n return this; // safe=true bans 0. safe=false allows 0.\n if (this.equals(G))\n return wNAF(n).p; // use wNAF precomputes for base points\n let p = I, f = G; // init result point & fake point\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) { // double-and-add ladder\n if (n & 1n)\n p = p.add(d); // if bit is present, add to point\n else if (safe)\n f = f.add(d); // if not, add to fake for timing safety\n }\n return p;\n }\n multiply(scalar) { return this.mul(scalar); } // Aliases for compatibilty\n clearCofactor() { return this.mul(BigInt(CURVE.h), false); } // multiply by cofactor\n isSmallOrder() { return this.clearCofactor().is0(); } // check if P is small order\n isTorsionFree() {\n let p = this.mul(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n toAffine() {\n const { ex: x, ey: y, ez: z } = this; // (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy)\n if (this.is0())\n return { x: 0n, y: 0n }; // fast-path for zero point\n const iz = invert(z); // z^-1: invert z\n if (mod(z * iz) !== 1n)\n err('invalid inverse'); // (z * z^-1) must be 1, otherwise bad math\n return { x: mod(x * iz), y: mod(y * iz) }; // x = x*z^-1; y = y*z^-1\n }\n toRawBytes() {\n const { x, y } = this.toAffine(); // convert to affine 2d point\n const b = n2b_32LE(y); // encode number to 32 bytes\n b[31] |= x & 1n ? 0x80 : 0; // store sign in first LE byte\n return b;\n }\n toHex() { return b2h(this.toRawBytes()); } // encode to hex string\n}\nPoint.BASE = new Point(Gx, Gy, 1n, mod(Gx * Gy)); // Generator / Base point\nPoint.ZERO = new Point(0n, 1n, 1n, 0n); // Identity / Zero point\nconst { BASE: G, ZERO: I } = Point; // Generator, identity points\nconst padh = (num, pad) => num.toString(16).padStart(pad, '0');\nconst b2h = (b) => Array.from(b).map(e => padh(e, 2)).join(''); // bytes to hex\nconst h2b = (hex) => {\n const l = hex.length; // error if not string,\n if (!str(hex) || l % 2)\n err('hex invalid 1'); // or has odd length like 3, 5.\n const arr = u8n(l / 2); // create result array\n for (let i = 0; i < arr.length; i++) {\n const j = i * 2;\n const h = hex.slice(j, j + 2); // hexByte. slice is faster than substr\n const b = Number.parseInt(h, 16); // byte, created from string part\n if (Number.isNaN(b) || b < 0)\n err('hex invalid 2'); // byte must be valid 0 <= byte < 256\n arr[i] = b;\n }\n return arr;\n};\nconst n2b_32LE = (num) => h2b(padh(num, 32 * 2)).reverse(); // number to bytes LE\nconst b2n_LE = (b) => BigInt('0x' + b2h(u8n(au8(b)).reverse())); // bytes LE to num\nconst concatB = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + au8(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\nconst invert = (num, md = P) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md); // no neg exponent for now\n let a = mod(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) { // uses euclidean gcd algorithm\n const q = b / a, r = b % a; // not constant-time\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? mod(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst pow2 = (x, power) => {\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\nconst uvRatio = (u, v) => {\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n)\n x = mod(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\nconst modL_LE = (hash) => mod(b2n_LE(hash), N); // modulo L; but little-endian\nlet _shaS;\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => // Sync SHA512, not set by default\n typeof _shaS === 'function' ? _shaS(...m) : err('etc.sha512Sync not set');\nconst hash2extK = (hashed) => {\n const head = hashed.slice(0, 32); // slice creates a copy, unlike subarray\n head[0] &= 248; // Clamp bits: 0b1111_1000,\n head[31] &= 127; // 0b0111_1111,\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(32, 64); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.mul(scalar); // public key point\n const pointBytes = point.toRawBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, 32)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, 32)));\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then(p => p.pointBytes);\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nfunction hashFinish(asynchronous, res) {\n if (asynchronous)\n return sha512a(res.hashable).then(res.finish);\n return res.finish(sha512s(res.hashable));\n}\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.mul(r).toRawBytes(); // R = [r]B\n const hashable = concatB(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const S = mod(r + modL_LE(hashed) * s, N); // S = (r + k * s) mod L; 0 <= s < l\n return au8(concatB(R, n2b_32LE(S)), 64); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key async\n const e = await getExtendedPublicKeyAsync(privKey); // pub,prfx\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(true, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst sign = (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key sync\n const e = getExtendedPublicKey(privKey); // pub,prfx\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(false, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst _verify = (sig, msg, pub) => {\n msg = toU8(msg); // Message hex str/Bytes\n sig = toU8(sig, 64); // Signature hex str/Bytes, must be 64 bytes\n const A = Point.fromHex(pub, false); // public key A decoded\n const R = Point.fromHex(sig.slice(0, 32), false); // 0 <= R < 2^256: ZIP215 R can be >= P\n const s = b2n_LE(sig.slice(32, 64)); // Decode second half as an integer S\n const SB = G.mul(s, false); // in the range 0 <= s < L\n const hashable = concatB(R.toRawBytes(), A.toRawBytes(), msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.mul(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n// RFC8032 5.1.7: verification async, sync\nconst verifyAsync = async (s, m, p) => hashFinish(true, _verify(s, m, p));\nconst verify = (s, m, p) => hashFinish(false, _verify(s, m, p));\nconst cr = () => // We support: 1) browsers 2) node.js 19+\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\nconst etc = {\n bytesToHex: b2h, hexToBytes: h2b, concatBytes: concatB,\n mod, invert,\n randomBytes: (len) => {\n const crypto = cr(); // Can be shimmed in node.js <= 18 to prevent error:\n // import { webcrypto } from 'node:crypto';\n // if (!globalThis.crypto) globalThis.crypto = webcrypto;\n if (!crypto)\n err('crypto.getRandomValues must be defined');\n return crypto.getRandomValues(u8n(len));\n },\n sha512Async: async (...messages) => {\n const crypto = cr();\n if (!crypto)\n err('crypto.subtle or etc.sha512Async must be defined');\n const m = concatB(...messages);\n return u8n(await crypto.subtle.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined, // Actual logic below\n};\nObject.defineProperties(etc, { sha512Sync: {\n configurable: false, get() { return _shaS; }, set(f) { if (!_shaS)\n _shaS = f; },\n } });\nconst utils = {\n getExtendedPublicKeyAsync, getExtendedPublicKey,\n randomPrivateKey: () => etc.randomBytes(32),\n precompute(w = 8, p = G) { p.multiply(3n); return p; }, // no-op\n};\nconst W = 8; // Precomputes-related code. W = window size\nconst precompute = () => {\n const points = []; // 10x sign(), 2x verify(). To achieve this,\n const windows = 256 / W + 1; // app needs to spend 40ms+ to calculate\n let p = G, b = p; // a lot of points related to base point G.\n for (let w = 0; w < windows; w++) { // Points are stored in array and used\n b = p; // any time Gx multiplication is done.\n points.push(b); // They consume 16-32 MiB of RAM.\n for (let i = 1; i < 2 ** (W - 1); i++) {\n b = b.add(p);\n points.push(b);\n }\n p = b.double(); // Precomputes don't speed-up getSharedKey,\n } // which multiplies user point by scalar,\n return points; // when precomputes are using base point\n};\nconst wNAF = (n) => {\n // Compared to other point mult methods,\n const comp = Gpows || (Gpows = precompute()); // stores 2x less points using subtraction\n const neg = (cnd, p) => { let n = p.negate(); return cnd ? n : p; }; // negate\n let p = I, f = G; // f must be G, or could become I in the end\n const windows = 1 + 256 / W; // W=8 17 windows\n const wsize = 2 ** (W - 1); // W=8 128 window size\n const mask = BigInt(2 ** W - 1); // W=8 will create mask 0b11111111\n const maxNum = 2 ** W; // W=8 256\n const shiftBy = BigInt(W); // W=8 8\n for (let w = 0; w < windows; w++) {\n const off = w * wsize;\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > wsize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off1 = off, off2 = off + Math.abs(wbits) - 1; // offsets, evaluate both\n const cnd1 = w % 2 !== 0, cnd2 = wbits < 0; // conditions, evaluate both\n if (wbits === 0) {\n f = f.add(neg(cnd1, comp[off1])); // bits are 0: add garbage to fake point\n }\n else { // ^ can't add off2, off2 = I\n p = p.add(neg(cnd2, comp[off2])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n}; // !! you can disable precomputes by commenting-out call of the wNAF() inside Point#mul()\nexport { getPublicKey, getPublicKeyAsync, sign, verify, // Remove the export to easily use in REPL\nsignAsync, verifyAsync, CURVE, etc, utils, Point as ExtendedPoint }; // envs like browser console\n","export const webcrypto = globalThis.crypto\n\n/**\n * Secure PRNG - Random bytes from webcrypto\n *\n * @param {number} length\n */\nexport function randomBytes(length = 32) {\n if (globalThis.crypto) {\n return globalThis.crypto.getRandomValues(new Uint8Array(length))\n } else {\n throw new Error(\"The environment doesn't have randomBytes function\")\n }\n}\n","import { DIDKey } from 'iso-did/key'\nimport { equals, u8 } from 'iso-base/utils'\n\n/**\n * Create web crypto params for ECDSA.\n *\n * @param {import(\"iso-did/types\").SignatureAlgorithm} alg\n * @returns {{name: 'ECDSA', namedCurve: 'P-256' | 'P-384' | 'P-521', hash: 'SHA-256' | 'SHA-384' | 'SHA-512'}}\n */\nexport function createEcdsaParams(alg) {\n switch (alg) {\n case 'ES256': {\n return {\n name: 'ECDSA',\n namedCurve: 'P-256',\n hash: 'SHA-256',\n }\n }\n case 'ES384': {\n return {\n name: 'ECDSA',\n namedCurve: 'P-384',\n hash: 'SHA-384',\n }\n }\n case 'ES512': {\n return {\n name: 'ECDSA',\n namedCurve: 'P-521',\n hash: 'SHA-512',\n }\n }\n\n default: {\n throw new TypeError(`Unsupported algorithm ${alg}`)\n }\n }\n}\n\n/**\n *\n * @param {import('iso-did/types').KeyType} type\n * @param {BufferSource} publicKey\n * @param {import('iso-did/types').VerifiableDID} [did]\n */\nexport function didKeyOrVerifiableDID(type, publicKey, did) {\n /** @type {import('iso-did/types').VerifiableDID} */\n let _did = DIDKey.fromPublicKey(type, u8(publicKey))\n if (did) {\n if (!equals(did.publicKey, _did.publicKey)) {\n throw new Error('Public key mismatch')\n }\n\n if (did.alg !== _did.alg) {\n throw new Error('Algorithm mismatch')\n }\n\n if (did.type !== _did.type) {\n throw new Error('Key type mismatch')\n }\n _did = did\n }\n\n return _did\n}\n","/* eslint-disable unicorn/numeric-separators-style */\nimport { getPublicKeyAsync, signAsync, utils } from '@noble/ed25519'\nimport { webcrypto } from 'iso-base/crypto'\nimport { base64pad } from 'iso-base/rfc4648'\nimport { tag, untag } from 'iso-base/varint'\nimport { DIDKey } from 'iso-did/key'\nimport { didKeyOrVerifiableDID } from '../utils.js'\n\n// @ts-ignore\nif (!globalThis.crypto) globalThis.crypto = webcrypto\n\n/**\n * @typedef {import('../types.js').ISigner<string>} ISigner\n */\n\n/**\n *\n * @param {import('iso-did/types').VerifiableDID} did\n */\nfunction checkDid(did) {\n if (did.type !== 'Ed25519') {\n throw new TypeError(`Unsupported key type ${did.type}`)\n }\n if (did.alg !== 'EdDSA') {\n throw new TypeError(`Unsupported algorithm ${did.alg}`)\n }\n}\n\n/**\n * EdDSA signer\n *\n * @implements {ISigner}\n */\nexport class EdDSASigner {\n /** @type {Extract<import('iso-did/types').SignatureAlgorithm, \"EdDSA\">} */\n static alg = 'EdDSA'\n\n /** @type {Extract<import('iso-did/types').KeyType, \"Ed25519\">} */\n static type = 'Ed25519'\n\n static code = 0x1300\n\n /** @type {Uint8Array} */\n #privateKey\n\n /**\n * @param {import('iso-did/types').VerifiableDID} did\n * @param {Uint8Array} privateKey\n */\n constructor(did, privateKey) {\n checkDid(did)\n this.did = did.did\n this.url = did.url\n this.type = did.type\n this.publicKey = did.publicKey\n this.alg = did.alg\n this.document = did.document\n this.#privateKey = privateKey\n this.didKey = did.didKey\n }\n\n /**\n * Generate a new signer\n *\n * @param {Uint8Array} [bytes]\n */\n static async generate(bytes) {\n const privateKey = bytes || utils.randomPrivateKey()\n const publicKey = await getPublicKeyAsync(privateKey)\n return new EdDSASigner(\n DIDKey.fromPublicKey('Ed25519', publicKey),\n privateKey\n )\n }\n\n /**\n * Import a signer from a encoded string\n *\n * @param {string} encoded\n * @param {import('iso-did/types').VerifiableDID} [did]\n */\n static async import(encoded, did) {\n const privateKey = untag(EdDSASigner.code, base64pad.decode(encoded))\n const publicKey = await getPublicKeyAsync(privateKey)\n\n return new EdDSASigner(\n didKeyOrVerifiableDID('Ed25519', publicKey, did),\n privateKey\n )\n }\n\n /**\n * Sign a message\n *\n * @param {Uint8Array} message\n */\n async sign(message) {\n return signAsync(message, this.#privateKey)\n }\n\n /**\n * Export the signer as a encoded string\n */\n export() {\n return base64pad.encode(tag(EdDSASigner.code, this.#privateKey))\n }\n\n toString() {\n return this.url.didUrl\n }\n}\n","import { UCAN } from '@fission-codes/ucan'\nimport { encodeBlock } from '@wovin/core'\nimport { type StorageConnector } from '@wovin/core/pubsub'\nimport { Logger } from 'besonders-logger'\nimport { DID } from 'iso-did'\nimport { EdDSASigner } from 'iso-signatures/signers/eddsa.js'\nimport { ISigner } from 'iso-signatures/types'\nimport { CID } from 'multiformats'\nimport { resolveIPNS, retrieveCar, retrieveThread } from './retrieve'\nimport { storeCar } from './store'\nimport { ParametersExceptFirst } from './utils'\n\nconst { WARN, LOG, DEBUG, VERBOSE, ERROR } = Logger.setup(Logger.INFO) // eslint-disable-line no-unused-vars\n\nexport * from './retrieve'\nexport * from './store'\n\nexport class UcanStoreProxyConnector implements StorageConnector {\n\tstatic async init({ url, issuerKey, ucanList }: {\n\t\turl: string\n\t\tissuerKey: ISigner<any>\n\t\tucanList?: UCAN[]\n\t}) {\n\t\tDEBUG(`Init UcanStoreProxyConnector:`, { url, issuerKey, ucanList })\n\t\tconst serviceDID = `did:web:${encodeURIComponent(new URL(url).host)}` as const // ? path\n\t\tconst tmpKey = await EdDSASigner.generate()\n\t\tconst selfAuthUcan = await UCAN.create({\n\t\t\tissuer: issuerKey,\n\t\t\t// TODO not sure how to do this\n\t\t\taudience: tmpKey.did,\n\t\t\t// ? capability format - https://github.com/ucan-wg/spec#326-capabilities--attenuation\n\t\t\tcapabilities: {\n\t\t\t\t[`${serviceDID}`]: {\n\t\t\t\t\t'storage/read': [{}],\n\t\t\t\t\t'storage/store': [{}],\n\t\t\t\t\t'storage/pin': [{}],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tDEBUG(`UCAN for proxy`, { selfAuthUcan, encoded: selfAuthUcan.toString() })\n\t\treturn new UcanStoreProxyConnector(url, issuerKey, tmpKey, [selfAuthUcan]) // TODO: ucanList\n\t}\n\n\tconstructor(\n\t\tpublic baseUrl: string,\n\t\tprivate issuerKey: ISigner<any>,\n\t\tprivate tmpKey: ISigner<any>,\n\t\tprivate ucanList: UCAN[] = [],\n\t\tpublic gatewayBaseUrl: string = baseUrl, // TODO: query baseURL from ucan proxy?\n\t) {\n\t}\n\n\tget isSetup() {\n\t\treturn true\n\t}\n\tget isValid() {\n\t\treturn true // TODO test ucan etc\n\t}\n\n\tasync storeCar(car: Blob) {\n\t\tconst baseUrl = new URL(this.baseUrl)\n\t\tconst serviceDID = `did:web:${encodeURIComponent(baseUrl.host)}` as const // ? path\n\t\tconst ucan = this.ucanList[0] // HACK how to select ucan?\n\t\tconst encodedProofs = [ucan.toString()]\n\t\tconst proofCIDs = [ucan.cid]\n\t\tconst requestUcan = await UCAN.create({\n\t\t\tissuer: this.tmpKey,\n\t\t\taudience: serviceDID,\n\t\t\t// ? capability format - https://github.com/ucan-wg/spec#326-capabilities--attenuation\n\t\t\tcapabilities: {\n\t\t\t\t[`${serviceDID}`]: {\n\t\t\t\t\t// 'storage/read': [{}],\n\t\t\t\t\t'storage/store': [{}],\n\t\t\t\t\t// 'storage/pin': [{}],\n\t\t\t\t},\n\t\t\t},\n\t\t\tproofs: proofCIDs,\n\t\t})\n\t\treturn storeCar(this.baseUrl, car, requestUcan, { ucans: encodedProofs })\n\t}\n\n\tasync retrieveCar(cid: CID) {\n\t\tif (!this.gatewayBaseUrl) throw new Error(`gatewayBaseUrl required for retrieveCar`)\n\t\treturn retrieveCar(this.gatewayBaseUrl, cid)\n\t}\n\n\tasync retrieveThread(\n\t\t...args: ParametersExceptFirst<typeof retrieveThread>\n\t) {\n\t\tif (!this.gatewayBaseUrl) throw new Error(`gatewayBaseUrl required for retrieveThread`)\n\t\treturn retrieveThread(this, ...args)\n\t}\n\tasync resolveIPNS(\n\t\t...args: ParametersExceptFirst<typeof resolveIPNS>\n\t) {\n\t\tif (!this.baseUrl) throw new Error(`baseUrl required for resolveIPNS`)\n\t\treturn resolveIPNS(this.baseUrl, ...args)\n\t}\n}\n"],"mappings":"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","names":["require_src","__commonJSMin","exports","module","base","ALPHABET","BASE_MAP","j","i","x","xc","BASE","LEADER","FACTOR","iFACTOR","encode","source","zeroes","length","pbegin","pend","size","b58","carry","it1","it2","str","decodeUnsafe","psz","b256","it3","it4","vch","decode","string","buffer","typedArrayTypeNames","objectTypeNames","isTypedArrayName","name","isObjectTypeName","getObjectType","value","objectTypeName","isObjectOfType","type","is","isTypedArray","isArrayBuffer","isBufferSource","u8","arr","buf","encoding","concat","arrays","length","acc","curr","output","offset","equals","aa","bb","ii","textDecoder","textEncoder","utf8","input","buf","isBufferSource","u8","decode","string","alphabet","bitsPerChar","codes","i","end","out","bits","buffer","written","value","encode","data","pad","mask","bases","rfc4648","base","padding","normalize","input","utf8","u8","isBufferSource","hex","str","base2","base8","base16","base32","base32hex","base64","base64pad","base64url","sha","name","data","sha256","from","sha512","code","inMemoryCache","cache","Map","parsed","resolve","_temp2","_result","_exit","cached","get","didUrl","undefined","result","_result$didResolution","didResolutionMetadata","error","set","_temp","params","_await$resolve","e","noCache","PCT_ENCODED","ID_CHAR","METHOD","METHOD_ID","PARAM_CHAR","PARAM","PARAMS","PATH","QUERY","FRAGMENT","DID_MATCHER","RegExp","parse","sections","match","parts","did","method","id","slice","split","p","kv","path","query","fragment","EMPTY_RESULT","didDocument","didDocumentMetadata","wrapLegacyResolver","resolver","_catch","doc","contentType","message","toString","Resolver","constructor","registry","options","legacyResolvers","Object","keys","map","methodName","_this","INT","encode","num","out","offset","oldOffset","MSB$1","REST$1","decode","buf","res","shift","counter","b","bytes","l","N1","N2","N3","N4","N5","N6","N7","N8","N9","length","value","varint","tag","code","taggedBytes","untag","size","import_base_x","bases","baseX","base","alphabet","input","pad","utf8","_baseX","u8","isBufferSource","base10","base36","base58btc","isCompressed","key","isUncompressed","compress","pubkeyBytes","unprefixed","x","y","out","KEY_TYPE_ALG","KEY_TYPE_CODE","CODE_KEY_TYPE","keyTypeToAlg","type","alg","KEY_TYPE_ALG","DIDCore","_DIDCore","parsed","did","parsedDid","parse","DID_KEY_PREFIX","validateRawPublicKeyLength","code","key","KEY_TYPE_CODE","isUncompressed","compress","isCompressed","DIDKey","_DIDKey","DIDCore","did","type","keyTypeToAlg","didString","encodedKey","base58btc","size","varint","CODE_KEY_TYPE","keyBytes","u8","id","tag","didKeyResolver","parsedDid","didKey","resolver","resolve","did","opts","Resolver","resolver","parse","DIDCore","derefDocument","didObject","document","fragment","method","vm","DID","_DID","opts","DIDKey","did","parsedDid","parse","resolve","encodedKey","base58btc","code","size","varint","key","validateRawPublicKeyLength","type","CODE_KEY_TYPE","keyTypeToAlg","publicKey","base64url","alg","didkey","concat","serialize","input","base64url","utf8","deserialize","decodedString","decodedBytes","encode","data","signer","header","payload","p","headerAndPayload","signature","ucan","bytes","CID","code","sha256","decode","encodedHeader","encodedPayload","encodedSignature","payloadObject","issuer","DID","parse","VERSION","now","UCAN","_UCAN","props","artifacts","opts","issuer","audience","capabilities","expiration","notBefore","nonce","facts","proofs","ttl","encode","ucan","decode","resolver","encodedHeader","encodedPayload","utf8","p","base64","P","N","Gx","Gy","CURVE","err","m","str","s","au8","a","l","u8n","data","toU8","len","h2b","mod","b","r","isPoint","p","Point","Gpows","_Point","ex","ey","ez","et","hex","strict","d","normed","y","b2n_LE","y2","u","v","isValid","x","uvRatio","isXOdd","other","X1","Y1","Z1","X2","Y2","Z2","X1Z2","X2Z1","Y1Z2","Y2Z1","I","A","B","C","D","x1y1","E","G","F","H","X3","Y3","T3","Z3","T1","T2","n","safe","wNAF","f","scalar","z","iz","invert","n2b_32LE","b2h","padh","num","pad","arr","i","j","h","concatB","arrs","sum","md","q","pow2","power","pow_2_252_3","b2","b4","b5","b10","b20","b40","b80","b160","b240","b250","RM1","v3","v7","pow","vx2","root1","root2","useRoot1","useRoot2","noRoot","modL_LE","hash","_shaS","sha512a","etc","sha512s","hash2extK","hashed","head","prefix","point","pointBytes","getExtendedPublicKeyAsync","priv","getExtendedPublicKey","getPublicKeyAsync","hashFinish","asynchronous","res","sha512a","sha512s","_sign","e","rBytes","msg","P","r","modL_LE","R","G","concatB","hashed","S","mod","N","au8","n2b_32LE","signAsync","privKey","m","toU8","getExtendedPublicKeyAsync","cr","etc","b2h","h2b","concatB","mod","invert","len","crypto","err","u8n","messages","m","_shaS","f","utils","getExtendedPublicKeyAsync","getExtendedPublicKey","w","p","G","W","precompute","points","windows","b","i","wNAF","n","comp","Gpows","neg","cnd","I","wsize","mask","maxNum","shiftBy","off","wbits","off1","off2","cnd1","cnd2","webcrypto","didKeyOrVerifiableDID","type","publicKey","did","_did","DIDKey","u8","equals","webcrypto","checkDid","did","EdDSASigner","_EdDSASigner","#privateKey","privateKey","bytes","utils","publicKey","getPublicKeyAsync","DIDKey","encoded","untag","base64pad","didKeyOrVerifiableDID","message","signAsync","tag","WARN","LOG","DEBUG","VERBOSE","ERROR","E","UcanStoreProxyConnector","_UcanStoreProxyConnector","baseUrl","issuerKey","tmpKey","ucanList","gatewayBaseUrl","url","serviceDID","EdDSASigner","selfAuthUcan","UCAN","car","ucan","encodedProofs","proofCIDs","requestUcan","storeCar","cid","retrieveCar","args","retrieveThread","resolveIPNS"]}
|