{"version":3,"file":"injected-wallet-provider-CuL3b9IQ.mjs","sources":["../node_modules/@noble/hashes/esm/crypto.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_md.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha2.js","../node_modules/@noble/curves/esm/utils.js","../node_modules/@noble/curves/esm/abstract/modular.js","../node_modules/@noble/curves/esm/abstract/curve.js","../node_modules/@noble/curves/esm/abstract/edwards.js","../node_modules/@noble/curves/esm/ed25519.js","../.rollup-tmp/auth/providers/transaction-identity.js","../.rollup-tmp/auth/providers/injected-wallet-types.js","../node_modules/@solana/wallet-standard-features/lib/esm/signAndSendTransaction.js","../node_modules/@solana/wallet-standard-features/lib/esm/signMessage.js","../node_modules/@solana/wallet-standard-features/lib/esm/signTransaction.js","../node_modules/@wallet-standard/features/lib/esm/connect.js","../node_modules/@wallet-standard/features/lib/esm/disconnect.js","../.rollup-tmp/auth/providers/wallet-standard-discovery.js","../.rollup-tmp/auth/providers/injected-wallet-provider.js"],"sourcesContent":["export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n    if (!Number.isSafeInteger(n) || n < 0)\n        throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n    if (!isBytes(b))\n        throw new Error('Uint8Array expected');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n    if (typeof h !== 'function' || typeof h.create !== 'function')\n        throw new Error('Hash should be wrapped by utils.createHasher');\n    anumber(h.outputLen);\n    anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n    if (instance.destroyed)\n        throw new Error('Hash instance has been destroyed');\n    if (checkFinished && instance.finished)\n        throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n    abytes(out);\n    const min = instance.outputLen;\n    if (out.length < min) {\n        throw new Error('digestInto() expects output buffer of length at least ' + min);\n    }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n    return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n    return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n    for (let i = 0; i < arrays.length; i++) {\n        arrays[i].fill(0);\n    }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n    return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n    return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n    return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n    return (((word << 24) & 0xff000000) |\n        ((word << 8) & 0xff0000) |\n        ((word >>> 8) & 0xff00) |\n        ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n    ? (n) => n\n    : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n    for (let i = 0; i < arr.length; i++) {\n        arr[i] = byteSwap(arr[i]);\n    }\n    return arr;\n}\nexport const swap32IfBE = isLE\n    ? (u) => u\n    : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    abytes(bytes);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return bytes.toHex();\n    // pre-caching improves the speed 6x\n    let hex = '';\n    for (let i = 0; i < bytes.length; i++) {\n        hex += hexes[bytes[i]];\n    }\n    return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n    if (ch >= asciis._0 && ch <= asciis._9)\n        return ch - asciis._0; // '2' => 50-48\n    if (ch >= asciis.A && ch <= asciis.F)\n        return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n    if (ch >= asciis.a && ch <= asciis.f)\n        return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n    return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return Uint8Array.fromHex(hex);\n    const hl = hex.length;\n    const al = hl / 2;\n    if (hl % 2)\n        throw new Error('hex string expected, got unpadded hex of length ' + hl);\n    const array = new Uint8Array(al);\n    for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n        const n1 = asciiToBase16(hex.charCodeAt(hi));\n        const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n        if (n1 === undefined || n2 === undefined) {\n            const char = hex[hi] + hex[hi + 1];\n            throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n        }\n        array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n    }\n    return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n    let ts = Date.now();\n    for (let i = 0; i < iters; i++) {\n        cb(i);\n        // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n        const diff = Date.now() - ts;\n        if (diff >= 0 && diff < tick)\n            continue;\n        await nextTick();\n        ts += diff;\n    }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error('string expected');\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n    return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n    let sum = 0;\n    for (let i = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        abytes(a);\n        sum += a.length;\n    }\n    const res = new Uint8Array(sum);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        res.set(a, pad);\n        pad += a.length;\n    }\n    return res;\n}\nexport function checkOpts(defaults, opts) {\n    if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n        throw new Error('options should be object or undefined');\n    const merged = Object.assign(defaults, opts);\n    return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n    const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n    const tmp = hashCons();\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = () => hashCons();\n    return hashC;\n}\nexport function createOptHasher(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport function createXOFer(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n    if (crypto && typeof crypto.getRandomValues === 'function') {\n        return crypto.getRandomValues(new Uint8Array(bytesLength));\n    }\n    // Legacy Node.js compatibility\n    if (crypto && typeof crypto.randomBytes === 'function') {\n        return Uint8Array.from(crypto.randomBytes(bytesLength));\n    }\n    throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n    if (typeof view.setBigUint64 === 'function')\n        return view.setBigUint64(byteOffset, value, isLE);\n    const _32n = BigInt(32);\n    const _u32_max = BigInt(0xffffffff);\n    const wh = Number((value >> _32n) & _u32_max);\n    const wl = Number(value & _u32_max);\n    const h = isLE ? 4 : 0;\n    const l = isLE ? 0 : 4;\n    view.setUint32(byteOffset + h, wh, isLE);\n    view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n    return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n    return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n    constructor(blockLen, outputLen, padOffset, isLE) {\n        super();\n        this.finished = false;\n        this.length = 0;\n        this.pos = 0;\n        this.destroyed = false;\n        this.blockLen = blockLen;\n        this.outputLen = outputLen;\n        this.padOffset = padOffset;\n        this.isLE = isLE;\n        this.buffer = new Uint8Array(blockLen);\n        this.view = createView(this.buffer);\n    }\n    update(data) {\n        aexists(this);\n        data = toBytes(data);\n        abytes(data);\n        const { view, buffer, blockLen } = this;\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            // Fast path: we have at least one block in input, cast it to view and process\n            if (take === blockLen) {\n                const dataView = createView(data);\n                for (; blockLen <= len - pos; pos += blockLen)\n                    this.process(dataView, pos);\n                continue;\n            }\n            buffer.set(data.subarray(pos, pos + take), this.pos);\n            this.pos += take;\n            pos += take;\n            if (this.pos === blockLen) {\n                this.process(view, 0);\n                this.pos = 0;\n            }\n        }\n        this.length += data.length;\n        this.roundClean();\n        return this;\n    }\n    digestInto(out) {\n        aexists(this);\n        aoutput(out, this);\n        this.finished = true;\n        // Padding\n        // We can avoid allocation of buffer for padding completely if it\n        // was previously not allocated here. But it won't change performance.\n        const { buffer, view, blockLen, isLE } = this;\n        let { pos } = this;\n        // append the bit '1' to the message\n        buffer[pos++] = 0b10000000;\n        clean(this.buffer.subarray(pos));\n        // we have less than padOffset left in buffer, so we cannot put length in\n        // current block, need process it and pad again\n        if (this.padOffset > blockLen - pos) {\n            this.process(view, 0);\n            pos = 0;\n        }\n        // Pad until full block byte with zeros\n        for (let i = pos; i < blockLen; i++)\n            buffer[i] = 0;\n        // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n        // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n        // So we just write lowest 64 bits of that value.\n        setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n        this.process(view, 0);\n        const oview = createView(out);\n        const len = this.outputLen;\n        // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n        if (len % 4)\n            throw new Error('_sha2: outputLen should be aligned to 32bit');\n        const outLen = len / 4;\n        const state = this.get();\n        if (outLen > state.length)\n            throw new Error('_sha2: outputLen bigger than state');\n        for (let i = 0; i < outLen; i++)\n            oview.setUint32(4 * i, state[i], isLE);\n    }\n    digest() {\n        const { buffer, outputLen } = this;\n        this.digestInto(buffer);\n        const res = buffer.slice(0, outputLen);\n        this.destroy();\n        return res;\n    }\n    _cloneInto(to) {\n        to || (to = new this.constructor());\n        to.set(...this.get());\n        const { blockLen, buffer, length, finished, destroyed, pos } = this;\n        to.destroyed = destroyed;\n        to.finished = finished;\n        to.length = length;\n        to.pos = pos;\n        if (length % blockLen)\n            to.buffer.set(buffer);\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n    0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n    if (le)\n        return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n    return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n    const len = lst.length;\n    let Ah = new Uint32Array(len);\n    let Al = new Uint32Array(len);\n    for (let i = 0; i < len; i++) {\n        const { h, l } = fromBig(lst[i], le);\n        [Ah[i], Al[i]] = [h, l];\n    }\n    return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n    const l = (Al >>> 0) + (Bl >>> 0);\n    return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n    fromBig, split, toBig,\n    shrSH, shrSL,\n    rotrSH, rotrSL, rotrBH, rotrBL,\n    rotr32H, rotr32L,\n    rotlSH, rotlSL, rotlBH, rotlBL,\n    add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n    constructor(outputLen = 32) {\n        super(64, outputLen, 8, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        this.A = SHA256_IV[0] | 0;\n        this.B = SHA256_IV[1] | 0;\n        this.C = SHA256_IV[2] | 0;\n        this.D = SHA256_IV[3] | 0;\n        this.E = SHA256_IV[4] | 0;\n        this.F = SHA256_IV[5] | 0;\n        this.G = SHA256_IV[6] | 0;\n        this.H = SHA256_IV[7] | 0;\n    }\n    get() {\n        const { A, B, C, D, E, F, G, H } = this;\n        return [A, B, C, D, E, F, G, H];\n    }\n    // prettier-ignore\n    set(A, B, C, D, E, F, G, H) {\n        this.A = A | 0;\n        this.B = B | 0;\n        this.C = C | 0;\n        this.D = D | 0;\n        this.E = E | 0;\n        this.F = F | 0;\n        this.G = G | 0;\n        this.H = H | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4)\n            SHA256_W[i] = view.getUint32(offset, false);\n        for (let i = 16; i < 64; i++) {\n            const W15 = SHA256_W[i - 15];\n            const W2 = SHA256_W[i - 2];\n            const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n            const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n            SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n        }\n        // Compression function main loop, 64 rounds\n        let { A, B, C, D, E, F, G, H } = this;\n        for (let i = 0; i < 64; i++) {\n            const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n            const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n            const T2 = (sigma0 + Maj(A, B, C)) | 0;\n            H = G;\n            G = F;\n            F = E;\n            E = (D + T1) | 0;\n            D = C;\n            C = B;\n            B = A;\n            A = (T1 + T2) | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        A = (A + this.A) | 0;\n        B = (B + this.B) | 0;\n        C = (C + this.C) | 0;\n        D = (D + this.D) | 0;\n        E = (E + this.E) | 0;\n        F = (F + this.F) | 0;\n        G = (G + this.G) | 0;\n        H = (H + this.H) | 0;\n        this.set(A, B, C, D, E, F, G, H);\n    }\n    roundClean() {\n        clean(SHA256_W);\n    }\n    destroy() {\n        this.set(0, 0, 0, 0, 0, 0, 0, 0);\n        clean(this.buffer);\n    }\n}\nexport class SHA224 extends SHA256 {\n    constructor() {\n        super(28);\n        this.A = SHA224_IV[0] | 0;\n        this.B = SHA224_IV[1] | 0;\n        this.C = SHA224_IV[2] | 0;\n        this.D = SHA224_IV[3] | 0;\n        this.E = SHA224_IV[4] | 0;\n        this.F = SHA224_IV[5] | 0;\n        this.G = SHA224_IV[6] | 0;\n        this.H = SHA224_IV[7] | 0;\n    }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n    '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n    '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n    '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n    '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n    '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n    '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n    '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n    '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n    '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n    '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n    '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n    '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n    '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n    '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n    '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n    '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n    '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n    '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n    '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n    '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n    constructor(outputLen = 64) {\n        super(128, outputLen, 16, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = SHA512_IV[0] | 0;\n        this.Al = SHA512_IV[1] | 0;\n        this.Bh = SHA512_IV[2] | 0;\n        this.Bl = SHA512_IV[3] | 0;\n        this.Ch = SHA512_IV[4] | 0;\n        this.Cl = SHA512_IV[5] | 0;\n        this.Dh = SHA512_IV[6] | 0;\n        this.Dl = SHA512_IV[7] | 0;\n        this.Eh = SHA512_IV[8] | 0;\n        this.El = SHA512_IV[9] | 0;\n        this.Fh = SHA512_IV[10] | 0;\n        this.Fl = SHA512_IV[11] | 0;\n        this.Gh = SHA512_IV[12] | 0;\n        this.Gl = SHA512_IV[13] | 0;\n        this.Hh = SHA512_IV[14] | 0;\n        this.Hl = SHA512_IV[15] | 0;\n    }\n    // prettier-ignore\n    get() {\n        const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n    }\n    // prettier-ignore\n    set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n        this.Ah = Ah | 0;\n        this.Al = Al | 0;\n        this.Bh = Bh | 0;\n        this.Bl = Bl | 0;\n        this.Ch = Ch | 0;\n        this.Cl = Cl | 0;\n        this.Dh = Dh | 0;\n        this.Dl = Dl | 0;\n        this.Eh = Eh | 0;\n        this.El = El | 0;\n        this.Fh = Fh | 0;\n        this.Fl = Fl | 0;\n        this.Gh = Gh | 0;\n        this.Gl = Gl | 0;\n        this.Hh = Hh | 0;\n        this.Hl = Hl | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4) {\n            SHA512_W_H[i] = view.getUint32(offset);\n            SHA512_W_L[i] = view.getUint32((offset += 4));\n        }\n        for (let i = 16; i < 80; i++) {\n            // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n            const W15h = SHA512_W_H[i - 15] | 0;\n            const W15l = SHA512_W_L[i - 15] | 0;\n            const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n            const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n            // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n            const W2h = SHA512_W_H[i - 2] | 0;\n            const W2l = SHA512_W_L[i - 2] | 0;\n            const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n            const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n            // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n            const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n            const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n            SHA512_W_H[i] = SUMh | 0;\n            SHA512_W_L[i] = SUMl | 0;\n        }\n        let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        // Compression function main loop, 80 rounds\n        for (let i = 0; i < 80; i++) {\n            // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n            const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n            const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n            //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n            const CHIl = (El & Fl) ^ (~El & Gl);\n            // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n            // prettier-ignore\n            const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n            const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n            const T1l = T1ll | 0;\n            // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n            const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n            const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n            const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n            const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n            Hh = Gh | 0;\n            Hl = Gl | 0;\n            Gh = Fh | 0;\n            Gl = Fl | 0;\n            Fh = Eh | 0;\n            Fl = El | 0;\n            ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n            Dh = Ch | 0;\n            Dl = Cl | 0;\n            Ch = Bh | 0;\n            Cl = Bl | 0;\n            Bh = Ah | 0;\n            Bl = Al | 0;\n            const All = u64.add3L(T1l, sigma0l, MAJl);\n            Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n            Al = All | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n        ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n        ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n        ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n        ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n        ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n        ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n        ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n        this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n    }\n    roundClean() {\n        clean(SHA512_W_H, SHA512_W_L);\n    }\n    destroy() {\n        clean(this.buffer);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\nexport class SHA384 extends SHA512 {\n    constructor() {\n        super(48);\n        this.Ah = SHA384_IV[0] | 0;\n        this.Al = SHA384_IV[1] | 0;\n        this.Bh = SHA384_IV[2] | 0;\n        this.Bl = SHA384_IV[3] | 0;\n        this.Ch = SHA384_IV[4] | 0;\n        this.Cl = SHA384_IV[5] | 0;\n        this.Dh = SHA384_IV[6] | 0;\n        this.Dl = SHA384_IV[7] | 0;\n        this.Eh = SHA384_IV[8] | 0;\n        this.El = SHA384_IV[9] | 0;\n        this.Fh = SHA384_IV[10] | 0;\n        this.Fl = SHA384_IV[11] | 0;\n        this.Gh = SHA384_IV[12] | 0;\n        this.Gl = SHA384_IV[13] | 0;\n        this.Hh = SHA384_IV[14] | 0;\n        this.Hl = SHA384_IV[15] | 0;\n    }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n    0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n    0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n    0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n    constructor() {\n        super(28);\n        this.Ah = T224_IV[0] | 0;\n        this.Al = T224_IV[1] | 0;\n        this.Bh = T224_IV[2] | 0;\n        this.Bl = T224_IV[3] | 0;\n        this.Ch = T224_IV[4] | 0;\n        this.Cl = T224_IV[5] | 0;\n        this.Dh = T224_IV[6] | 0;\n        this.Dl = T224_IV[7] | 0;\n        this.Eh = T224_IV[8] | 0;\n        this.El = T224_IV[9] | 0;\n        this.Fh = T224_IV[10] | 0;\n        this.Fl = T224_IV[11] | 0;\n        this.Gh = T224_IV[12] | 0;\n        this.Gl = T224_IV[13] | 0;\n        this.Hh = T224_IV[14] | 0;\n        this.Hl = T224_IV[15] | 0;\n    }\n}\nexport class SHA512_256 extends SHA512 {\n    constructor() {\n        super(32);\n        this.Ah = T256_IV[0] | 0;\n        this.Al = T256_IV[1] | 0;\n        this.Bh = T256_IV[2] | 0;\n        this.Bl = T256_IV[3] | 0;\n        this.Ch = T256_IV[4] | 0;\n        this.Cl = T256_IV[5] | 0;\n        this.Dh = T256_IV[6] | 0;\n        this.Dl = T256_IV[7] | 0;\n        this.Eh = T256_IV[8] | 0;\n        this.El = T256_IV[9] | 0;\n        this.Fh = T256_IV[10] | 0;\n        this.Fl = T256_IV[11] | 0;\n        this.Gh = T256_IV[12] | 0;\n        this.Gl = T256_IV[13] | 0;\n        this.Hh = T256_IV[14] | 0;\n        this.Hl = T256_IV[15] | 0;\n    }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes as abytes_, bytesToHex as bytesToHex_, concatBytes as concatBytes_, hexToBytes as hexToBytes_, isBytes as isBytes_, } from '@noble/hashes/utils.js';\nexport { abytes, anumber, bytesToHex, bytesToUtf8, concatBytes, hexToBytes, isBytes, randomBytes, utf8ToBytes, } from '@noble/hashes/utils.js';\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport function abool(title, value) {\n    if (typeof value !== 'boolean')\n        throw new Error(title + ' boolean expected, got ' + value);\n}\n// tmp name until v2\nexport function _abool2(value, title = '') {\n    if (typeof value !== 'boolean') {\n        const prefix = title && `\"${title}\"`;\n        throw new Error(prefix + 'expected boolean, got type=' + typeof value);\n    }\n    return value;\n}\n// tmp name until v2\n/** Asserts something is Uint8Array. */\nexport function _abytes2(value, length, title = '') {\n    const bytes = isBytes_(value);\n    const len = value?.length;\n    const needsLen = length !== undefined;\n    if (!bytes || (needsLen && len !== length)) {\n        const prefix = title && `\"${title}\" `;\n        const ofLen = needsLen ? ` of length ${length}` : '';\n        const got = bytes ? `length=${len}` : `type=${typeof value}`;\n        throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n    }\n    return value;\n}\n// Used in weierstrass, der\nexport function numberToHexUnpadded(num) {\n    const hex = num.toString(16);\n    return hex.length & 1 ? '0' + hex : hex;\n}\nexport function hexToNumber(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n    return hexToNumber(bytesToHex_(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n    abytes_(bytes);\n    return hexToNumber(bytesToHex_(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n    return hexToBytes_(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n    return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n    return hexToBytes_(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'secret key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n    let res;\n    if (typeof hex === 'string') {\n        try {\n            res = hexToBytes_(hex);\n        }\n        catch (e) {\n            throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n        }\n    }\n    else if (isBytes_(hex)) {\n        // Uint8Array.from() instead of hash.slice() because node.js Buffer\n        // is instance of Uint8Array, and its slice() creates **mutable** copy\n        res = Uint8Array.from(hex);\n    }\n    else {\n        throw new Error(title + ' must be hex string or Uint8Array');\n    }\n    const len = res.length;\n    if (typeof expectedLength === 'number' && len !== expectedLength)\n        throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n    return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n    if (a.length !== b.length)\n        return false;\n    let diff = 0;\n    for (let i = 0; i < a.length; i++)\n        diff |= a[i] ^ b[i];\n    return diff === 0;\n}\n/**\n * Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,\n * and Buffer#slice creates mutable copy. Never use Buffers!\n */\nexport function copyBytes(bytes) {\n    return Uint8Array.from(bytes);\n}\n/**\n * Decodes 7-bit ASCII string to Uint8Array, throws on non-ascii symbols\n * Should be safe to use for things expected to be ASCII.\n * Returns exact same result as utf8ToBytes for ASCII or throws.\n */\nexport function asciiToBytes(ascii) {\n    return Uint8Array.from(ascii, (c, i) => {\n        const charCode = c.charCodeAt(0);\n        if (c.length !== 1 || charCode > 127) {\n            throw new Error(`string contains non-ASCII character \"${ascii[i]}\" with code ${charCode} at position ${i}`);\n        }\n        return charCode;\n    });\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\n// export const utf8ToBytes: typeof utf8ToBytes_ = utf8ToBytes_;\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\n// export const bytesToUtf8: typeof bytesToUtf8_ = bytesToUtf8_;\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n    return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n    // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n    // consider P=256n, min=0n, max=P\n    // - a for min=0 would require -1:          `inRange('x', x, -1n, P)`\n    // - b would commonly require subtraction:  `inRange('x', x, 0n, P - 1n)`\n    // - our way is the cleanest:               `inRange('x', x, 0n, P)\n    if (!inRange(n, min, max))\n        throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n) {\n    let len;\n    for (len = 0; n > _0n; n >>= _1n, len += 1)\n        ;\n    return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n    return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n    return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_1n << BigInt(n)) - _1n;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n *   const drbg = createHmacDRBG<Key>(32, 32, hmac);\n *   drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n    if (typeof hashLen !== 'number' || hashLen < 2)\n        throw new Error('hashLen must be a number');\n    if (typeof qByteLen !== 'number' || qByteLen < 2)\n        throw new Error('qByteLen must be a number');\n    if (typeof hmacFn !== 'function')\n        throw new Error('hmacFn must be a function');\n    // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n    const u8n = (len) => new Uint8Array(len); // creates Uint8Array\n    const u8of = (byte) => Uint8Array.of(byte); // another shortcut\n    let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n    let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n    let i = 0; // Iterations counter, will throw when over 1000\n    const reset = () => {\n        v.fill(1);\n        k.fill(0);\n        i = 0;\n    };\n    const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n    const reseed = (seed = u8n(0)) => {\n        // HMAC-DRBG reseed() function. Steps D-G\n        k = h(u8of(0x00), seed); // k = hmac(k || v || 0x00 || seed)\n        v = h(); // v = hmac(k || v)\n        if (seed.length === 0)\n            return;\n        k = h(u8of(0x01), seed); // k = hmac(k || v || 0x01 || seed)\n        v = h(); // v = hmac(k || v)\n    };\n    const gen = () => {\n        // HMAC-DRBG generate() function\n        if (i++ >= 1000)\n            throw new Error('drbg: tried 1000 values');\n        let len = 0;\n        const out = [];\n        while (len < qByteLen) {\n            v = h();\n            const sl = v.slice();\n            out.push(sl);\n            len += v.length;\n        }\n        return concatBytes_(...out);\n    };\n    const genUntil = (seed, pred) => {\n        reset();\n        reseed(seed); // Steps D-G\n        let res = undefined; // Step H: grind until k is in [1..n-1]\n        while (!(res = pred(gen())))\n            reseed();\n        reset();\n        return res;\n    };\n    return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n    bigint: (val) => typeof val === 'bigint',\n    function: (val) => typeof val === 'function',\n    boolean: (val) => typeof val === 'boolean',\n    string: (val) => typeof val === 'string',\n    stringOrUint8Array: (val) => typeof val === 'string' || isBytes_(val),\n    isSafeInteger: (val) => Number.isSafeInteger(val),\n    array: (val) => Array.isArray(val),\n    field: (val, object) => object.Fp.isValid(val),\n    hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n    const checkField = (fieldName, type, isOptional) => {\n        const checkVal = validatorFns[type];\n        if (typeof checkVal !== 'function')\n            throw new Error('invalid validator function');\n        const val = object[fieldName];\n        if (isOptional && val === undefined)\n            return;\n        if (!checkVal(val, object)) {\n            throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);\n        }\n    };\n    for (const [fieldName, type] of Object.entries(validators))\n        checkField(fieldName, type, false);\n    for (const [fieldName, type] of Object.entries(optValidators))\n        checkField(fieldName, type, true);\n    return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\nexport function isHash(val) {\n    return typeof val === 'function' && Number.isSafeInteger(val.outputLen);\n}\nexport function _validateObject(object, fields, optFields = {}) {\n    if (!object || typeof object !== 'object')\n        throw new Error('expected valid options object');\n    function checkField(fieldName, expectedType, isOpt) {\n        const val = object[fieldName];\n        if (isOpt && val === undefined)\n            return;\n        const current = typeof val;\n        if (current !== expectedType || val === null)\n            throw new Error(`param \"${fieldName}\" is invalid: expected ${expectedType}, got ${current}`);\n    }\n    Object.entries(fields).forEach(([k, v]) => checkField(k, v, false));\n    Object.entries(optFields).forEach(([k, v]) => checkField(k, v, true));\n}\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n    throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n    const map = new WeakMap();\n    return (arg, ...args) => {\n        const val = map.get(arg);\n        if (val !== undefined)\n            return val;\n        const computed = fn(arg, ...args);\n        map.set(arg, computed);\n        return computed;\n    };\n}\n//# sourceMappingURL=utils.js.map","/**\n * Utils for modular division and fields.\n * Field over 11 is a finite (Galois) field is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { _validateObject, anumber, bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, } from \"../utils.js\";\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _7n = /* @__PURE__ */ BigInt(7);\n// prettier-ignore\nconst _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9), _16n = /* @__PURE__ */ BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n    const result = a % b;\n    return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n    return FpPow(Field(modulo), num, power);\n}\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x, power, modulo) {\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= modulo;\n    }\n    return res;\n}\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number, modulo) {\n    if (number === _0n)\n        throw new Error('invert: expected non-zero number');\n    if (modulo <= _0n)\n        throw new Error('invert: expected positive modulus, got ' + modulo);\n    // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n    let a = mod(number, modulo);\n    let b = modulo;\n    // prettier-ignore\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        // JIT applies optimization if those two lines follow each other\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        // prettier-ignore\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\nfunction assertIsSquare(Fp, root, n) {\n    if (!Fp.eql(Fp.sqr(root), n))\n        throw new Error('Cannot find square root');\n}\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp, n) {\n    const p1div4 = (Fp.ORDER + _1n) / _4n;\n    const root = Fp.pow(n, p1div4);\n    assertIsSquare(Fp, root, n);\n    return root;\n}\nfunction sqrt5mod8(Fp, n) {\n    const p5div8 = (Fp.ORDER - _5n) / _8n;\n    const n2 = Fp.mul(n, _2n);\n    const v = Fp.pow(n2, p5div8);\n    const nv = Fp.mul(n, v);\n    const i = Fp.mul(Fp.mul(nv, _2n), v);\n    const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n    assertIsSquare(Fp, root, n);\n    return root;\n}\n// Based on RFC9380, Kong algorithm\n// prettier-ignore\nfunction sqrt9mod16(P) {\n    const Fp_ = Field(P);\n    const tn = tonelliShanks(P);\n    const c1 = tn(Fp_, Fp_.neg(Fp_.ONE)); //  1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n    const c2 = tn(Fp_, c1); //  2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n    const c3 = tn(Fp_, Fp_.neg(c1)); //  3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n    const c4 = (P + _7n) / _16n; //  4. c4 = (q + 7) / 16        # Integer arithmetic\n    return (Fp, n) => {\n        let tv1 = Fp.pow(n, c4); //  1. tv1 = x^c4\n        let tv2 = Fp.mul(tv1, c1); //  2. tv2 = c1 * tv1\n        const tv3 = Fp.mul(tv1, c2); //  3. tv3 = c2 * tv1\n        const tv4 = Fp.mul(tv1, c3); //  4. tv4 = c3 * tv1\n        const e1 = Fp.eql(Fp.sqr(tv2), n); //  5.  e1 = (tv2^2) == x\n        const e2 = Fp.eql(Fp.sqr(tv3), n); //  6.  e2 = (tv3^2) == x\n        tv1 = Fp.cmov(tv1, tv2, e1); //  7. tv1 = CMOV(tv1, tv2, e1)  # Select tv2 if (tv2^2) == x\n        tv2 = Fp.cmov(tv4, tv3, e2); //  8. tv2 = CMOV(tv4, tv3, e2)  # Select tv3 if (tv3^2) == x\n        const e3 = Fp.eql(Fp.sqr(tv2), n); //  9.  e3 = (tv2^2) == x\n        const root = Fp.cmov(tv1, tv2, e3); // 10.  z = CMOV(tv1, tv2, e3)   # Select sqrt from tv1 & tv2\n        assertIsSquare(Fp, root, n);\n        return root;\n    };\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n    // Initialization (precomputation).\n    // Caching initialization could boost perf by 7%.\n    if (P < _3n)\n        throw new Error('sqrt is not defined for small field');\n    // Factor P - 1 = Q * 2^S, where Q is odd\n    let Q = P - _1n;\n    let S = 0;\n    while (Q % _2n === _0n) {\n        Q /= _2n;\n        S++;\n    }\n    // Find the first quadratic non-residue Z >= 2\n    let Z = _2n;\n    const _Fp = Field(P);\n    while (FpLegendre(_Fp, Z) === 1) {\n        // Basic primality test for P. After x iterations, chance of\n        // not finding quadratic non-residue is 2^x, so 2^1000.\n        if (Z++ > 1000)\n            throw new Error('Cannot find square root: probably non-prime P');\n    }\n    // Fast-path; usually done before Z, but we do \"primality test\".\n    if (S === 1)\n        return sqrt3mod4;\n    // Slow-path\n    // TODO: test on Fp2 and others\n    let cc = _Fp.pow(Z, Q); // c = z^Q\n    const Q1div2 = (Q + _1n) / _2n;\n    return function tonelliSlow(Fp, n) {\n        if (Fp.is0(n))\n            return n;\n        // Check if n is a quadratic residue using Legendre symbol\n        if (FpLegendre(Fp, n) !== 1)\n            throw new Error('Cannot find square root');\n        // Initialize variables for the main loop\n        let M = S;\n        let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n        let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n        let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n        // Main loop\n        // while t != 1\n        while (!Fp.eql(t, Fp.ONE)) {\n            if (Fp.is0(t))\n                return Fp.ZERO; // if t=0 return R=0\n            let i = 1;\n            // Find the smallest i >= 1 such that t^(2^i) ≡ 1 (mod P)\n            let t_tmp = Fp.sqr(t); // t^(2^1)\n            while (!Fp.eql(t_tmp, Fp.ONE)) {\n                i++;\n                t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n                if (i === M)\n                    throw new Error('Cannot find square root');\n            }\n            // Calculate the exponent for b: 2^(M - i - 1)\n            const exponent = _1n << BigInt(M - i - 1); // bigint is important\n            const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n            // Update variables\n            M = i;\n            c = Fp.sqr(b); // c = b^2\n            t = Fp.mul(t, c); // t = (t * b^2)\n            R = Fp.mul(R, b); // R = R*b\n        }\n        return R;\n    };\n}\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. P ≡ 9 (mod 16)\n * 4. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P) {\n    // P ≡ 3 (mod 4) => √n = n^((P+1)/4)\n    if (P % _4n === _3n)\n        return sqrt3mod4;\n    // P ≡ 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n    if (P % _8n === _5n)\n        return sqrt5mod8;\n    // P ≡ 9 (mod 16) => Kong algorithm, page 11 of https://eprint.iacr.org/2012/685.pdf (algorithm 4)\n    if (P % _16n === _9n)\n        return sqrt9mod16(P);\n    // Tonelli-Shanks algorithm\n    return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n    'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n    'eql', 'add', 'sub', 'mul', 'pow', 'div',\n    'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n    const initial = {\n        ORDER: 'bigint',\n        MASK: 'bigint',\n        BYTES: 'number',\n        BITS: 'number',\n    };\n    const opts = FIELD_FIELDS.reduce((map, val) => {\n        map[val] = 'function';\n        return map;\n    }, initial);\n    _validateObject(field, opts);\n    // const max = 16384;\n    // if (field.BYTES < 1 || field.BYTES > max) throw new Error('invalid field');\n    // if (field.BITS < 1 || field.BITS > 8 * max) throw new Error('invalid field');\n    return field;\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp, num, power) {\n    if (power < _0n)\n        throw new Error('invalid exponent, negatives unsupported');\n    if (power === _0n)\n        return Fp.ONE;\n    if (power === _1n)\n        return num;\n    let p = Fp.ONE;\n    let d = num;\n    while (power > _0n) {\n        if (power & _1n)\n            p = Fp.mul(p, d);\n        d = Fp.sqr(d);\n        power >>= _1n;\n    }\n    return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp, nums, passZero = false) {\n    const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n    // Walk from first to last, multiply them by each other MOD p\n    const multipliedAcc = nums.reduce((acc, num, i) => {\n        if (Fp.is0(num))\n            return acc;\n        inverted[i] = acc;\n        return Fp.mul(acc, num);\n    }, Fp.ONE);\n    // Invert last element\n    const invertedAcc = Fp.inv(multipliedAcc);\n    // Walk from last to first, multiply them by inverted each other MOD p\n    nums.reduceRight((acc, num, i) => {\n        if (Fp.is0(num))\n            return acc;\n        inverted[i] = Fp.mul(acc, inverted[i]);\n        return Fp.mul(acc, num);\n    }, invertedAcc);\n    return inverted;\n}\n// TODO: remove\nexport function FpDiv(Fp, lhs, rhs) {\n    return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) ≡ 1    if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1   if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0    if a ≡ 0 (mod p)\n */\nexport function FpLegendre(Fp, n) {\n    // We can use 3rd argument as optional cache of this value\n    // but seems unneeded for now. The operation is very fast.\n    const p1mod2 = (Fp.ORDER - _1n) / _2n;\n    const powered = Fp.pow(n, p1mod2);\n    const yes = Fp.eql(powered, Fp.ONE);\n    const zero = Fp.eql(powered, Fp.ZERO);\n    const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n    if (!yes && !zero && !no)\n        throw new Error('invalid Legendre symbol result');\n    return yes ? 1 : zero ? 0 : -1;\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp, n) {\n    const l = FpLegendre(Fp, n);\n    return l === 1;\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n    // Bit size, byte size of CURVE.n\n    if (nBitLength !== undefined)\n        anumber(nBitLength);\n    const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n    const nByteLength = Math.ceil(_nBitLength / 8);\n    return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Creates a finite field. Major performance optimizations:\n * * 1. Denormalized operations like mulN instead of mul.\n * * 2. Identical object shape: never add or remove keys.\n * * 3. `Object.freeze`.\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n *\n * Note about field properties:\n * * CHARACTERISTIC p = prime number, number of elements in main subgroup.\n * * ORDER q = similar to cofactor in curves, may be composite `q = p^m`.\n *\n * @param ORDER field order, probably prime, or could be composite\n * @param bitLen how many bits the field consumes\n * @param isLE (default: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLenOrOpts, // TODO: use opts only in v2?\nisLE = false, opts = {}) {\n    if (ORDER <= _0n)\n        throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n    let _nbitLength = undefined;\n    let _sqrt = undefined;\n    let modFromBytes = false;\n    let allowedLengths = undefined;\n    if (typeof bitLenOrOpts === 'object' && bitLenOrOpts != null) {\n        if (opts.sqrt || isLE)\n            throw new Error('cannot specify opts in two arguments');\n        const _opts = bitLenOrOpts;\n        if (_opts.BITS)\n            _nbitLength = _opts.BITS;\n        if (_opts.sqrt)\n            _sqrt = _opts.sqrt;\n        if (typeof _opts.isLE === 'boolean')\n            isLE = _opts.isLE;\n        if (typeof _opts.modFromBytes === 'boolean')\n            modFromBytes = _opts.modFromBytes;\n        allowedLengths = _opts.allowedLengths;\n    }\n    else {\n        if (typeof bitLenOrOpts === 'number')\n            _nbitLength = bitLenOrOpts;\n        if (opts.sqrt)\n            _sqrt = opts.sqrt;\n    }\n    const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, _nbitLength);\n    if (BYTES > 2048)\n        throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n    let sqrtP; // cached sqrtP\n    const f = Object.freeze({\n        ORDER,\n        isLE,\n        BITS,\n        BYTES,\n        MASK: bitMask(BITS),\n        ZERO: _0n,\n        ONE: _1n,\n        allowedLengths: allowedLengths,\n        create: (num) => mod(num, ORDER),\n        isValid: (num) => {\n            if (typeof num !== 'bigint')\n                throw new Error('invalid field element: expected bigint, got ' + typeof num);\n            return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n        },\n        is0: (num) => num === _0n,\n        // is valid and invertible\n        isValidNot0: (num) => !f.is0(num) && f.isValid(num),\n        isOdd: (num) => (num & _1n) === _1n,\n        neg: (num) => mod(-num, ORDER),\n        eql: (lhs, rhs) => lhs === rhs,\n        sqr: (num) => mod(num * num, ORDER),\n        add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n        sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n        mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n        pow: (num, power) => FpPow(f, num, power),\n        div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n        // Same as above, but doesn't normalize\n        sqrN: (num) => num * num,\n        addN: (lhs, rhs) => lhs + rhs,\n        subN: (lhs, rhs) => lhs - rhs,\n        mulN: (lhs, rhs) => lhs * rhs,\n        inv: (num) => invert(num, ORDER),\n        sqrt: _sqrt ||\n            ((n) => {\n                if (!sqrtP)\n                    sqrtP = FpSqrt(ORDER);\n                return sqrtP(f, n);\n            }),\n        toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n        fromBytes: (bytes, skipValidation = true) => {\n            if (allowedLengths) {\n                if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {\n                    throw new Error('Field.fromBytes: expected ' + allowedLengths + ' bytes, got ' + bytes.length);\n                }\n                const padded = new Uint8Array(BYTES);\n                // isLE add 0 to right, !isLE to the left.\n                padded.set(bytes, isLE ? 0 : padded.length - bytes.length);\n                bytes = padded;\n            }\n            if (bytes.length !== BYTES)\n                throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n            let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n            if (modFromBytes)\n                scalar = mod(scalar, ORDER);\n            if (!skipValidation)\n                if (!f.isValid(scalar))\n                    throw new Error('invalid field element: outside of range 0..ORDER');\n            // NOTE: we don't validate scalar here, please use isValid. This done such way because some\n            // protocol may allow non-reduced scalar that reduced later or changed some other way.\n            return scalar;\n        },\n        // TODO: we don't need it here, move out to separate fn\n        invertBatch: (lst) => FpInvertBatch(f, lst),\n        // We can't move this out because Fp6, Fp12 implement it\n        // and it's unclear what to return in there.\n        cmov: (a, b, c) => (c ? b : a),\n    });\n    return Object.freeze(f);\n}\n// Generic random scalar, we can do same for other fields if via Fp2.mul(Fp2.ONE, Fp2.random)?\n// This allows unsafe methods like ignore bias or zero. These unsafe, but often used in different protocols (if deterministic RNG).\n// which mean we cannot force this via opts.\n// Not sure what to do with randomBytes, we can accept it inside opts if wanted.\n// Probably need to export getMinHashLength somewhere?\n// random(bytes?: Uint8Array, unsafeAllowZero = false, unsafeAllowBias = false) {\n//   const LEN = !unsafeAllowBias ? getMinHashLength(ORDER) : BYTES;\n//   if (bytes === undefined) bytes = randomBytes(LEN); // _opts.randomBytes?\n//   const num = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n//   // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n//   const reduced = unsafeAllowZero ? mod(num, ORDER) : mod(num, ORDER - _1n) + _1n;\n//   return reduced;\n// },\nexport function FpSqrtOdd(Fp, elm) {\n    if (!Fp.isOdd)\n        throw new Error(\"Field doesn't have isOdd\");\n    const root = Fp.sqrt(elm);\n    return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n    if (!Fp.isOdd)\n        throw new Error(\"Field doesn't have isOdd\");\n    const root = Fp.sqrt(elm);\n    return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n    hash = ensureBytes('privateHash', hash);\n    const hashLen = hash.length;\n    const minLen = nLength(groupOrder).nByteLength + 8;\n    if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n        throw new Error('hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen);\n    const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n    return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n    if (typeof fieldOrder !== 'bigint')\n        throw new Error('field order must be bigint');\n    const bitLength = fieldOrder.toString(2).length;\n    return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n    const length = getFieldBytesLength(fieldOrder);\n    return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n    const len = key.length;\n    const fieldLen = getFieldBytesLength(fieldOrder);\n    const minLen = getMinHashLength(fieldOrder);\n    // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n    if (len < 16 || len < minLen || len > 1024)\n        throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n    const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n    // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n    const reduced = mod(num, fieldOrder - _1n) + _1n;\n    return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { bitLen, bitMask, validateObject } from \"../utils.js\";\nimport { Field, FpInvertBatch, nLength, validateField } from \"./modular.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nexport function negateCt(condition, item) {\n    const neg = item.negate();\n    return condition ? neg : item;\n}\n/**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\nexport function normalizeZ(c, points) {\n    const invertedZs = FpInvertBatch(c.Fp, points.map((p) => p.Z));\n    return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i])));\n}\nfunction validateW(W, bits) {\n    if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n        throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\nfunction calcWOpts(W, scalarBits) {\n    validateW(W, scalarBits);\n    const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n    const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n    const maxNumber = 2 ** W; // W=8 256\n    const mask = bitMask(W); // W=8 255 == mask 0b11111111\n    const shiftBy = BigInt(W); // W=8 8\n    return { windows, windowSize, mask, maxNumber, shiftBy };\n}\nfunction calcOffsets(n, window, wOpts) {\n    const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n    let wbits = Number(n & mask); // extract W bits.\n    let nextN = n >> shiftBy; // shift number by W bits.\n    // What actually happens here:\n    // const highestBit = Number(mask ^ (mask >> 1n));\n    // let wbits2 = wbits - 1; // skip zero\n    // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n    // split if bits > max: +224 => 256-32\n    if (wbits > windowSize) {\n        // we skip zero, which means instead of `>= size-1`, we do `> size`\n        wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n        nextN += _1n; // +256 (carry)\n    }\n    const offsetStart = window * windowSize;\n    const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n    const isZero = wbits === 0; // is current window slice a 0?\n    const isNeg = wbits < 0; // is current window slice negative?\n    const isNegF = window % 2 !== 0; // fake random statement for noise\n    const offsetF = offsetStart; // fake offset for noise\n    return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\nfunction validateMSMPoints(points, c) {\n    if (!Array.isArray(points))\n        throw new Error('array expected');\n    points.forEach((p, i) => {\n        if (!(p instanceof c))\n            throw new Error('invalid point at index ' + i);\n    });\n}\nfunction validateMSMScalars(scalars, field) {\n    if (!Array.isArray(scalars))\n        throw new Error('array of scalars expected');\n    scalars.forEach((s, i) => {\n        if (!field.isValid(s))\n            throw new Error('invalid scalar at index ' + i);\n    });\n}\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\nfunction getW(P) {\n    // To disable precomputes:\n    // return 1;\n    return pointWindowSizes.get(P) || 1;\n}\nfunction assert0(n) {\n    if (n !== _0n)\n        throw new Error('invalid wNAF');\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Table generation takes **30MB of ram and 10ms on high-end CPU**,\n * but may take much longer on slow devices. Actual generation will happen on\n * first call of `multiply()`. By default, `BASE` point is precomputed.\n *\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport class wNAF {\n    // Parametrized with a given Point class (not individual point)\n    constructor(Point, bits) {\n        this.BASE = Point.BASE;\n        this.ZERO = Point.ZERO;\n        this.Fn = Point.Fn;\n        this.bits = bits;\n    }\n    // non-const time multiplication ladder\n    _unsafeLadder(elm, n, p = this.ZERO) {\n        let d = elm;\n        while (n > _0n) {\n            if (n & _1n)\n                p = p.add(d);\n            d = d.double();\n            n >>= _1n;\n        }\n        return p;\n    }\n    /**\n     * Creates a wNAF precomputation window. Used for caching.\n     * Default window size is set by `utils.precompute()` and is equal to 8.\n     * Number of precomputed points depends on the curve size:\n     * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n     * - 𝑊 is the window size\n     * - 𝑛 is the bitlength of the curve order.\n     * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n     * @param point Point instance\n     * @param W window size\n     * @returns precomputed point tables flattened to a single array\n     */\n    precomputeWindow(point, W) {\n        const { windows, windowSize } = calcWOpts(W, this.bits);\n        const points = [];\n        let p = point;\n        let base = p;\n        for (let window = 0; window < windows; window++) {\n            base = p;\n            points.push(base);\n            // i=1, bc we skip 0\n            for (let i = 1; i < windowSize; i++) {\n                base = base.add(p);\n                points.push(base);\n            }\n            p = base.double();\n        }\n        return points;\n    }\n    /**\n     * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n     * More compact implementation:\n     * https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n     * @returns real and fake (for const-time) points\n     */\n    wNAF(W, precomputes, n) {\n        // Scalar should be smaller than field order\n        if (!this.Fn.isValid(n))\n            throw new Error('invalid scalar');\n        // Accumulators\n        let p = this.ZERO;\n        let f = this.BASE;\n        // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n        // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n        // there is negate now: it is possible that negated element from low value\n        // would be the same as high element, which will create carry into next window.\n        // It's not obvious how this can fail, but still worth investigating later.\n        const wo = calcWOpts(W, this.bits);\n        for (let window = 0; window < wo.windows; window++) {\n            // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n            const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n            n = nextN;\n            if (isZero) {\n                // bits are 0: add garbage to fake point\n                // Important part for const-time getPublicKey: add random \"noise\" point to f.\n                f = f.add(negateCt(isNegF, precomputes[offsetF]));\n            }\n            else {\n                // bits are 1: add to result point\n                p = p.add(negateCt(isNeg, precomputes[offset]));\n            }\n        }\n        assert0(n);\n        // Return both real and fake points: JIT won't eliminate f.\n        // At this point there is a way to F be infinity-point even if p is not,\n        // which makes it less const-time: around 1 bigint multiply.\n        return { p, f };\n    }\n    /**\n     * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n     * @param acc accumulator point to add result of multiplication\n     * @returns point\n     */\n    wNAFUnsafe(W, precomputes, n, acc = this.ZERO) {\n        const wo = calcWOpts(W, this.bits);\n        for (let window = 0; window < wo.windows; window++) {\n            if (n === _0n)\n                break; // Early-exit, skip 0 value\n            const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n            n = nextN;\n            if (isZero) {\n                // Window bits are 0: skip processing.\n                // Move to next window.\n                continue;\n            }\n            else {\n                const item = precomputes[offset];\n                acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n            }\n        }\n        assert0(n);\n        return acc;\n    }\n    getPrecomputes(W, point, transform) {\n        // Calculate precomputes on a first run, reuse them after\n        let comp = pointPrecomputes.get(point);\n        if (!comp) {\n            comp = this.precomputeWindow(point, W);\n            if (W !== 1) {\n                // Doing transform outside of if brings 15% perf hit\n                if (typeof transform === 'function')\n                    comp = transform(comp);\n                pointPrecomputes.set(point, comp);\n            }\n        }\n        return comp;\n    }\n    cached(point, scalar, transform) {\n        const W = getW(point);\n        return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar);\n    }\n    unsafe(point, scalar, transform, prev) {\n        const W = getW(point);\n        if (W === 1)\n            return this._unsafeLadder(point, scalar, prev); // For W=1 ladder is ~x2 faster\n        return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev);\n    }\n    // We calculate precomputes for elliptic curve point multiplication\n    // using windowed method. This specifies window size and\n    // stores precomputed values. Usually only base point would be precomputed.\n    createCache(P, W) {\n        validateW(W, this.bits);\n        pointWindowSizes.set(P, W);\n        pointPrecomputes.delete(P);\n    }\n    hasCache(elm) {\n        return getW(elm) !== 1;\n    }\n}\n/**\n * Endomorphism-specific multiplication for Koblitz curves.\n * Cost: 128 dbl, 0-256 adds.\n */\nexport function mulEndoUnsafe(Point, point, k1, k2) {\n    let acc = point;\n    let p1 = Point.ZERO;\n    let p2 = Point.ZERO;\n    while (k1 > _0n || k2 > _0n) {\n        if (k1 & _1n)\n            p1 = p1.add(acc);\n        if (k2 & _1n)\n            p2 = p2.add(acc);\n        acc = acc.double();\n        k1 >>= _1n;\n        k2 >>= _1n;\n    }\n    return { p1, p2 };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka secret keys / bigints)\n */\nexport function pippenger(c, fieldN, points, scalars) {\n    // If we split scalars by some window (let's say 8 bits), every chunk will only\n    // take 256 buckets even if there are 4096 scalars, also re-uses double.\n    // TODO:\n    // - https://eprint.iacr.org/2024/750.pdf\n    // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n    // 0 is accepted in scalars\n    validateMSMPoints(points, c);\n    validateMSMScalars(scalars, fieldN);\n    const plength = points.length;\n    const slength = scalars.length;\n    if (plength !== slength)\n        throw new Error('arrays of points and scalars must have equal length');\n    // if (plength === 0) throw new Error('array must be of length >= 2');\n    const zero = c.ZERO;\n    const wbits = bitLen(BigInt(plength));\n    let windowSize = 1; // bits\n    if (wbits > 12)\n        windowSize = wbits - 3;\n    else if (wbits > 4)\n        windowSize = wbits - 2;\n    else if (wbits > 0)\n        windowSize = 2;\n    const MASK = bitMask(windowSize);\n    const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n    const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n    let sum = zero;\n    for (let i = lastBits; i >= 0; i -= windowSize) {\n        buckets.fill(zero);\n        for (let j = 0; j < slength; j++) {\n            const scalar = scalars[j];\n            const wbits = Number((scalar >> BigInt(i)) & MASK);\n            buckets[wbits] = buckets[wbits].add(points[j]);\n        }\n        let resI = zero; // not using this will do small speed-up, but will lose ct\n        // Skip first bucket, because it is zero\n        for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n            sumI = sumI.add(buckets[j]);\n            resI = resI.add(sumI);\n        }\n        sum = sum.add(resI);\n        if (i !== 0)\n            for (let j = 0; j < windowSize; j++)\n                sum = sum.double();\n    }\n    return sum;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe(c, fieldN, points, windowSize) {\n    /**\n     * Performance Analysis of Window-based Precomputation\n     *\n     * Base Case (256-bit scalar, 8-bit window):\n     * - Standard precomputation requires:\n     *   - 31 additions per scalar × 256 scalars = 7,936 ops\n     *   - Plus 255 summary additions = 8,191 total ops\n     *   Note: Summary additions can be optimized via accumulator\n     *\n     * Chunked Precomputation Analysis:\n     * - Using 32 chunks requires:\n     *   - 255 additions per chunk\n     *   - 256 doublings\n     *   - Total: (255 × 32) + 256 = 8,416 ops\n     *\n     * Memory Usage Comparison:\n     * Window Size | Standard Points | Chunked Points\n     * ------------|-----------------|---------------\n     *     4-bit   |     520         |      15\n     *     8-bit   |    4,224        |     255\n     *    10-bit   |   13,824        |   1,023\n     *    16-bit   |  557,056        |  65,535\n     *\n     * Key Advantages:\n     * 1. Enables larger window sizes due to reduced memory overhead\n     * 2. More efficient for smaller scalar counts:\n     *    - 16 chunks: (16 × 255) + 256 = 4,336 ops\n     *    - ~2x faster than standard 8,191 ops\n     *\n     * Limitations:\n     * - Not suitable for plain precomputes (requires 256 constant doublings)\n     * - Performance degrades with larger scalar counts:\n     *   - Optimal for ~256 scalars\n     *   - Less efficient for 4096+ scalars (Pippenger preferred)\n     */\n    validateW(windowSize, fieldN.BITS);\n    validateMSMPoints(points, c);\n    const zero = c.ZERO;\n    const tableSize = 2 ** windowSize - 1; // table size (without zero)\n    const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n    const MASK = bitMask(windowSize);\n    const tables = points.map((p) => {\n        const res = [];\n        for (let i = 0, acc = p; i < tableSize; i++) {\n            res.push(acc);\n            acc = acc.add(p);\n        }\n        return res;\n    });\n    return (scalars) => {\n        validateMSMScalars(scalars, fieldN);\n        if (scalars.length > points.length)\n            throw new Error('array of scalars must be smaller than array of points');\n        let res = zero;\n        for (let i = 0; i < chunks; i++) {\n            // No need to double if accumulator is still zero.\n            if (res !== zero)\n                for (let j = 0; j < windowSize; j++)\n                    res = res.double();\n            const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n            for (let j = 0; j < scalars.length; j++) {\n                const n = scalars[j];\n                const curr = Number((n >> shiftBy) & MASK);\n                if (!curr)\n                    continue; // skip zero scalars chunks\n                res = res.add(tables[j][curr - 1]);\n            }\n        }\n        return res;\n    };\n}\n// TODO: remove\n/** @deprecated */\nexport function validateBasic(curve) {\n    validateField(curve.Fp);\n    validateObject(curve, {\n        n: 'bigint',\n        h: 'bigint',\n        Gx: 'field',\n        Gy: 'field',\n    }, {\n        nBitLength: 'isSafeInteger',\n        nByteLength: 'isSafeInteger',\n    });\n    // Set defaults\n    return Object.freeze({\n        ...nLength(curve.n, curve.nBitLength),\n        ...curve,\n        ...{ p: curve.Fp.ORDER },\n    });\n}\nfunction createField(order, field, isLE) {\n    if (field) {\n        if (field.ORDER !== order)\n            throw new Error('Field.ORDER must match order: Fp == p, Fn == n');\n        validateField(field);\n        return field;\n    }\n    else {\n        return Field(order, { isLE });\n    }\n}\n/** Validates CURVE opts and creates fields */\nexport function _createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) {\n    if (FpFnLE === undefined)\n        FpFnLE = type === 'edwards';\n    if (!CURVE || typeof CURVE !== 'object')\n        throw new Error(`expected valid ${type} CURVE object`);\n    for (const p of ['p', 'n', 'h']) {\n        const val = CURVE[p];\n        if (!(typeof val === 'bigint' && val > _0n))\n            throw new Error(`CURVE.${p} must be positive bigint`);\n    }\n    const Fp = createField(CURVE.p, curveOpts.Fp, FpFnLE);\n    const Fn = createField(CURVE.n, curveOpts.Fn, FpFnLE);\n    const _b = type === 'weierstrass' ? 'b' : 'd';\n    const params = ['Gx', 'Gy', 'a', _b];\n    for (const p of params) {\n        // @ts-ignore\n        if (!Fp.isValid(CURVE[p]))\n            throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`);\n    }\n    CURVE = Object.freeze(Object.assign({}, CURVE));\n    return { CURVE, Fp, Fn };\n}\n//# sourceMappingURL=curve.js.map","/**\n * Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y².\n * For design rationale of types / exports, see weierstrass module documentation.\n * Untwisted Edwards curves exist, but they aren't used in real-world protocols.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { _validateObject, _abool2 as abool, _abytes2 as abytes, aInRange, bytesToHex, bytesToNumberLE, concatBytes, copyBytes, ensureBytes, isBytes, memoized, notImplemented, randomBytes as randomBytesWeb, } from \"../utils.js\";\nimport { _createCurveFields, normalizeZ, pippenger, wNAF, } from \"./curve.js\";\nimport { Field } from \"./modular.js\";\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);\nfunction isEdValidXY(Fp, CURVE, x, y) {\n    const x2 = Fp.sqr(x);\n    const y2 = Fp.sqr(y);\n    const left = Fp.add(Fp.mul(CURVE.a, x2), y2);\n    const right = Fp.add(Fp.ONE, Fp.mul(CURVE.d, Fp.mul(x2, y2)));\n    return Fp.eql(left, right);\n}\nexport function edwards(params, extraOpts = {}) {\n    const validated = _createCurveFields('edwards', params, extraOpts, extraOpts.FpFnLE);\n    const { Fp, Fn } = validated;\n    let CURVE = validated.CURVE;\n    const { h: cofactor } = CURVE;\n    _validateObject(extraOpts, {}, { uvRatio: 'function' });\n    // Important:\n    // There are some places where Fp.BYTES is used instead of nByteLength.\n    // So far, everything has been tested with curves of Fp.BYTES == nByteLength.\n    // TODO: test and find curves which behave otherwise.\n    const MASK = _2n << (BigInt(Fn.BYTES * 8) - _1n);\n    const modP = (n) => Fp.create(n); // Function overrides\n    // sqrt(u/v)\n    const uvRatio = extraOpts.uvRatio ||\n        ((u, v) => {\n            try {\n                return { isValid: true, value: Fp.sqrt(Fp.div(u, v)) };\n            }\n            catch (e) {\n                return { isValid: false, value: _0n };\n            }\n        });\n    // Validate whether the passed curve params are valid.\n    // equation ax² + y² = 1 + dx²y² should work for generator point.\n    if (!isEdValidXY(Fp, CURVE, CURVE.Gx, CURVE.Gy))\n        throw new Error('bad curve params: generator point');\n    /**\n     * Asserts coordinate is valid: 0 <= n < MASK.\n     * Coordinates >= Fp.ORDER are allowed for zip215.\n     */\n    function acoord(title, n, banZero = false) {\n        const min = banZero ? _1n : _0n;\n        aInRange('coordinate ' + title, n, min, MASK);\n        return n;\n    }\n    function aextpoint(other) {\n        if (!(other instanceof Point))\n            throw new Error('ExtendedPoint expected');\n    }\n    // Converts Extended point to default (x, y) coordinates.\n    // Can accept precomputed Z^-1 - for example, from invertBatch.\n    const toAffineMemo = memoized((p, iz) => {\n        const { X, Y, Z } = p;\n        const is0 = p.is0();\n        if (iz == null)\n            iz = is0 ? _8n : Fp.inv(Z); // 8 was chosen arbitrarily\n        const x = modP(X * iz);\n        const y = modP(Y * iz);\n        const zz = Fp.mul(Z, iz);\n        if (is0)\n            return { x: _0n, y: _1n };\n        if (zz !== _1n)\n            throw new Error('invZ was invalid');\n        return { x, y };\n    });\n    const assertValidMemo = memoized((p) => {\n        const { a, d } = CURVE;\n        if (p.is0())\n            throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n        // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n        // Equation in projective coordinates (X/Z, Y/Z, Z):  (aX² + Y²)Z² = Z⁴ + dX²Y²\n        const { X, Y, Z, T } = p;\n        const X2 = modP(X * X); // X²\n        const Y2 = modP(Y * Y); // Y²\n        const Z2 = modP(Z * Z); // Z²\n        const Z4 = modP(Z2 * Z2); // Z⁴\n        const aX2 = modP(X2 * a); // aX²\n        const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²\n        const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n        if (left !== right)\n            throw new Error('bad point: equation left != right (1)');\n        // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n        const XY = modP(X * Y);\n        const ZT = modP(Z * T);\n        if (XY !== ZT)\n            throw new Error('bad point: equation left != right (2)');\n        return true;\n    });\n    // Extended Point works in extended coordinates: (X, Y, Z, T) ∋ (x=X/Z, y=Y/Z, T=xy).\n    // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n    class Point {\n        constructor(X, Y, Z, T) {\n            this.X = acoord('x', X);\n            this.Y = acoord('y', Y);\n            this.Z = acoord('z', Z, true);\n            this.T = acoord('t', T);\n            Object.freeze(this);\n        }\n        static CURVE() {\n            return CURVE;\n        }\n        static fromAffine(p) {\n            if (p instanceof Point)\n                throw new Error('extended point not allowed');\n            const { x, y } = p || {};\n            acoord('x', x);\n            acoord('y', y);\n            return new Point(x, y, _1n, modP(x * y));\n        }\n        // Uses algo from RFC8032 5.1.3.\n        static fromBytes(bytes, zip215 = false) {\n            const len = Fp.BYTES;\n            const { a, d } = CURVE;\n            bytes = copyBytes(abytes(bytes, len, 'point'));\n            abool(zip215, 'zip215');\n            const normed = copyBytes(bytes); // copy again, we'll manipulate it\n            const lastByte = bytes[len - 1]; // select last byte\n            normed[len - 1] = lastByte & ~0x80; // clear last bit\n            const y = bytesToNumberLE(normed);\n            // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n            // RFC8032 prohibits >= p, but ZIP215 doesn't\n            // zip215=true:  0 <= y < MASK (2^256 for ed25519)\n            // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n            const max = zip215 ? MASK : Fp.ORDER;\n            aInRange('point.y', y, _0n, max);\n            // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:\n            // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)\n            const y2 = modP(y * y); // denominator is always non-0 mod p.\n            const u = modP(y2 - _1n); // u = y² - 1\n            const v = modP(d * y2 - a); // v = d y² + 1.\n            let { isValid, value: x } = uvRatio(u, v); // √(u/v)\n            if (!isValid)\n                throw new Error('bad point: invalid y coordinate');\n            const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n            const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n            if (!zip215 && x === _0n && isLastByteOdd)\n                // if x=0 and x_0 = 1, fail\n                throw new Error('bad point: x=0 and x_0=1');\n            if (isLastByteOdd !== isXOdd)\n                x = modP(-x); // if x_0 != x mod 2, set x = p-x\n            return Point.fromAffine({ x, y });\n        }\n        static fromHex(bytes, zip215 = false) {\n            return Point.fromBytes(ensureBytes('point', bytes), zip215);\n        }\n        get x() {\n            return this.toAffine().x;\n        }\n        get y() {\n            return this.toAffine().y;\n        }\n        precompute(windowSize = 8, isLazy = true) {\n            wnaf.createCache(this, windowSize);\n            if (!isLazy)\n                this.multiply(_2n); // random number\n            return this;\n        }\n        // Useful in fromAffine() - not for fromBytes(), which always created valid points.\n        assertValidity() {\n            assertValidMemo(this);\n        }\n        // Compare one point to another.\n        equals(other) {\n            aextpoint(other);\n            const { X: X1, Y: Y1, Z: Z1 } = this;\n            const { X: X2, Y: Y2, Z: Z2 } = other;\n            const X1Z2 = modP(X1 * Z2);\n            const X2Z1 = modP(X2 * Z1);\n            const Y1Z2 = modP(Y1 * Z2);\n            const Y2Z1 = modP(Y2 * Z1);\n            return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n        }\n        is0() {\n            return this.equals(Point.ZERO);\n        }\n        negate() {\n            // Flips point sign to a negative one (-x, y in affine coords)\n            return new Point(modP(-this.X), this.Y, this.Z, modP(-this.T));\n        }\n        // Fast algo for doubling Extended Point.\n        // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n        // Cost: 4M + 4S + 1*a + 6add + 1*2.\n        double() {\n            const { a } = CURVE;\n            const { X: X1, Y: Y1, Z: Z1 } = this;\n            const A = modP(X1 * X1); // A = X12\n            const B = modP(Y1 * Y1); // B = Y12\n            const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n            const D = modP(a * A); // D = a*A\n            const x1y1 = X1 + Y1;\n            const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n            const G = D + B; // G = D+B\n            const F = G - C; // F = G-C\n            const H = D - B; // H = D-B\n            const X3 = modP(E * F); // X3 = E*F\n            const Y3 = modP(G * H); // Y3 = G*H\n            const T3 = modP(E * H); // T3 = E*H\n            const Z3 = modP(F * G); // Z3 = F*G\n            return new Point(X3, Y3, Z3, T3);\n        }\n        // Fast algo for adding 2 Extended Points.\n        // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n        // Cost: 9M + 1*a + 1*d + 7add.\n        add(other) {\n            aextpoint(other);\n            const { a, d } = CURVE;\n            const { X: X1, Y: Y1, Z: Z1, T: T1 } = this;\n            const { X: X2, Y: Y2, Z: Z2, T: T2 } = other;\n            const A = modP(X1 * X2); // A = X1*X2\n            const B = modP(Y1 * Y2); // B = Y1*Y2\n            const C = modP(T1 * d * T2); // C = T1*d*T2\n            const D = modP(Z1 * Z2); // D = Z1*Z2\n            const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n            const F = D - C; // F = D-C\n            const G = D + C; // G = D+C\n            const H = modP(B - a * A); // H = B-a*A\n            const X3 = modP(E * F); // X3 = E*F\n            const Y3 = modP(G * H); // Y3 = G*H\n            const T3 = modP(E * H); // T3 = E*H\n            const Z3 = modP(F * G); // Z3 = F*G\n            return new Point(X3, Y3, Z3, T3);\n        }\n        subtract(other) {\n            return this.add(other.negate());\n        }\n        // Constant-time multiplication.\n        multiply(scalar) {\n            // 1 <= scalar < L\n            if (!Fn.isValidNot0(scalar))\n                throw new Error('invalid scalar: expected 1 <= sc < curve.n');\n            const { p, f } = wnaf.cached(this, scalar, (p) => normalizeZ(Point, p));\n            return normalizeZ(Point, [p, f])[0];\n        }\n        // Non-constant-time multiplication. Uses double-and-add algorithm.\n        // It's faster, but should only be used when you don't care about\n        // an exposed private key e.g. sig verification.\n        // Does NOT allow scalars higher than CURVE.n.\n        // Accepts optional accumulator to merge with multiply (important for sparse scalars)\n        multiplyUnsafe(scalar, acc = Point.ZERO) {\n            // 0 <= scalar < L\n            if (!Fn.isValid(scalar))\n                throw new Error('invalid scalar: expected 0 <= sc < curve.n');\n            if (scalar === _0n)\n                return Point.ZERO;\n            if (this.is0() || scalar === _1n)\n                return this;\n            return wnaf.unsafe(this, scalar, (p) => normalizeZ(Point, p), acc);\n        }\n        // Checks if point is of small order.\n        // If you add something to small order point, you will have \"dirty\"\n        // point with torsion component.\n        // Multiplies point by cofactor and checks if the result is 0.\n        isSmallOrder() {\n            return this.multiplyUnsafe(cofactor).is0();\n        }\n        // Multiplies point by curve order and checks if the result is 0.\n        // Returns `false` is the point is dirty.\n        isTorsionFree() {\n            return wnaf.unsafe(this, CURVE.n).is0();\n        }\n        // Converts Extended point to default (x, y) coordinates.\n        // Can accept precomputed Z^-1 - for example, from invertBatch.\n        toAffine(invertedZ) {\n            return toAffineMemo(this, invertedZ);\n        }\n        clearCofactor() {\n            if (cofactor === _1n)\n                return this;\n            return this.multiplyUnsafe(cofactor);\n        }\n        toBytes() {\n            const { x, y } = this.toAffine();\n            // Fp.toBytes() allows non-canonical encoding of y (>= p).\n            const bytes = Fp.toBytes(y);\n            // Each y has 2 valid points: (x, y), (x,-y).\n            // When compressing, it's enough to store y and use the last byte to encode sign of x\n            bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0;\n            return bytes;\n        }\n        toHex() {\n            return bytesToHex(this.toBytes());\n        }\n        toString() {\n            return `<Point ${this.is0() ? 'ZERO' : this.toHex()}>`;\n        }\n        // TODO: remove\n        get ex() {\n            return this.X;\n        }\n        get ey() {\n            return this.Y;\n        }\n        get ez() {\n            return this.Z;\n        }\n        get et() {\n            return this.T;\n        }\n        static normalizeZ(points) {\n            return normalizeZ(Point, points);\n        }\n        static msm(points, scalars) {\n            return pippenger(Point, Fn, points, scalars);\n        }\n        _setWindowSize(windowSize) {\n            this.precompute(windowSize);\n        }\n        toRawBytes() {\n            return this.toBytes();\n        }\n    }\n    // base / generator point\n    Point.BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n    // zero / infinity / identity point\n    Point.ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n    // math field\n    Point.Fp = Fp;\n    // scalar field\n    Point.Fn = Fn;\n    const wnaf = new wNAF(Point, Fn.BITS);\n    Point.BASE.precompute(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n    return Point;\n}\n/**\n * Base class for prime-order points like Ristretto255 and Decaf448.\n * These points eliminate cofactor issues by representing equivalence classes\n * of Edwards curve points.\n */\nexport class PrimeEdwardsPoint {\n    constructor(ep) {\n        this.ep = ep;\n    }\n    // Static methods that must be implemented by subclasses\n    static fromBytes(_bytes) {\n        notImplemented();\n    }\n    static fromHex(_hex) {\n        notImplemented();\n    }\n    get x() {\n        return this.toAffine().x;\n    }\n    get y() {\n        return this.toAffine().y;\n    }\n    // Common implementations\n    clearCofactor() {\n        // no-op for prime-order groups\n        return this;\n    }\n    assertValidity() {\n        this.ep.assertValidity();\n    }\n    toAffine(invertedZ) {\n        return this.ep.toAffine(invertedZ);\n    }\n    toHex() {\n        return bytesToHex(this.toBytes());\n    }\n    toString() {\n        return this.toHex();\n    }\n    isTorsionFree() {\n        return true;\n    }\n    isSmallOrder() {\n        return false;\n    }\n    add(other) {\n        this.assertSame(other);\n        return this.init(this.ep.add(other.ep));\n    }\n    subtract(other) {\n        this.assertSame(other);\n        return this.init(this.ep.subtract(other.ep));\n    }\n    multiply(scalar) {\n        return this.init(this.ep.multiply(scalar));\n    }\n    multiplyUnsafe(scalar) {\n        return this.init(this.ep.multiplyUnsafe(scalar));\n    }\n    double() {\n        return this.init(this.ep.double());\n    }\n    negate() {\n        return this.init(this.ep.negate());\n    }\n    precompute(windowSize, isLazy) {\n        return this.init(this.ep.precompute(windowSize, isLazy));\n    }\n    /** @deprecated use `toBytes` */\n    toRawBytes() {\n        return this.toBytes();\n    }\n}\n/**\n * Initializes EdDSA signatures over given Edwards curve.\n */\nexport function eddsa(Point, cHash, eddsaOpts = {}) {\n    if (typeof cHash !== 'function')\n        throw new Error('\"hash\" function param is required');\n    _validateObject(eddsaOpts, {}, {\n        adjustScalarBytes: 'function',\n        randomBytes: 'function',\n        domain: 'function',\n        prehash: 'function',\n        mapToCurve: 'function',\n    });\n    const { prehash } = eddsaOpts;\n    const { BASE, Fp, Fn } = Point;\n    const randomBytes = eddsaOpts.randomBytes || randomBytesWeb;\n    const adjustScalarBytes = eddsaOpts.adjustScalarBytes || ((bytes) => bytes);\n    const domain = eddsaOpts.domain ||\n        ((data, ctx, phflag) => {\n            abool(phflag, 'phflag');\n            if (ctx.length || phflag)\n                throw new Error('Contexts/pre-hash are not supported');\n            return data;\n        }); // NOOP\n    // Little-endian SHA512 with modulo n\n    function modN_LE(hash) {\n        return Fn.create(bytesToNumberLE(hash)); // Not Fn.fromBytes: it has length limit\n    }\n    // Get the hashed private scalar per RFC8032 5.1.5\n    function getPrivateScalar(key) {\n        const len = lengths.secretKey;\n        key = ensureBytes('private key', key, len);\n        // Hash private key with curve's hash function to produce uniformingly random input\n        // Check byte lengths: ensure(64, h(ensure(32, key)))\n        const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n        const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n        const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n        const scalar = modN_LE(head); // The actual private scalar\n        return { head, prefix, scalar };\n    }\n    /** Convenience method that creates public key from scalar. RFC8032 5.1.5 */\n    function getExtendedPublicKey(secretKey) {\n        const { head, prefix, scalar } = getPrivateScalar(secretKey);\n        const point = BASE.multiply(scalar); // Point on Edwards curve aka public key\n        const pointBytes = point.toBytes();\n        return { head, prefix, scalar, point, pointBytes };\n    }\n    /** Calculates EdDSA pub key. RFC8032 5.1.5. */\n    function getPublicKey(secretKey) {\n        return getExtendedPublicKey(secretKey).pointBytes;\n    }\n    // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n    function hashDomainToScalar(context = Uint8Array.of(), ...msgs) {\n        const msg = concatBytes(...msgs);\n        return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n    }\n    /** Signs message with privateKey. RFC8032 5.1.6 */\n    function sign(msg, secretKey, options = {}) {\n        msg = ensureBytes('message', msg);\n        if (prehash)\n            msg = prehash(msg); // for ed25519ph etc.\n        const { prefix, scalar, pointBytes } = getExtendedPublicKey(secretKey);\n        const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n        const R = BASE.multiply(r).toBytes(); // R = rG\n        const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n        const s = Fn.create(r + k * scalar); // S = (r + k * s) mod L\n        if (!Fn.isValid(s))\n            throw new Error('sign failed: invalid s'); // 0 <= s < L\n        const rs = concatBytes(R, Fn.toBytes(s));\n        return abytes(rs, lengths.signature, 'result');\n    }\n    // verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\n    const verifyOpts = { zip215: true };\n    /**\n     * Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n     * An extended group equation is checked.\n     */\n    function verify(sig, msg, publicKey, options = verifyOpts) {\n        const { context, zip215 } = options;\n        const len = lengths.signature;\n        sig = ensureBytes('signature', sig, len);\n        msg = ensureBytes('message', msg);\n        publicKey = ensureBytes('publicKey', publicKey, lengths.publicKey);\n        if (zip215 !== undefined)\n            abool(zip215, 'zip215');\n        if (prehash)\n            msg = prehash(msg); // for ed25519ph, etc\n        const mid = len / 2;\n        const r = sig.subarray(0, mid);\n        const s = bytesToNumberLE(sig.subarray(mid, len));\n        let A, R, SB;\n        try {\n            // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n            // zip215=true:  0 <= y < MASK (2^256 for ed25519)\n            // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n            A = Point.fromBytes(publicKey, zip215);\n            R = Point.fromBytes(r, zip215);\n            SB = BASE.multiplyUnsafe(s); // 0 <= s < l is done inside\n        }\n        catch (error) {\n            return false;\n        }\n        if (!zip215 && A.isSmallOrder())\n            return false; // zip215 allows public keys of small order\n        const k = hashDomainToScalar(context, R.toBytes(), A.toBytes(), msg);\n        const RkA = R.add(A.multiplyUnsafe(k));\n        // Extended group equation\n        // [8][S]B = [8]R + [8][k]A'\n        return RkA.subtract(SB).clearCofactor().is0();\n    }\n    const _size = Fp.BYTES; // 32 for ed25519, 57 for ed448\n    const lengths = {\n        secretKey: _size,\n        publicKey: _size,\n        signature: 2 * _size,\n        seed: _size,\n    };\n    function randomSecretKey(seed = randomBytes(lengths.seed)) {\n        return abytes(seed, lengths.seed, 'seed');\n    }\n    function keygen(seed) {\n        const secretKey = utils.randomSecretKey(seed);\n        return { secretKey, publicKey: getPublicKey(secretKey) };\n    }\n    function isValidSecretKey(key) {\n        return isBytes(key) && key.length === Fn.BYTES;\n    }\n    function isValidPublicKey(key, zip215) {\n        try {\n            return !!Point.fromBytes(key, zip215);\n        }\n        catch (error) {\n            return false;\n        }\n    }\n    const utils = {\n        getExtendedPublicKey,\n        randomSecretKey,\n        isValidSecretKey,\n        isValidPublicKey,\n        /**\n         * Converts ed public key to x public key. Uses formula:\n         * - ed25519:\n         *   - `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n         *   - `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n         * - ed448:\n         *   - `(u, v) = ((y-1)/(y+1), sqrt(156324)*u/x)`\n         *   - `(x, y) = (sqrt(156324)*u/v, (1+u)/(1-u))`\n         */\n        toMontgomery(publicKey) {\n            const { y } = Point.fromBytes(publicKey);\n            const size = lengths.publicKey;\n            const is25519 = size === 32;\n            if (!is25519 && size !== 57)\n                throw new Error('only defined for 25519 and 448');\n            const u = is25519 ? Fp.div(_1n + y, _1n - y) : Fp.div(y - _1n, y + _1n);\n            return Fp.toBytes(u);\n        },\n        toMontgomerySecret(secretKey) {\n            const size = lengths.secretKey;\n            abytes(secretKey, size);\n            const hashed = cHash(secretKey.subarray(0, size));\n            return adjustScalarBytes(hashed).subarray(0, size);\n        },\n        /** @deprecated */\n        randomPrivateKey: randomSecretKey,\n        /** @deprecated */\n        precompute(windowSize = 8, point = Point.BASE) {\n            return point.precompute(windowSize, false);\n        },\n    };\n    return Object.freeze({\n        keygen,\n        getPublicKey,\n        sign,\n        verify,\n        utils,\n        Point,\n        lengths,\n    });\n}\nfunction _eddsa_legacy_opts_to_new(c) {\n    const CURVE = {\n        a: c.a,\n        d: c.d,\n        p: c.Fp.ORDER,\n        n: c.n,\n        h: c.h,\n        Gx: c.Gx,\n        Gy: c.Gy,\n    };\n    const Fp = c.Fp;\n    const Fn = Field(CURVE.n, c.nBitLength, true);\n    const curveOpts = { Fp, Fn, uvRatio: c.uvRatio };\n    const eddsaOpts = {\n        randomBytes: c.randomBytes,\n        adjustScalarBytes: c.adjustScalarBytes,\n        domain: c.domain,\n        prehash: c.prehash,\n        mapToCurve: c.mapToCurve,\n    };\n    return { CURVE, curveOpts, hash: c.hash, eddsaOpts };\n}\nfunction _eddsa_new_output_to_legacy(c, eddsa) {\n    const Point = eddsa.Point;\n    const legacy = Object.assign({}, eddsa, {\n        ExtendedPoint: Point,\n        CURVE: c,\n        nBitLength: Point.Fn.BITS,\n        nByteLength: Point.Fn.BYTES,\n    });\n    return legacy;\n}\n// TODO: remove. Use eddsa\nexport function twistedEdwards(c) {\n    const { CURVE, curveOpts, hash, eddsaOpts } = _eddsa_legacy_opts_to_new(c);\n    const Point = edwards(CURVE, curveOpts);\n    const EDDSA = eddsa(Point, hash, eddsaOpts);\n    return _eddsa_new_output_to_legacy(c, EDDSA);\n}\n//# sourceMappingURL=edwards.js.map","/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha2.js';\nimport { abytes, concatBytes, utf8ToBytes } from '@noble/hashes/utils.js';\nimport { pippenger } from \"./abstract/curve.js\";\nimport { PrimeEdwardsPoint, twistedEdwards, } from \"./abstract/edwards.js\";\nimport { _DST_scalar, createHasher, expand_message_xmd, } from \"./abstract/hash-to-curve.js\";\nimport { Field, FpInvertBatch, FpSqrtEven, isNegativeLE, mod, pow2, } from \"./abstract/modular.js\";\nimport { montgomery } from \"./abstract/montgomery.js\";\nimport { bytesToNumberLE, ensureBytes, equalBytes } from \"./utils.js\";\n// prettier-ignore\nconst _0n = /* @__PURE__ */ BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _5n = BigInt(5), _8n = BigInt(8);\n// P = 2n**255n-19n\nconst ed25519_CURVE_p = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed');\n// N = 2n**252n + 27742317777372353535851937790883648493n\n// a = Fp.create(BigInt(-1))\n// d = -121665/121666 a.k.a. Fp.neg(121665 * Fp.inv(121666))\nconst ed25519_CURVE = /* @__PURE__ */ (() => ({\n    p: ed25519_CURVE_p,\n    n: BigInt('0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed'),\n    h: _8n,\n    a: BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec'),\n    d: BigInt('0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3'),\n    Gx: BigInt('0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a'),\n    Gy: BigInt('0x6666666666666666666666666666666666666666666666666666666666666658'),\n}))();\nfunction ed25519_pow_2_252_3(x) {\n    // prettier-ignore\n    const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n    const P = ed25519_CURVE_p;\n    const x2 = (x * x) % P;\n    const b2 = (x2 * x) % P; // x^3, 11\n    const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n    const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n    const b10 = (pow2(b5, _5n, P) * b5) % P;\n    const b20 = (pow2(b10, _10n, P) * b10) % P;\n    const b40 = (pow2(b20, _20n, P) * b20) % P;\n    const b80 = (pow2(b40, _40n, P) * b40) % P;\n    const b160 = (pow2(b80, _80n, P) * b80) % P;\n    const b240 = (pow2(b160, _80n, P) * b80) % P;\n    const b250 = (pow2(b240, _10n, P) * b10) % P;\n    const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n    // ^ To pow to (p+3)/8, multiply it by x.\n    return { pow_p_5_8, b2 };\n}\nfunction adjustScalarBytes(bytes) {\n    // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n    // set the three least significant bits of the first byte\n    bytes[0] &= 248; // 0b1111_1000\n    // and the most significant bit of the last to zero,\n    bytes[31] &= 127; // 0b0111_1111\n    // set the second most significant bit of the last byte to 1\n    bytes[31] |= 64; // 0b0100_0000\n    return bytes;\n}\n// √(-1) aka √(a) aka 2^((p-1)/4)\n// Fp.sqrt(Fp.neg(1))\nconst ED25519_SQRT_M1 = /* @__PURE__ */ BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\n// sqrt(u/v)\nfunction uvRatio(u, v) {\n    const P = ed25519_CURVE_p;\n    const v3 = mod(v * v * v, P); // v³\n    const v7 = mod(v3 * v3 * v, P); // v⁷\n    // (p+3)/8 and (p-5)/8\n    const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n    let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n    const vx2 = mod(v * x * x, P); // vx²\n    const root1 = x; // First root candidate\n    const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n    const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n    const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n    const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // 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 (isNegativeLE(x, P))\n        x = mod(-x, P);\n    return { isValid: useRoot1 || useRoot2, value: x };\n}\nconst Fp = /* @__PURE__ */ (() => Field(ed25519_CURVE.p, { isLE: true }))();\nconst Fn = /* @__PURE__ */ (() => Field(ed25519_CURVE.n, { isLE: true }))();\nconst ed25519Defaults = /* @__PURE__ */ (() => ({\n    ...ed25519_CURVE,\n    Fp,\n    hash: sha512,\n    adjustScalarBytes,\n    // dom2\n    // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n    // Constant-time, u/√v\n    uvRatio,\n}))();\n/**\n * ed25519 curve with EdDSA signatures.\n * @example\n * import { ed25519 } from '@noble/curves/ed25519';\n * const { secretKey, publicKey } = ed25519.keygen();\n * const msg = new TextEncoder().encode('hello');\n * const sig = ed25519.sign(msg, priv);\n * ed25519.verify(sig, msg, pub); // Default mode: follows ZIP215\n * ed25519.verify(sig, msg, pub, { zip215: false }); // RFC8032 / FIPS 186-5\n */\nexport const ed25519 = /* @__PURE__ */ (() => twistedEdwards(ed25519Defaults))();\nfunction ed25519_domain(data, ctx, phflag) {\n    if (ctx.length > 255)\n        throw new Error('Context is too big');\n    return concatBytes(utf8ToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);\n}\n/** Context of ed25519. Uses context for domain separation. */\nexport const ed25519ctx = /* @__PURE__ */ (() => twistedEdwards({\n    ...ed25519Defaults,\n    domain: ed25519_domain,\n}))();\n/** Prehashed version of ed25519. Accepts already-hashed messages in sign() and verify(). */\nexport const ed25519ph = /* @__PURE__ */ (() => twistedEdwards(Object.assign({}, ed25519Defaults, {\n    domain: ed25519_domain,\n    prehash: sha512,\n})))();\n/**\n * ECDH using curve25519 aka x25519.\n * @example\n * import { x25519 } from '@noble/curves/ed25519';\n * const priv = 'a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4';\n * const pub = 'e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c';\n * x25519.getSharedSecret(priv, pub) === x25519.scalarMult(priv, pub); // aliases\n * x25519.getPublicKey(priv) === x25519.scalarMultBase(priv);\n * x25519.getPublicKey(x25519.utils.randomSecretKey());\n */\nexport const x25519 = /* @__PURE__ */ (() => {\n    const P = Fp.ORDER;\n    return montgomery({\n        P,\n        type: 'x25519',\n        powPminus2: (x) => {\n            // x^(p-2) aka x^(2^255-21)\n            const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n            return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n        },\n        adjustScalarBytes,\n    });\n})();\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = /* @__PURE__ */ (() => (ed25519_CURVE_p + _3n) / _8n)(); // 1. c1 = (q + 3) / 8       # Integer arithmetic\nconst ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1\nconst ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u) {\n    const ELL2_C4 = (ed25519_CURVE_p - _5n) / _8n; // 4. c4 = (q - 5) / 8       # Integer arithmetic\n    const ELL2_J = BigInt(486662);\n    let tv1 = Fp.sqr(u); //  1.  tv1 = u^2\n    tv1 = Fp.mul(tv1, _2n); //  2.  tv1 = 2 * tv1\n    let xd = Fp.add(tv1, Fp.ONE); //  3.   xd = tv1 + 1         # Nonzero: -1 is square (mod p), tv1 is not\n    let x1n = Fp.neg(ELL2_J); //  4.  x1n = -J              # x1 = x1n / xd = -J / (1 + 2 * u^2)\n    let tv2 = Fp.sqr(xd); //  5.  tv2 = xd^2\n    let gxd = Fp.mul(tv2, xd); //  6.  gxd = tv2 * xd        # gxd = xd^3\n    let gx1 = Fp.mul(tv1, ELL2_J); //  7.  gx1 = J * tv1         # x1n + J * xd\n    gx1 = Fp.mul(gx1, x1n); //  8.  gx1 = gx1 * x1n       # x1n^2 + J * x1n * xd\n    gx1 = Fp.add(gx1, tv2); //  9.  gx1 = gx1 + tv2       # x1n^2 + J * x1n * xd + xd^2\n    gx1 = Fp.mul(gx1, x1n); //  10. gx1 = gx1 * x1n       # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n    let tv3 = Fp.sqr(gxd); //  11. tv3 = gxd^2\n    tv2 = Fp.sqr(tv3); //  12. tv2 = tv3^2           # gxd^4\n    tv3 = Fp.mul(tv3, gxd); //  13. tv3 = tv3 * gxd       # gxd^3\n    tv3 = Fp.mul(tv3, gx1); //  14. tv3 = tv3 * gx1       # gx1 * gxd^3\n    tv2 = Fp.mul(tv2, tv3); //  15. tv2 = tv2 * tv3       # gx1 * gxd^7\n    let y11 = Fp.pow(tv2, ELL2_C4); //  16. y11 = tv2^c4        # (gx1 * gxd^7)^((p - 5) / 8)\n    y11 = Fp.mul(y11, tv3); //  17. y11 = y11 * tv3       # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n    let y12 = Fp.mul(y11, ELL2_C3); //  18. y12 = y11 * c3\n    tv2 = Fp.sqr(y11); //  19. tv2 = y11^2\n    tv2 = Fp.mul(tv2, gxd); //  20. tv2 = tv2 * gxd\n    let e1 = Fp.eql(tv2, gx1); //  21.  e1 = tv2 == gx1\n    let y1 = Fp.cmov(y12, y11, e1); //  22.  y1 = CMOV(y12, y11, e1)  # If g(x1) is square, this is its sqrt\n    let x2n = Fp.mul(x1n, tv1); //  23. x2n = x1n * tv1       # x2 = x2n / xd = 2 * u^2 * x1n / xd\n    let y21 = Fp.mul(y11, u); //  24. y21 = y11 * u\n    y21 = Fp.mul(y21, ELL2_C2); //  25. y21 = y21 * c2\n    let y22 = Fp.mul(y21, ELL2_C3); //  26. y22 = y21 * c3\n    let gx2 = Fp.mul(gx1, tv1); //  27. gx2 = gx1 * tv1       # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n    tv2 = Fp.sqr(y21); //  28. tv2 = y21^2\n    tv2 = Fp.mul(tv2, gxd); //  29. tv2 = tv2 * gxd\n    let e2 = Fp.eql(tv2, gx2); //  30.  e2 = tv2 == gx2\n    let y2 = Fp.cmov(y22, y21, e2); //  31.  y2 = CMOV(y22, y21, e2)  # If g(x2) is square, this is its sqrt\n    tv2 = Fp.sqr(y1); //  32. tv2 = y1^2\n    tv2 = Fp.mul(tv2, gxd); //  33. tv2 = tv2 * gxd\n    let e3 = Fp.eql(tv2, gx1); //  34.  e3 = tv2 == gx1\n    let xn = Fp.cmov(x2n, x1n, e3); //  35.  xn = CMOV(x2n, x1n, e3)  # If e3, x = x1, else x = x2\n    let y = Fp.cmov(y2, y1, e3); //  36.   y = CMOV(y2, y1, e3)    # If e3, y = y1, else y = y2\n    let e4 = Fp.isOdd(y); //  37.  e4 = sgn0(y) == 1        # Fix sign of y\n    y = Fp.cmov(y, Fp.neg(y), e3 !== e4); //  38.   y = CMOV(y, -y, e3 XOR e4)\n    return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; //  39. return (xn, xd, y, 1)\n}\nconst ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u) {\n    const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); //  1.  (xMn, xMd, yMn, yMd) =\n    // map_to_curve_elligator2_curve25519(u)\n    let xn = Fp.mul(xMn, yMd); //  2.  xn = xMn * yMd\n    xn = Fp.mul(xn, ELL2_C1_EDWARDS); //  3.  xn = xn * c1\n    let xd = Fp.mul(xMd, yMn); //  4.  xd = xMd * yMn    # xn / xd = c1 * xM / yM\n    let yn = Fp.sub(xMn, xMd); //  5.  yn = xMn - xMd\n    let yd = Fp.add(xMn, xMd); //  6.  yd = xMn + xMd    # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n    let tv1 = Fp.mul(xd, yd); //  7. tv1 = xd * yd\n    let e = Fp.eql(tv1, Fp.ZERO); //  8.   e = tv1 == 0\n    xn = Fp.cmov(xn, Fp.ZERO, e); //  9.  xn = CMOV(xn, 0, e)\n    xd = Fp.cmov(xd, Fp.ONE, e); //  10. xd = CMOV(xd, 1, e)\n    yn = Fp.cmov(yn, Fp.ONE, e); //  11. yn = CMOV(yn, 1, e)\n    yd = Fp.cmov(yd, Fp.ONE, e); //  12. yd = CMOV(yd, 1, e)\n    const [xd_inv, yd_inv] = FpInvertBatch(Fp, [xd, yd], true); // batch division\n    return { x: Fp.mul(xn, xd_inv), y: Fp.mul(yn, yd_inv) }; //  13. return (xn, xd, yn, yd)\n}\n/** Hashing to ed25519 points / field. RFC 9380 methods. */\nexport const ed25519_hasher = /* @__PURE__ */ (() => createHasher(ed25519.Point, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {\n    DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n    encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n    p: ed25519_CURVE_p,\n    m: 1,\n    k: 128,\n    expand: 'xmd',\n    hash: sha512,\n}))();\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\n// 1-d²\nconst ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\n// (d-1)²\nconst D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\n// Calculates 1/√(number)\nconst invertSqrt = (number) => uvRatio(_1n, number);\nconst MAX_255B = /* @__PURE__ */ BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nconst bytes255ToNumberLE = (bytes) => ed25519.Point.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n/**\n * Computes Elligator map for Ristretto255.\n * Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-B) and on\n * the [website](https://ristretto.group/formulas/elligator.html).\n */\nfunction calcElligatorRistrettoMap(r0) {\n    const { d } = ed25519_CURVE;\n    const P = ed25519_CURVE_p;\n    const mod = (n) => Fp.create(n);\n    const r = mod(SQRT_M1 * r0 * r0); // 1\n    const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n    let c = BigInt(-1); // 3\n    const D = mod((c - d * r) * mod(r + d)); // 4\n    let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n    let s_ = mod(s * r0); // 6\n    if (!isNegativeLE(s_, P))\n        s_ = mod(-s_);\n    if (!Ns_D_is_sq)\n        s = s_; // 7\n    if (!Ns_D_is_sq)\n        c = r; // 8\n    const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n    const s2 = s * s;\n    const W0 = mod((s + s) * D); // 10\n    const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n    const W2 = mod(_1n - s2); // 12\n    const W3 = mod(_1n + s2); // 13\n    return new ed25519.Point(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\nfunction ristretto255_map(bytes) {\n    abytes(bytes, 64);\n    const r1 = bytes255ToNumberLE(bytes.subarray(0, 32));\n    const R1 = calcElligatorRistrettoMap(r1);\n    const r2 = bytes255ToNumberLE(bytes.subarray(32, 64));\n    const R2 = calcElligatorRistrettoMap(r2);\n    return new _RistrettoPoint(R1.add(R2));\n}\n/**\n * Wrapper over Edwards Point for ristretto255.\n *\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * See [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).\n */\nclass _RistrettoPoint extends PrimeEdwardsPoint {\n    constructor(ep) {\n        super(ep);\n    }\n    static fromAffine(ap) {\n        return new _RistrettoPoint(ed25519.Point.fromAffine(ap));\n    }\n    assertSame(other) {\n        if (!(other instanceof _RistrettoPoint))\n            throw new Error('RistrettoPoint expected');\n    }\n    init(ep) {\n        return new _RistrettoPoint(ep);\n    }\n    /** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */\n    static hashToCurve(hex) {\n        return ristretto255_map(ensureBytes('ristrettoHash', hex, 64));\n    }\n    static fromBytes(bytes) {\n        abytes(bytes, 32);\n        const { a, d } = ed25519_CURVE;\n        const P = ed25519_CURVE_p;\n        const mod = (n) => Fp.create(n);\n        const s = bytes255ToNumberLE(bytes);\n        // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n        // 3. Check that s is non-negative, or else abort\n        if (!equalBytes(Fp.toBytes(s), bytes) || isNegativeLE(s, P))\n            throw new Error('invalid ristretto255 encoding 1');\n        const s2 = mod(s * s);\n        const u1 = mod(_1n + a * s2); // 4 (a is -1)\n        const u2 = mod(_1n - a * s2); // 5\n        const u1_2 = mod(u1 * u1);\n        const u2_2 = mod(u2 * u2);\n        const v = mod(a * d * u1_2 - u2_2); // 6\n        const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n        const Dx = mod(I * u2); // 8\n        const Dy = mod(I * Dx * v); // 9\n        let x = mod((s + s) * Dx); // 10\n        if (isNegativeLE(x, P))\n            x = mod(-x); // 10\n        const y = mod(u1 * Dy); // 11\n        const t = mod(x * y); // 12\n        if (!isValid || isNegativeLE(t, P) || y === _0n)\n            throw new Error('invalid ristretto255 encoding 2');\n        return new _RistrettoPoint(new ed25519.Point(x, y, _1n, t));\n    }\n    /**\n     * Converts ristretto-encoded string to ristretto point.\n     * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode).\n     * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n     */\n    static fromHex(hex) {\n        return _RistrettoPoint.fromBytes(ensureBytes('ristrettoHex', hex, 32));\n    }\n    static msm(points, scalars) {\n        return pippenger(_RistrettoPoint, ed25519.Point.Fn, points, scalars);\n    }\n    /**\n     * Encodes ristretto point to Uint8Array.\n     * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode).\n     */\n    toBytes() {\n        let { X, Y, Z, T } = this.ep;\n        const P = ed25519_CURVE_p;\n        const mod = (n) => Fp.create(n);\n        const u1 = mod(mod(Z + Y) * mod(Z - Y)); // 1\n        const u2 = mod(X * Y); // 2\n        // Square root always exists\n        const u2sq = mod(u2 * u2);\n        const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n        const D1 = mod(invsqrt * u1); // 4\n        const D2 = mod(invsqrt * u2); // 5\n        const zInv = mod(D1 * D2 * T); // 6\n        let D; // 7\n        if (isNegativeLE(T * zInv, P)) {\n            let _x = mod(Y * SQRT_M1);\n            let _y = mod(X * SQRT_M1);\n            X = _x;\n            Y = _y;\n            D = mod(D1 * INVSQRT_A_MINUS_D);\n        }\n        else {\n            D = D2; // 8\n        }\n        if (isNegativeLE(X * zInv, P))\n            Y = mod(-Y); // 9\n        let s = mod((Z - Y) * D); // 10 (check footer's note, no sqrt(-a))\n        if (isNegativeLE(s, P))\n            s = mod(-s);\n        return Fp.toBytes(s); // 11\n    }\n    /**\n     * Compares two Ristretto points.\n     * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals).\n     */\n    equals(other) {\n        this.assertSame(other);\n        const { X: X1, Y: Y1 } = this.ep;\n        const { X: X2, Y: Y2 } = other.ep;\n        const mod = (n) => Fp.create(n);\n        // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n        const one = mod(X1 * Y2) === mod(Y1 * X2);\n        const two = mod(Y1 * Y2) === mod(X1 * X2);\n        return one || two;\n    }\n    is0() {\n        return this.equals(_RistrettoPoint.ZERO);\n    }\n}\n// Do NOT change syntax: the following gymnastics is done,\n// because typescript strips comments, which makes bundlers disable tree-shaking.\n// prettier-ignore\n_RistrettoPoint.BASE = \n/* @__PURE__ */ (() => new _RistrettoPoint(ed25519.Point.BASE))();\n// prettier-ignore\n_RistrettoPoint.ZERO = \n/* @__PURE__ */ (() => new _RistrettoPoint(ed25519.Point.ZERO))();\n// prettier-ignore\n_RistrettoPoint.Fp = \n/* @__PURE__ */ (() => Fp)();\n// prettier-ignore\n_RistrettoPoint.Fn = \n/* @__PURE__ */ (() => Fn)();\nexport const ristretto255 = { Point: _RistrettoPoint };\n/** Hashing to ristretto255 points / field. RFC 9380 methods. */\nexport const ristretto255_hasher = {\n    hashToCurve(msg, options) {\n        const DST = options?.DST || 'ristretto255_XMD:SHA-512_R255MAP_RO_';\n        const xmd = expand_message_xmd(msg, DST, 64, sha512);\n        return ristretto255_map(xmd);\n    },\n    hashToScalar(msg, options = { DST: _DST_scalar }) {\n        const xmd = expand_message_xmd(msg, options.DST, 64, sha512);\n        return Fn.create(bytesToNumberLE(xmd));\n    },\n};\n// export const ristretto255_oprf: OPRF = createORPF({\n//   name: 'ristretto255-SHA512',\n//   Point: RistrettoPoint,\n//   hash: sha512,\n//   hashToGroup: ristretto255_hasher.hashToCurve,\n//   hashToScalar: ristretto255_hasher.hashToScalar,\n// });\n/**\n * Weird / bogus points, useful for debugging.\n * All 8 ed25519 points of 8-torsion subgroup can be generated from the point\n * T = `26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05`.\n * ⟨T⟩ = { O, T, 2T, 3T, 4T, 5T, 6T, 7T }\n */\nexport const ED25519_TORSION_SUBGROUP = [\n    '0100000000000000000000000000000000000000000000000000000000000000',\n    'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n    '0000000000000000000000000000000000000000000000000000000000000080',\n    '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n    'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n    '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n    '0000000000000000000000000000000000000000000000000000000000000000',\n    'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\n/** @deprecated use `ed25519.utils.toMontgomery` */\nexport function edwardsToMontgomeryPub(edwardsPub) {\n    return ed25519.utils.toMontgomery(ensureBytes('pub', edwardsPub));\n}\n/** @deprecated use `ed25519.utils.toMontgomery` */\nexport const edwardsToMontgomery = edwardsToMontgomeryPub;\n/** @deprecated use `ed25519.utils.toMontgomerySecret` */\nexport function edwardsToMontgomeryPriv(edwardsPriv) {\n    return ed25519.utils.toMontgomerySecret(ensureBytes('pub', edwardsPriv));\n}\n/** @deprecated use `ristretto255.Point` */\nexport const RistrettoPoint = _RistrettoPoint;\n/** @deprecated use `import { ed25519_hasher } from '@noble/curves/ed25519.js';` */\nexport const hashToCurve = /* @__PURE__ */ (() => ed25519_hasher.hashToCurve)();\n/** @deprecated use `import { ed25519_hasher } from '@noble/curves/ed25519.js';` */\nexport const encodeToCurve = /* @__PURE__ */ (() => ed25519_hasher.encodeToCurve)();\n/** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */\nexport const hashToRistretto255 = /* @__PURE__ */ (() => ristretto255_hasher.hashToCurve)();\n/** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */\nexport const hash_to_ristretto255 = /* @__PURE__ */ (() => ristretto255_hasher.hashToCurve)();\n//# sourceMappingURL=ed25519.js.map","// The same Ed25519 implementation @solana/web3.js verifies with, so a signature\n// this accepts is one the chain accepts.\nimport { ed25519 } from '@noble/curves/ed25519';\nimport bs58 from 'bs58';\n/**\n * The compiled message a signature actually covers. Comparing it before and\n * after a wallet call proves the wallet signed what we asked it to sign, rather\n * than something it rewrote.\n */\nexport function transactionMessageBytes(transaction) {\n    if (typeof (transaction === null || transaction === void 0 ? void 0 : transaction.serializeMessage) === 'function') {\n        return new Uint8Array(transaction.serializeMessage());\n    }\n    const message = transaction === null || transaction === void 0 ? void 0 : transaction.message;\n    if (typeof (message === null || message === void 0 ? void 0 : message.serialize) === 'function')\n        return message.serialize();\n    // Neither shape. Returning \"no bytes\" would make every comparison against it\n    // trivially equal, which is the one answer this must never give.\n    throw new Error('Cannot read the message of this transaction, so what a wallet signs for it cannot be checked. ' +\n        'Pass a Solana Transaction or VersionedTransaction.');\n}\n/**\n * Did `address` actually sign this transaction?\n *\n * Observing which account a wallet REPORTS after a call does not answer that: a\n * wallet holding several authorized accounts can keep reporting the first while\n * signing with another, and Solana Mobile discards the account a Wallet Standard\n * request names.\n *\n * Nor does a filled signature SLOT answer it. Slots are positional - the wallet\n * writes whatever it produced into the position of the required signer - so a\n * wallet that signed with another key puts THAT key's signature in this one's\n * slot, and a slot check waves it through. Only verifying the signature against\n * the message and this exact public key answers the question, which is what the\n * chain itself will do later; doing it here turns a transaction that would be\n * rejected on arrival into a refusal with a reason.\n */\nexport function transactionSignedBy(transaction, address) {\n    var _a, _b, _c;\n    const message = transactionMessageBytes(transaction);\n    let key;\n    try {\n        key = bs58.decode(address);\n    }\n    catch (_d) {\n        return false;\n    }\n    if (key.length !== 32)\n        return false;\n    const verify = (signature) => {\n        if (!signature || signature.length !== 64)\n            return false;\n        try {\n            return ed25519.verify(signature, message, key);\n        }\n        catch (_a) {\n            // Malformed point/scalar: not a signature by this key.\n            return false;\n        }\n    };\n    if (typeof (transaction === null || transaction === void 0 ? void 0 : transaction.serializeMessage) === 'function') {\n        const legacy = (_a = transaction.signatures) !== null && _a !== void 0 ? _a : [];\n        return legacy.some((s) => { var _a, _b; return ((_b = (_a = s.publicKey) === null || _a === void 0 ? void 0 : _a.toBase58) === null || _b === void 0 ? void 0 : _b.call(_a)) === address && verify(s.signature); });\n    }\n    const versioned = transaction;\n    if (!((_b = versioned === null || versioned === void 0 ? void 0 : versioned.message) === null || _b === void 0 ? void 0 : _b.staticAccountKeys))\n        return false;\n    const signers = versioned.message.staticAccountKeys.slice(0, versioned.message.header.numRequiredSignatures);\n    const index = signers.findIndex((k) => k.toBase58() === address);\n    if (index < 0)\n        return false;\n    return verify((_c = versioned.signatures) === null || _c === void 0 ? void 0 : _c[index]);\n}\n// ---------------------------------------------------------------------------\n// LF-003 part 2: wallets that GUARD a transaction rather than rewrite it.\n//\n// Phantom injects Lighthouse (L2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95)\n// assertion instructions into mainnet transactions so the transaction aborts if\n// balances move in ways its simulation did not predict. Doing that adds\n// instructions AND a program key, and web3.js then RECOMPILES the message, which\n// renumbers every account index in the transaction.\n//\n// Measured on a real mainnet failure (LOCKFUN, 2026-08-25): 696 -> 890 bytes,\n// 13 -> 14 static keys, 4 -> 11 instructions, and the Bounded instruction's own\n// account indexes went [0,7,5,9,7,0,6,1,2,4,3,12,8,11] ->\n// [0,7,6,13,7,0,1,2,3,5,4,10,12,11]. The blockhash, the fee payer, the\n// instruction DATA and - decisively - the RESOLVED account list of that\n// instruction were all unchanged.\n//\n// So byte equality cannot be satisfied by any wallet that does this, while the\n// property that actually matters survives intact. These helpers check that\n// property instead: every instruction we sent still means exactly what it meant.\n// ---------------------------------------------------------------------------\nconst COMPUTE_BUDGET_PROGRAM = 'ComputeBudget111111111111111111111111111111';\n/**\n * A STABLE identity for the account an index refers to, valid across a recompile\n * that renumbers the table.\n *\n * Indexes below `staticAccountKeys.length` name a key directly. Above it they\n * address the lookup-table space - writable slots of every lookup in order, then\n * the readonly slots - which cannot be resolved to a pubkey offline, so those\n * are identified by `<table>#w<slot>` / `<table>#r<slot>` instead. That is\n * equally stable: the same table and slot is the same account.\n */\nfunction accountIdentityAt(message, index) {\n    const staticKeys = message.staticAccountKeys;\n    if (index < 0)\n        return null;\n    if (index < staticKeys.length)\n        return staticKeys[index].toBase58();\n    let offset = index - staticKeys.length;\n    for (const lookup of message.addressTableLookups) {\n        if (offset < lookup.writableIndexes.length)\n            return `${lookup.accountKey.toBase58()}#w${lookup.writableIndexes[offset]}`;\n        offset -= lookup.writableIndexes.length;\n    }\n    for (const lookup of message.addressTableLookups) {\n        if (offset < lookup.readonlyIndexes.length)\n            return `${lookup.accountKey.toBase58()}#r${lookup.readonlyIndexes[offset]}`;\n        offset -= lookup.readonlyIndexes.length;\n    }\n    return null;\n}\nfunction toHex(bytes) {\n    let out = '';\n    for (const byte of bytes)\n        out += byte.toString(16).padStart(2, '0');\n    return out;\n}\n/** Program id + data + the accounts it acts on, independent of index numbering. */\nfunction instructionIdentity(message, index) {\n    const instruction = message.compiledInstructions[index];\n    const program = accountIdentityAt(message, instruction.programIdIndex);\n    if (program === null)\n        return null;\n    const accounts = [];\n    for (const accountIndex of instruction.accountKeyIndexes) {\n        const identity = accountIdentityAt(message, accountIndex);\n        // An index that resolves to nothing makes the instruction unreadable, so\n        // it cannot be shown to still mean what it meant. Fail closed.\n        if (identity === null)\n            return null;\n        // The ROLE is part of what an account means to a program - a document\n        // account demoted to readonly is a different instruction, and the real\n        // guard preserves every role (measured on the mainnet capture), so\n        // binding them costs nothing and turns an on-chain failure into a\n        // refusal that has not yet spent a fee.\n        const signer = message.isAccountSigner(accountIndex) ? 's' : '-';\n        const writable = message.isAccountWritable(accountIndex) ? 'w' : '-';\n        accounts.push(`${identity}${signer}${writable}`);\n    }\n    return `${program}|${accounts.join(',')}|${toHex(instruction.data)}`;\n}\nfunction isComputeBudget(message, index) {\n    return accountIdentityAt(message, message.compiledInstructions[index].programIdIndex) === COMPUTE_BUDGET_PROGRAM;\n}\n/**\n * Does the message a wallet returned still carry, intact, every instruction we\n * asked it to sign?\n *\n * ACCEPTS a wallet that added guard instructions, renumbered the account table,\n * or retuned the compute budget. REFUSES anything that touches what our\n * instructions actually do.\n *\n * ComputeBudget instructions are the one exception on OUR side: they carry no\n * accounts and cannot move value, they only price and bound the transaction, and\n * a guarding wallet has to raise the unit limit to pay for the guard it just\n * added (measured: 155670 -> 162075). Every other instruction we sent must still\n * be present, in the same relative order, with the same program, the same data\n * bytes, and the same resolved accounts.\n *\n * Returns null when the returned message is acceptable, or the reason it is not.\n */\nexport function describeInstructionDivergence(sent, returned) {\n    if (sent.recentBlockhash !== returned.recentBlockhash) {\n        return `it replaced the blockhash (asked to sign against ${sent.recentBlockhash}, signed ` +\n            `against ${returned.recentBlockhash})`;\n    }\n    if (sent.header.numRequiredSignatures !== returned.header.numRequiredSignatures) {\n        return 'it changed how many signatures the transaction requires';\n    }\n    for (let i = 0; i < sent.header.numRequiredSignatures; i++) {\n        if (accountIdentityAt(sent, i) !== accountIdentityAt(returned, i)) {\n            return 'it changed which accounts must sign the transaction';\n        }\n    }\n    // Walk our instructions in order and find each one in the returned message,\n    // only ever moving forwards, never reusing a match - so a wallet may\n    // interleave its own, but cannot reorder or drop ours.\n    let cursor = 0;\n    const matched = new Set();\n    const ourPrograms = new Set();\n    for (let i = 0; i < sent.compiledInstructions.length; i++) {\n        if (isComputeBudget(sent, i))\n            continue;\n        const program = accountIdentityAt(sent, sent.compiledInstructions[i].programIdIndex);\n        if (program === null)\n            return 'the transaction it was asked to sign could not be read back';\n        ourPrograms.add(program);\n        const wanted = instructionIdentity(sent, i);\n        if (wanted === null)\n            return 'the transaction it was asked to sign could not be read back';\n        let found = -1;\n        for (let j = cursor; j < returned.compiledInstructions.length; j++) {\n            if (instructionIdentity(returned, j) === wanted) {\n                found = j;\n                break;\n            }\n        }\n        if (found < 0)\n            return 'one of the instructions it was asked to sign is missing or altered';\n        matched.add(found);\n        cursor = found + 1;\n    }\n    // Surviving is not enough: the wallet must not have added MORE calls to a\n    // program this transaction already invokes. A second `set_documents` - the\n    // same one duplicated, or a different one appended - executes a second write\n    // for a single `set()`, and field operations like increment are not\n    // idempotent. The pre-sign validator already demands exactly one Bounded\n    // instruction; this is what keeps that true of the bytes that get broadcast.\n    // A guard program the transaction never used (Lighthouse) is untouched by\n    // this, which is the whole point.\n    for (let j = 0; j < returned.compiledInstructions.length; j++) {\n        if (matched.has(j))\n            continue;\n        const program = accountIdentityAt(returned, returned.compiledInstructions[j].programIdIndex);\n        if (program !== null && ourPrograms.has(program)) {\n            return 'it added another call to a program this transaction already uses';\n        }\n    }\n    return null;\n}\n","/**\n * Default provider discovery: Phantom-first, then any Wallet-Standard\n * `window.solana`. Kept tiny + synchronous (no heavy imports) so it works inside\n * a user gesture and can be eagerly exported from the SDK entry.\n */\nexport function defaultInjectedProvider() {\n    var _a;\n    if (typeof window === 'undefined')\n        return null;\n    const w = window;\n    const phantom = (_a = w === null || w === void 0 ? void 0 : w.phantom) === null || _a === void 0 ? void 0 : _a.solana;\n    if (phantom && typeof phantom.signMessage === 'function')\n        return phantom;\n    const generic = w === null || w === void 0 ? void 0 : w.solana;\n    if (generic && typeof generic.signMessage === 'function')\n        return generic;\n    return null;\n}\n","/** Name of the feature. */\nexport const SolanaSignAndSendTransaction = 'solana:signAndSendTransaction';\n//# sourceMappingURL=signAndSendTransaction.js.map","/** Name of the feature. */\nexport const SolanaSignMessage = 'solana:signMessage';\n//# sourceMappingURL=signMessage.js.map","/** Name of the feature. */\nexport const SolanaSignTransaction = 'solana:signTransaction';\n//# sourceMappingURL=signTransaction.js.map","/** Name of the feature. */\nexport const StandardConnect = 'standard:connect';\n/**\n * @deprecated Use {@link StandardConnect} instead.\n *\n * @group Deprecated\n */\nexport const Connect = StandardConnect;\n//# sourceMappingURL=connect.js.map","/** Name of the feature. */\nexport const StandardDisconnect = 'standard:disconnect';\n/**\n * @deprecated Use {@link StandardDisconnect} instead.\n *\n * @group Deprecated\n */\nexport const Disconnect = StandardDisconnect;\n//# sourceMappingURL=disconnect.js.map","// wallet-standard-discovery.ts - PROPER native-wallet enumeration for the unified\n// login widget. We do NOT hand-maintain a list of wallet names (Phantom / Solflare\n// / Backpack / ...); instead we read the Solana Wallet Standard registry\n// (`@wallet-standard/app` getWallets(), fed by each wallet's\n// `wallet-standard:register-wallet` event) and surface every wallet that advertises\n// the Solana features we need. New wallets appear automatically, with their real\n// name + icon, and nothing is hardcoded.\n//\n// Each discovered wallet is adapted to the SDK's tiny `InjectedSolanaProvider`\n// shape so the existing wallet-login path (loginWithWallet -> InjectedWalletProvider,\n// SIWS) and the full app signing surface work unchanged. web3.js is only imported\n// lazily inside the transaction methods, so listing wallets and message-signing\n// login stay off the heavy chunk.\nimport { getWallets } from \"@wallet-standard/app\";\nimport { SolanaSignAndSendTransaction, SolanaSignMessage, SolanaSignTransaction, } from \"@solana/wallet-standard-features\";\nimport { StandardConnect, StandardDisconnect } from \"@wallet-standard/features\";\nimport bs58 from \"bs58\";\nimport { resolveSolanaWalletStandardChain } from \"../solana-rpc\";\nimport { isSolanaMobileWallet, solanaMobileWalletLeavesPage, } from \"./solana-mobile-registration\";\nfunction hasFeature(wallet, name) {\n    return Object.prototype.hasOwnProperty.call(wallet.features, name);\n}\nfunction supportsSolana(wallet) {\n    return wallet.chains.some((c) => c.startsWith(\"solana:\"));\n}\n/** A wallet is usable for Bounded login when it can connect + sign a SIWS message\n *  on a Solana chain. Transaction features are optional and checked lazily at\n *  call time, so a message-signing-only wallet still qualifies for login. */\nfunction isLoginCapable(wallet) {\n    return (supportsSolana(wallet) &&\n        hasFeature(wallet, StandardConnect) &&\n        hasFeature(wallet, SolanaSignMessage));\n}\n/** The Wallet-Standard chain id for a configured network, or null when it is\n *  absent/unsupported. Ordering must never throw - failing closed on an\n *  unsupported network is the signing path's job. */\nfunction solanaChainOrNull(network) {\n    switch (network) {\n        case \"solana_mainnet\": return \"solana:mainnet\";\n        case \"solana_devnet\": return \"solana:devnet\";\n        default: return null;\n    }\n}\nfunction feature(wallet, name) {\n    return wallet.features[name];\n}\n/**\n * Adapt a Wallet Standard wallet to the slim `InjectedSolanaProvider` the SDK's\n * wallet-login + signing path consumes. Connect resolves (and caches) the active\n * account; sign* delegate to the wallet's own Solana features. Nothing is\n * wallet-name specific.\n *\n * DS2-0383: signAndSendTransaction MUST execute on the network the APP configured\n * (`config.chain`), not whatever chain the wallet happens to advertise first.\n * Deriving the chain from the wallet's advertised list (with a mainnet fallback)\n * could hand a devnet/testnet transaction to the wallet labelled mainnet - or the\n * reverse. `configuredNetwork` is resolved to the exact Wallet-Standard chain id;\n * an unconfigured network fails closed at sign time rather than defaulting.\n */\nexport function standardWalletToInjectedProvider(wallet, configuredNetwork) {\n    // The adapter holds NO account of its own: `wallet.accounts` is the Wallet\n    // Standard's live authorized-account view, kept in sync by the wallet itself\n    // (it emits standard:events 'change' when it moves). Reading it on every\n    // access means two things at once:\n    //   - an account switch inside the wallet is OBSERVED here, so\n    //     InjectedWalletProvider's DS2-0369 check still fires instead of being\n    //     hidden behind a copy this adapter took at connect time;\n    //   - a connection survives across adapter instances, which is what the\n    //     mobile wallet needs: MWA keeps its accounts for the life of its\n    //     authorization, so a later signing call reuses it rather than paying\n    //     another round trip out to the wallet app.\n    // Prefer an account that can work on the network the app configured: a wallet\n    // can hold several, and one authorized for another cluster would sign\n    // something this app can never land. Fall back to any Solana account only\n    // when the app named no network.\n    const wanted = configuredNetwork ? solanaChainOrNull(configuredNetwork) : null;\n    // Wallet Standard declares chains AND features PER ACCOUNT, so a wallet-level\n    // capability is not proof that the account we picked has it. An account with\n    // an explicit feature list that omits solana:signMessage cannot complete a\n    // SIWS login; one that lists nothing is unconstrained by convention.\n    // STRICT. `WalletAccount.features` is the feature names that account supports,\n    // and a wallet that means \"the defaults\" says so by omitting the field - the\n    // mobile adapter fills DEFAULT_FEATURES in exactly that case. So an empty list\n    // means none, and reading it as \"everything\" picks an account that cannot sign\n    // and fails at the wallet instead of here.\n    const accountSupports = (account, feature) => account.features.includes(feature);\n    const pickSolanaAccount = (accounts) => {\n        // With a network configured, an account that does not support it is not a\n        // usable account: `WalletAccount.chains` is what that account can sign for,\n        // so handing it a transaction for another chain just fails at the wallet -\n        // or worse, is honoured on the wrong cluster. And a Solana account that\n        // cannot sign a message cannot log in at all, so prefer one that can.\n        // No usable account means NOT CONNECTED: a multi-chain wallet can advertise\n        // Solana at wallet level while its authorized account is another chain\n        // entirely, and taking that one would expose e.g. an EVM address as the\n        // Solana public key.\n        const solana = accounts.filter((a) => (a.chains.some((c) => c.startsWith(\"solana:\")) && (!wanted || a.chains.includes(wanted))));\n        // No account that can sign a message is no usable account: SIWS login is the\n        // first thing every wallet path does, so falling back to one that cannot\n        // sign only moves the failure somewhere less legible.\n        return solana.find((a) => accountSupports(a, SolanaSignMessage));\n    };\n    const currentAccount = () => { var _a; return (_a = pickSolanaAccount(wallet.accounts)) !== null && _a !== void 0 ? _a : null; };\n    /** A `solana:signTransaction` input, carrying the app's chain when it has one. */\n    const signInputFor = (account, transaction) => (wanted ? { account, transaction, chain: wanted } : { account, transaction });\n    const requireAccount = () => {\n        const acc = currentAccount();\n        if (!acc)\n            throw new Error(\"Wallet not connected\");\n        return acc;\n    };\n    return {\n        // This wallet reaches its signer by leaving the page (an Android intent),\n        // so every operation needs a fresh user gesture. Flagging it here means the\n        // SDK applies the caller's confirm hook to exactly the wallets that need it\n        // - callers never have to work out which wallet they ended up with.\n        leavesPage: solanaMobileWalletLeavesPage(wallet.name),\n        // The transaction codec is code-split (it pulls web3.js, which must stay off\n        // the login path). Loading it INSIDE a sign call would put a network fetch\n        // between the user's tap and the wallet invocation, which is exactly the\n        // transient activation a mobile wallet's intent navigation needs. Callers\n        // warm it here, before taking that tap - and ONLY for the actions that use\n        // it, so a SIWS login still never touches that chunk.\n        async prepare(action) {\n            if (action === \"signTransaction\" || action === \"signAndSubmitTransaction\") {\n                await import(\"./wallet-standard-tx\");\n            }\n        },\n        get isConnected() {\n            return currentAccount() !== null;\n        },\n        get publicKey() {\n            // Wallet Standard account.address is already the base58 Solana address.\n            const acc = currentAccount();\n            return acc ? { toString: () => acc.address } : null;\n        },\n        async connect(options) {\n            var _a;\n            const connect = feature(wallet, StandardConnect);\n            if (!connect)\n                throw new Error(\"Wallet does not support standard:connect\");\n            // Map the injected-provider `onlyIfTrusted` hint onto the Wallet Standard\n            // `silent` connect: an already-trusted wallet (or MWA with a cached\n            // authorization) reconnects without prompting; an untrusted one returns\n            // no accounts and the caller falls back to an interactive connect.\n            const res = await connect.connect((options === null || options === void 0 ? void 0 : options.onlyIfTrusted) ? { silent: true } : undefined);\n            // Prefer what connect returned, but fall back to the live view for a\n            // wallet that only publishes newly authorized accounts there.\n            const acc = (_a = pickSolanaAccount(res.accounts)) !== null && _a !== void 0 ? _a : currentAccount();\n            if (!acc)\n                throw new Error(\"Wallet returned no account on connect\");\n            return { publicKey: { toString: () => acc.address } };\n        },\n        async disconnect() {\n            const disconnect = feature(wallet, StandardDisconnect);\n            if (disconnect)\n                await disconnect.disconnect();\n        },\n        async signMessage(message) {\n            const acc = requireAccount();\n            const sign = feature(wallet, SolanaSignMessage);\n            if (!sign)\n                throw new Error(\"Wallet does not support solana:signMessage\");\n            const [out] = await sign.signMessage({ account: acc, message });\n            return { signature: out.signature, publicKey: { toString: () => acc.address } };\n        },\n        // DS2-0383, on the plain-sign side: tell the wallet which cluster this\n        // transaction is for, the same way signAndSendTransaction does. `chain` is\n        // OPTIONAL on SolanaSignTransactionInput (unlike the send input, where it is\n        // required), so an app that named no network simply omits it rather than\n        // failing closed - a plain sign puts nothing on a chain, so there is no\n        // wrong cluster to protect against, only a hint to withhold. When a network\n        // IS configured, pickSolanaAccount has already rejected any account that\n        // does not carry that chain, so the hint can never contradict the account.\n        async signTransaction(tx) {\n            const acc = requireAccount();\n            const sign = feature(wallet, SolanaSignTransaction);\n            if (!sign)\n                throw new Error(\"Wallet does not support solana:signTransaction\");\n            const { serializeUnsignedTx, deserializeSignedTx } = await import(\"./wallet-standard-tx\");\n            const [out] = await sign.signTransaction(signInputFor(acc, serializeUnsignedTx(tx)));\n            return deserializeSignedTx(out.signedTransaction);\n        },\n        async signAllTransactions(txs) {\n            const acc = requireAccount();\n            const sign = feature(wallet, SolanaSignTransaction);\n            if (!sign)\n                throw new Error(\"Wallet does not support solana:signTransaction\");\n            const { serializeUnsignedTx, deserializeSignedTx } = await import(\"./wallet-standard-tx\");\n            const outs = await sign.signTransaction(...txs.map((tx) => signInputFor(acc, serializeUnsignedTx(tx))));\n            return outs.map((o) => deserializeSignedTx(o.signedTransaction));\n        },\n        // Asked LIVE, never snapshotted: MWA advertises both transaction features\n        // up front and rewrites them during connect() once it learns what the wallet\n        // actually supports. A capability read at construction time would send a\n        // sign-only wallet down the native-send path and fail instead of using the\n        // caller's sign-then-submit fallback.\n        // Both of these answer \"can this wallet do it, right now\" and nothing more.\n        // WHICH path to prefer is the caller's policy, and it lives with the caller:\n        // InjectedWalletProvider signs and verifies before submitting whenever\n        // signing is possible, because a native send is on the network before anyone\n        // can check who signed it.\n        canSignAndSend: () => {\n            if (!hasFeature(wallet, SolanaSignAndSendTransaction))\n                return false;\n            // The wallet offering it is not enough: the ACCOUNT must too, or the\n            // native call fails where the caller's sign-then-submit path would work.\n            const acc = currentAccount();\n            return !!acc && accountSupports(acc, SolanaSignAndSendTransaction);\n        },\n        canSignTransaction: () => {\n            if (!hasFeature(wallet, SolanaSignTransaction))\n                return false;\n            const acc = currentAccount();\n            return !!acc && accountSupports(acc, SolanaSignTransaction);\n        },\n        async signAndSendTransaction(tx) {\n            const acc = requireAccount();\n            const sas = feature(wallet, SolanaSignAndSendTransaction);\n            if (!sas)\n                throw new Error(\"Wallet does not support solana:signAndSendTransaction\");\n            const { serializeUnsignedTx } = await import(\"./wallet-standard-tx\");\n            const chain = resolveSolanaWalletStandardChain(configuredNetwork, \"Wallet-Standard signAndSendTransaction\");\n            const [out] = await sas.signAndSendTransaction({\n                account: acc,\n                transaction: serializeUnsignedTx(tx),\n                chain,\n            });\n            return { signature: bs58.encode(out.signature) };\n        },\n    };\n}\n/**\n * Enumerate every Solana-capable wallet currently registered with the Wallet\n * Standard, newest registrations included. Returns login-ready choices (name +\n * icon + provider factory). Empty array off-browser or when no wallet is present;\n * the widget then falls back to the legacy injected `window.solana` probe.\n */\nexport function discoverStandardWallets(configuredNetwork) {\n    if (typeof window === \"undefined\")\n        return [];\n    const out = [];\n    // Same name, different wallets is a real case (two SDKs on one page can each\n    // register a \"Mobile Wallet Adapter\"). One entry per name still makes the\n    // right list, but prefer a wallet that can actually work on the app's network\n    // - otherwise an incompatible lookalike that registered first wins and every\n    // transaction fails at the wallet.\n    const chain = configuredNetwork ? solanaChainOrNull(configuredNetwork) : null;\n    // Two wallets can share a display name (another SDK can register its own\n    // \"Mobile Wallet Adapter\"). Keep ONE entry per name, but choose WHICH by\n    // merit, not by who registered first: a wallet that supports the app's chain\n    // beats one that does not, and among equals the mobile wallet WE registered\n    // beats a stranger wearing its label - picking the stranger would drop the\n    // gesture its transport needs and can hide the legacy probe. Names keep their\n    // first-seen order, so the list the user sees is otherwise unchanged.\n    const rank = (w) => (chain && !w.chains.includes(chain) ? 2 : 0) + (isSolanaMobileWallet(w) ? 0 : 1);\n    const bestByName = new Map();\n    const nameOrder = [];\n    for (const wallet of getWallets().get()) {\n        if (!isLoginCapable(wallet))\n            continue;\n        // A wallet that does not carry the app's chain at all cannot serve it. That\n        // is knowable here, so drop it rather than listing it and failing at connect\n        // - or worse, letting the no-injection fallback default to it.\n        if (chain && !wallet.chains.includes(chain))\n            continue;\n        const incumbent = bestByName.get(wallet.name);\n        if (!incumbent) {\n            bestByName.set(wallet.name, wallet);\n            nameOrder.push(wallet.name);\n        }\n        else if (rank(wallet) < rank(incumbent)) {\n            bestByName.set(wallet.name, wallet);\n        }\n    }\n    for (const name of nameOrder) {\n        const wallet = bestByName.get(name);\n        out.push({\n            name: wallet.name,\n            icon: wallet.icon,\n            wallet,\n            // DS2-0383: the adapted provider signs+sends on the app's configured\n            // network, never on the wallet's first advertised chain. The adapter is\n            // stateless (it reads the wallet's live accounts), so handing out a fresh\n            // one per call costs nothing and keeps no state to go stale.\n            getProvider: () => standardWalletToInjectedProvider(wallet, configuredNetwork),\n        });\n    }\n    return out;\n}\n/**\n * First login-capable Wallet Standard wallet adapted to the injected-provider\n * shape, or null. The last-resort fallback for wallet login when nothing is\n * injected - e.g. a Saga/Seeker phone, where the Solana Mobile wallet lives in\n * the registry (via registerMwa) and never as `window.solana`.\n */\nexport function firstStandardWalletProvider(configuredNetwork) {\n    const [first] = discoverStandardWallets(configuredNetwork);\n    return first ? first.getProvider() : null;\n}\n","import { getActiveSessionManager as SessionManager, createSessionWithSignature, genAuthNonce, genSolanaMessage, } from '@bounded-sh/core';\nimport { Buffer } from 'buffer';\nimport bs58 from 'bs58';\nimport { setCurrentUser, setAuthLoading } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { setStoredAuthMethod } from '../stored-auth-method';\nimport { normalizeSolanaRpcUrl, resolveSolanaRpcUrl } from '../solana-rpc';\nimport { confirmAndCheckTransaction, transactionHasSignature } from './transaction-utils';\nimport { describeInstructionDivergence, transactionMessageBytes, transactionSignedBy } from './transaction-identity';\nimport { defaultInjectedProvider, } from './injected-wallet-types';\nimport { firstStandardWalletProvider } from './wallet-standard-discovery';\n// Re-export the type surface + discovery helper for callers who import the\n// provider module directly.\nexport { defaultInjectedProvider };\nconst INJECTED_AUTH_METHOD = 'phantom';\nconst NO_WALLET_ERR = 'No Solana wallet found. Install a wallet like Phantom (phantom.app) and try again, or pass ' +\n    'config.injectedWalletConfig.getProvider to point at your wallet. On a phone, await ' +\n    'ensureWalletLoginReady() before offering wallet login - the mobile wallet only appears once ' +\n    'it is registered, and preparing it after the tap loses the activation it needs.';\nexport class InjectedWalletProvider {\n    constructor(config = {}, networkUrl = null, configuredNetwork = null) {\n        var _a;\n        // DS2-0369: the wallet address this session was minted for. The browser wallet\n        // can silently switch accounts under us; if the currently selected account is\n        // not the one we authenticated, we must REFUSE to sign rather than sign as a\n        // principal the session never proved. A fresh login rebinds it.\n        this.authenticatedAddress = null;\n        if (typeof window === 'undefined') {\n            throw new Error('InjectedWalletProvider can only be instantiated in a browser environment');\n        }\n        // `config.rpcUrl` is the legacy wallet-login-local override. Normalize\n        // it before precedence so an empty legacy value cannot shadow the\n        // current top-level config.rpcUrl. Re-initialization must also replace\n        // every singleton field; otherwise a previous app's provider/RPC can\n        // survive getAuthProvider()'s config-key rotation.\n        const resolvedNetworkUrl = (_a = normalizeSolanaRpcUrl(config.rpcUrl)) !== null && _a !== void 0 ? _a : normalizeSolanaRpcUrl(networkUrl);\n        const localNetwork = typeof config.network === 'string' && config.network.trim() !== ''\n            ? config.network.trim()\n            : null;\n        const resolvedConfiguredNetwork = localNetwork !== null && localNetwork !== void 0 ? localNetwork : (typeof configuredNetwork === 'string' && configuredNetwork.trim() !== ''\n            ? configuredNetwork.trim()\n            : null);\n        // Deliberately NOT a singleton. auth/index.ts already caches the active\n        // provider by config key, so a second instance here bought nothing - and\n        // it cost correctness: two overlapping logins shared one object, so each\n        // overwrote the other's config. With a per-attempt gesture hook in that\n        // config, one attempt could consume the OTHER's user tap and then wipe\n        // its configuration on cleanup, handing the loser the winner's session.\n        // Each construction now owns its state, and only the attempt that\n        // succeeds is committed as the active provider.\n        this.config = Object.assign({}, config);\n        this.networkUrl = resolvedNetworkUrl;\n        this.configuredNetwork = resolvedConfiguredNetwork;\n    }\n    /**\n     * Replace the wallet config without disturbing the account binding. Used to retire a ONE-SHOT gesture hook once the login\n     * that supplied it is over: that closure owns a specific piece of UI, so a\n     * later operation must never be left waiting on it.\n     */\n    setWalletConfig(config) {\n        this.config = Object.assign({}, config);\n    }\n    resolveProvider() {\n        var _a, _b;\n        const provider = (_b = (_a = (this.config.getProvider ? this.config.getProvider() : null)) !== null && _a !== void 0 ? _a : defaultInjectedProvider()) !== null && _b !== void 0 ? _b : firstStandardWalletProvider(this.configuredNetwork);\n        if (!provider)\n            throw new Error(NO_WALLET_ERR);\n        return provider;\n    }\n    /**\n     * Connect for an operation on an EXISTING session. A restored session holds\n     * an address but no wallet connection, so every signing path starts by\n     * reconnecting - silently when the wallet still trusts us.\n     *\n     * When the silent connect finds nothing (an MWA authorization that expired,\n     * was cleared, or belongs to another chain), reconnecting means an\n     * interactive round trip out to the wallet app - the same intent navigation\n     * as the signature that follows, and it needs its own transient activation.\n     * Taking a gesture for it is what makes a restored mobile session usable:\n     * without one the reconnect is dispatched from whatever activation is left\n     * after the caller's own awaits (a governed write has already been to the\n     * server by then), Chrome blocks it, and the protocol reports the wallet as\n     * missing rather than as needing authorization.\n     */\n    async connectForAction(provider) {\n        try {\n            return await this.connectAddress(provider, true);\n        }\n        catch (_a) {\n            await this.requireFreshTap(provider, 'connect');\n            return this.connectAddress(provider);\n        }\n    }\n    /** Connect the injected wallet (if needed) and return its Solana address. */\n    async connectAddress(provider, onlyIfTrusted = false) {\n        var _a, _b;\n        // Already connected — reuse the pubkey.\n        if (provider.publicKey && ((_a = provider.isConnected) !== null && _a !== void 0 ? _a : true)) {\n            return provider.publicKey.toString();\n        }\n        const res = await provider.connect(onlyIfTrusted ? { onlyIfTrusted: true } : undefined);\n        const pk = (_b = res === null || res === void 0 ? void 0 : res.publicKey) !== null && _b !== void 0 ? _b : provider.publicKey;\n        if (!pk)\n            throw new Error('Wallet did not return a public key on connect');\n        return pk.toString();\n    }\n    async login() {\n        var _a;\n        setAuthLoading(true);\n        try {\n            const provider = this.resolveProvider();\n            const address = await this.connectAddress(provider);\n            // Reuse a still-valid session for THIS wallet.\n            const existing = await SessionManager().getSession();\n            if (existing && existing.address === address) {\n                const user = { address, id: address, provider: this };\n                this.authenticatedAddress = address;\n                setCurrentUser(user);\n                this.markAuthMethod();\n                return user;\n            }\n            // SIWS: nonce -> canonical prompt -> the wallet signs it locally.\n            // The nonce is fetched HERE, after connect, on purpose: a network\n            // round trip before the wallet handoff decays the transient\n            // activation the mobile wallet's intent navigation needs.\n            const nonce = await genAuthNonce();\n            const message = await genSolanaMessage(address, nonce);\n            const messageBytes = getPlatform().textEncode(message);\n            await this.freshActivation(provider, 'login', address);\n            const signResult = await provider.signMessage(messageBytes, 'utf8');\n            const signatureBytes = (_a = signResult === null || signResult === void 0 ? void 0 : signResult.signature) !== null && _a !== void 0 ? _a : signResult;\n            // base64 detached ed25519 signature — matches guest/privy providers and\n            // the bounded-auth issuer's base64ToBytes() verify path.\n            const signature = Buffer.from(signatureBytes).toString('base64');\n            const result = await createSessionWithSignature(address, message, signature);\n            await SessionManager().storeSession(address, result.accessToken, result.idToken, result.refreshToken);\n            this.markAuthMethod();\n            const user = { address, id: address, provider: this };\n            this.authenticatedAddress = address;\n            setCurrentUser(user);\n            return user;\n        }\n        finally {\n            setAuthLoading(false);\n        }\n    }\n    /**\n     * DS2-0369: refuse to sign when the browser wallet's currently selected account\n     * differs from the account this session was authenticated with. Signing under a\n     * switched account would produce a message/transaction from an identity the\n     * Bounded session never proved. Require a fresh wallet sign-in to rebind.\n     */\n    assertAuthenticatedAccount(currentAddress, action) {\n        var _a;\n        if (!this.authenticatedAddress || currentAddress !== this.authenticatedAddress) {\n            throw new Error(`The connected Solana wallet account changed after login (session is for ` +\n                `${(_a = this.authenticatedAddress) !== null && _a !== void 0 ? _a : 'no account'}, wallet is on ${currentAddress}). ` +\n                `Sign in again with the wallet before ${action}.`);\n        }\n    }\n    /**\n     * Give the caller a chance to collect a fresh user gesture immediately\n     * before a wallet call. Solana Mobile needs one per operation (each\n     * dispatches an Android intent through window.location.assign, and the\n     * originating tap is spent by the time preparation finishes). A rejection\n     * aborts the operation before anything is signed. No-op when the app\n     * supplied no hook, which is every injected-wallet app.\n     */\n    async freshActivation(provider, action, expected) {\n        var _a;\n        await this.requireFreshTap(provider, action);\n        // DS2-0369, at the last possible moment: the gesture is an arbitrarily\n        // long human pause, and the wallet can move to another account during it\n        // (a mobile reauthorization does exactly that). Re-read and re-check now,\n        // so nothing but the wallet call itself follows this assertion.\n        if (!expected)\n            return;\n        const current = (_a = provider.publicKey) === null || _a === void 0 ? void 0 : _a.toString();\n        if (current === expected)\n            return;\n        if (!current) {\n            // publicKey is optional on the provider interface, so a wallet may\n            // simply stop reporting one. With an account expected, \"cannot tell\"\n            // is not \"unchanged\" - refuse rather than sign blind.\n            throw new Error(`The Solana wallet stopped reporting a connected account before ${action}. ` +\n                `Reconnect the wallet and try again.`);\n        }\n        if (action === 'login') {\n            // Not a violation of a session - there may not be one yet - but the\n            // challenge was built for the account we connected, so signing it\n            // with another produces a proof the issuer will reject anyway.\n            throw new Error(`The connected Solana wallet switched to ${current} while this sign-in was being ` +\n                `approved (it started on ${expected}). Start the wallet sign-in again.`);\n        }\n        this.assertAuthenticatedAccount(current, action);\n    }\n    /**\n     * The gesture half of freshActivation, on its own because a reconnect needs\n     * it too: finish the provider's async work, then collect the tap.\n     */\n    async requireFreshTap(provider, action) {\n        // Finish the provider's own async work FIRST: a lazy chunk fetched after\n        // the tap can outlive the transient activation the wallet's intent\n        // navigation needs, which is the failure this whole hook exists for.\n        if (provider.prepare)\n            await provider.prepare(action);\n        // Only wallets that leave the page need the tap. Applying it to an\n        // in-page wallet would be pure friction, and deciding here (rather than\n        // in the caller) means a caller that supplies the hook is always\n        // correct: it fires exactly when the resolved wallet needs it.\n        if (provider.leavesPage && this.config.confirmWalletAction) {\n            await this.config.confirmWalletAction(action);\n        }\n    }\n    /**\n     * DS2-0369 on the way BACK. The check before a wallet call is not enough for\n     * a wallet that re-authorizes INSIDE it: Solana Mobile does exactly that on\n     * both transports, and discards the account the request named, so it can\n     * return a transaction signed by an account this session never proved. Read\n     * the account again once the wallet answers, before that answer is used.\n     *\n     * LF-003: the message must MEAN the same thing, not BE the same bytes. A\n     * wallet is allowed to guard the transaction it signs - Phantom injects\n     * Lighthouse assertions on mainnet - and doing so recompiles the message and\n     * renumbers every account index, which no byte comparison can survive. What\n     * cannot change is what our own instructions do; `describeInstructionDivergence`\n     * is the check for that, and it is strictly stronger than a length-and-bytes\n     * diff for everything except the parts a wallet is entitled to touch.\n     */\n    async assertSignedByAuthenticatedAccount(signed, message, action) {\n        const expected = this.authenticatedAddress;\n        if (!expected)\n            return;\n        const after = transactionMessageBytes(signed);\n        if (after.length !== message.length || after.some((b, i) => b !== message[i])) {\n            // Parse the SNAPSHOT rather than the caller's object: a wallet that\n            // signs in place has already mutated that object by now.\n            const { VersionedMessage } = await import('@solana/web3.js');\n            let divergence;\n            try {\n                divergence = describeInstructionDivergence(VersionedMessage.deserialize(message), VersionedMessage.deserialize(after));\n            }\n            catch (_a) {\n                // Unreadable either side: cannot show the instructions survived.\n                divergence = 'the transaction it signed could not be read';\n            }\n            if (divergence !== null) {\n                throw new Error(`The Solana wallet returned a different transaction than the one it was asked to ` +\n                    `sign, so nothing was ${action}: ${divergence}. Try again.`);\n            }\n        }\n        if (transactionSignedBy(signed, expected))\n            return;\n        throw new Error(`The Solana wallet did not sign as ${expected}, which is the account this session was ` +\n            `authenticated with, so nothing was ${action}. This happens when the wallet re-authorizes ` +\n            `onto another account - sign in again with the wallet you want to use.`);\n    }\n    markAuthMethod() {\n        // Mark the auth method so clearIncompatibleSession() doesn't wipe this\n        // wallet session on the next init().\n        setStoredAuthMethod(INJECTED_AUTH_METHOD);\n    }\n    async restoreSession() {\n        const session = await SessionManager().getSession();\n        if (!session)\n            return null;\n        this.authenticatedAddress = session.address;\n        const user = { address: session.address, id: session.address, provider: this };\n        setCurrentUser(user);\n        return user;\n    }\n    async logout() {\n        // Clear the Bounded session; best-effort disconnect the wallet.\n        this.authenticatedAddress = null;\n        await SessionManager().clearSession();\n        try {\n            // Same resolution chain as signing, so a registry-only wallet (MWA)\n            // is deauthorized too; resolveProvider throwing (no wallet) is fine.\n            const provider = this.resolveProvider();\n            if (typeof provider.disconnect === 'function')\n                await provider.disconnect();\n        }\n        catch ( /* ignore */_a) { /* ignore */ }\n        setCurrentUser(null);\n    }\n    // --- Full local-keypair signing surface (the wallet's OWN methods) --------\n    async signMessage(message) {\n        var _a;\n        const provider = this.resolveProvider();\n        const address = await this.connectForAction(provider);\n        this.assertAuthenticatedAccount(address, 'signing');\n        const messageBytes = getPlatform().textEncode(message);\n        await this.freshActivation(provider, 'signMessage', this.authenticatedAddress);\n        const res = await provider.signMessage(messageBytes, 'utf8');\n        const signatureBytes = (_a = res === null || res === void 0 ? void 0 : res.signature) !== null && _a !== void 0 ? _a : res;\n        // base58 is the standard Solana signature encoding for app-facing signMessage.\n        return bs58.encode(signatureBytes instanceof Uint8Array ? signatureBytes : new Uint8Array(signatureBytes));\n    }\n    async signTransaction(transaction) {\n        const provider = this.resolveProvider();\n        const address = await this.connectForAction(provider);\n        this.assertAuthenticatedAccount(address, 'signing this transaction');\n        await this.freshActivation(provider, 'signTransaction', this.authenticatedAddress);\n        // What the signature must cover, captured before the wallet sees it.\n        const message = transactionMessageBytes(transaction);\n        const signed = await provider.signTransaction(transaction);\n        await this.assertSignedByAuthenticatedAccount(signed, message, 'returned');\n        return signed;\n    }\n    async signAndSubmitTransaction(transaction, _feePayer) {\n        const { Connection, PublicKey } = await import(\"@solana/web3.js\");\n        const provider = this.resolveProvider();\n        const address = await this.connectForAction(provider);\n        this.assertAuthenticatedAccount(address, 'submitting this transaction');\n        const rpcUrl = this.getRpcUrl();\n        const connection = new Connection(rpcUrl, 'confirmed');\n        // Set a fresh blockhash on the tx (mirrors the other providers).\n        // DS3-0414: a Solana signature covers the compiled message (recentBlockhash\n        // included), so refreshing the blockhash after any signer (sponsor / co-signer)\n        // has signed silently invalidates their signature. Only refresh while the\n        // transaction is still unsigned; once a real signature is present, submit the\n        // caller's transaction verbatim.\n        if (!transactionHasSignature(transaction)) {\n            const { blockhash } = await connection.getLatestBlockhash('confirmed');\n            const isLegacy = 'recentBlockhash' in transaction &&\n                !('message' in transaction && 'staticAccountKeys' in transaction.message);\n            if (isLegacy) {\n                const legacy = transaction;\n                legacy.recentBlockhash = blockhash;\n                if (!legacy.feePayer)\n                    legacy.feePayer = new PublicKey(address);\n            }\n            else {\n                transaction.message.recentBlockhash = blockhash;\n            }\n        }\n        // DS2-0369 again, at the LAST moment: the blockhash fetch above is an\n        // await, and the wallet's selected account can move during it (an MWA\n        // reauthorization does exactly that). Re-read it here so a switch that\n        // happened while we prepared cannot be signed under the old session,\n        // then take the gesture so nothing else can intervene before the call.\n        const signingAddress = await this.connectForAction(provider);\n        this.assertAuthenticatedAccount(signingAddress, 'submitting this transaction');\n        await this.freshActivation(provider, 'signAndSubmitTransaction', this.authenticatedAddress);\n        // SIGN, VERIFY, THEN SUBMIT whenever the wallet can sign - which is every\n        // wallet that is not sign-and-send-only. A native send hands the\n        // transaction straight to the network, so there is no moment at which\n        // anyone can check that it was signed by the account this session was\n        // authenticated with. Signing gives us that moment, and submitting\n        // ourselves costs only the RPC round trip we already make to confirm.\n        //\n        // Deliberately NOT decided by which wallet this is: Solana Mobile is the\n        // one known to re-authorize mid-call, but a display name is not a\n        // security boundary and the verification is worth having for every\n        // wallet. Ask the LIVE capability when the provider offers one - a\n        // Wallet Standard wallet can rewrite its feature set during connect, so\n        // a method being present is not proof it works.\n        const canSign = provider.canSignTransaction\n            ? provider.canSignTransaction()\n            : typeof provider.signTransaction === 'function';\n        if (canSign) {\n            const message = transactionMessageBytes(transaction);\n            const signed = await provider.signTransaction(transaction);\n            // The last moment at which refusing still costs nothing: after this\n            // the transaction is on the network.\n            await this.assertSignedByAuthenticatedAccount(signed, message, 'submitted');\n            const raw = signed.serialize();\n            const signature = await connection.sendRawTransaction(raw);\n            await confirmAndCheckTransaction(connection, signature);\n            return signature;\n        }\n        // Neither capability: this wallet cannot put a transaction on the chain\n        // at all, and pointing at a native send it does not have would only\n        // waste the reader's time.\n        const canNativeSend = provider.canSignAndSend\n            ? provider.canSignAndSend()\n            : typeof provider.signAndSendTransaction === 'function';\n        if (!canNativeSend) {\n            throw new Error('This wallet can neither sign nor send transactions right now. A Wallet Standard ' +\n                'wallet reports its capabilities per account, so check that the connected account ' +\n                'supports solana:signTransaction or solana:signAndSendTransaction.');\n        }\n        // Sign-and-send-only: the wallet broadcasts, so there is no moment at\n        // which anything can be checked - and \"the network would reject a\n        // wrong-account signature anyway\" is not true in general, because a\n        // transaction whose required signer is NOT the session account is\n        // perfectly valid on-chain. This method promises that what it submits\n        // was signed by the account the session was authenticated with, and here\n        // it cannot keep that promise, so it does not make it. An app that wants\n        // the wallet's own broadcast can take the wallet itself through\n        // getNativeMethods() - outside this guarantee, and knowingly.\n        throw new Error('This wallet can only sign-and-send, which broadcasts before Bounded can check that the ' +\n            'session account signed. Drive that wallet directly if you accept that - ' +\n            'const wallet = await (await getAuthProvider()).getNativeMethods() - ' +\n            'or use a wallet that can sign transactions.');\n    }\n    async getNativeMethods() {\n        return this.resolveProvider();\n    }\n    getRpcUrl(network) {\n        return resolveSolanaRpcUrl(this.networkUrl, network !== null && network !== void 0 ? network : this.configuredNetwork, 'Wallet-login Solana transaction');\n    }\n}\n"],"names":["u64.split","u64.rotrSH","u64.shrSH","u64.rotrSL","u64.shrSL","u64.rotrBH","u64.rotrBL","u64.add4L","u64.add4H","u64.add5L","u64.add5H","u64.add","u64.add3L","u64.add3H","_0n","_1n","isBytes_","bytesToHex_","abytes_","hexToBytes_","_2n","_5n","_8n","abytes","abool","randomBytes","randomBytesWeb","SessionManager","Buffer"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,12,13,14,15,16]}