{"version":3,"file":"browser.mjs","sources":["../../../node_modules/.pnpm/@fuels+vm-asm@0.60.2/node_modules/@fuels/vm-asm/dist/web/index.mjs","../src/cli/utils/createConfig.ts","../src/cli/types.ts","../../versions/dist/index.mjs","../../errors/dist/index.mjs","../__vite-browser-external","../../../node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js","../../math/dist/index.mjs","../../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/browser.js","../../utils/dist/index.mjs","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/_assert.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/crypto.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/utils.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/hmac.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/pbkdf2.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/_md.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/sha256.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/scrypt.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/_u64.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/sha3.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/ripemd160.js","../../../node_modules/.pnpm/@noble+hashes@1.7.1/node_modules/@noble/hashes/esm/sha512.js","../../crypto/dist/index.browser.mjs","../../hasher/dist/index.mjs","../../abi-coder/dist/index.mjs","../../address/dist/index.mjs","../../transactions/dist/index.mjs","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isPlaceholder.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curry1.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/type.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_cloneRegExp.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_clone.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/clone.js","../../../node_modules/.pnpm/graphql-request@6.1.0_graphql@16.10.0/node_modules/graphql-request/build/esm/defaultJsonSerializer.js","../../../node_modules/.pnpm/graphql-request@6.1.0_graphql@16.10.0/node_modules/graphql-request/build/esm/helpers.js","../../../node_modules/.pnpm/graphql-request@6.1.0_graphql@16.10.0/node_modules/graphql-request/build/esm/parseArgs.js","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/jsutils/devAssert.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/jsutils/isObjectLike.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/jsutils/invariant.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/location.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/printLocation.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/error/GraphQLError.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/error/syntaxError.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/ast.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/directiveLocation.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/kinds.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/characterClasses.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/blockString.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/tokenKind.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/lexer.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/jsutils/inspect.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/jsutils/instanceOf.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/source.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/parser.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/printString.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/visitor.mjs","../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/language/printer.mjs","../../../node_modules/.pnpm/graphql-request@6.1.0_graphql@16.10.0/node_modules/graphql-request/build/esm/resolveRequestDocument.js","../../../node_modules/.pnpm/graphql-request@6.1.0_graphql@16.10.0/node_modules/graphql-request/build/esm/types.js","../../../node_modules/.pnpm/cross-fetch@4.0.0/node_modules/cross-fetch/dist/browser-ponyfill.js","../../../node_modules/.pnpm/graphql-request@6.1.0_graphql@16.10.0/node_modules/graphql-request/build/esm/index.js","../../../node_modules/.pnpm/tslib@2.8.0/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/graphql-tag@2.12.6_graphql@16.10.0/node_modules/graphql-tag/lib/index.js","../../address/dist/configs.mjs","../../transactions/dist/configs.mjs","../../../node_modules/.pnpm/@noble+curves@1.8.1/node_modules/@noble/curves/esm/abstract/utils.js","../../../node_modules/.pnpm/@noble+curves@1.8.1/node_modules/@noble/curves/esm/abstract/modular.js","../../../node_modules/.pnpm/@noble+curves@1.8.1/node_modules/@noble/curves/esm/abstract/curve.js","../../../node_modules/.pnpm/@noble+curves@1.8.1/node_modules/@noble/curves/esm/abstract/weierstrass.js","../../../node_modules/.pnpm/@noble+curves@1.8.1/node_modules/@noble/curves/esm/_shortw_utils.js","../../../node_modules/.pnpm/@noble+curves@1.8.1/node_modules/@noble/curves/esm/secp256k1.js","../../../node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","../../merkle/dist/index.mjs","../../account/dist/index.mjs","../../program/dist/index.mjs","../../script/dist/index.mjs","../../account/dist/configs.mjs","../../contract/dist/index.mjs","../../math/dist/configs.mjs","../../recipes/dist/index.mjs"],"sourcesContent":["let wasm$1;\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n    if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n        cachedUint8ArrayMemory0 = new Uint8Array(wasm$1.memory.buffer);\n    }\n    return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n    ptr = ptr >>> 0;\n    return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction _assertClass(instance, klass) {\n    if (!(instance instanceof klass)) {\n        throw new Error(`expected instance of ${klass.name}`);\n    }\n}\n/**\n * Construct a `GM` instruction from its arguments.\n * @param {number} ra\n * @param {GMArgs} args\n * @returns {Instruction}\n */\nfunction gm_args(ra, args) {\n    const ret = wasm$1.gm_args(ra, args);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Construct a `GM` instruction from its arguments.\n * @param {number} ra\n * @param {number} rb\n * @param {GTFArgs} args\n * @returns {Instruction}\n */\nfunction gtf_args(ra, rb, args) {\n    const ret = wasm$1.gtf_args(ra, rb, args);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Construct a `WDCM` instruction from its arguments.\n * @param {number} ra\n * @param {number} rb\n * @param {number} rc\n * @param {CompareArgs} args\n * @returns {Instruction}\n */\nfunction wdcm_args(ra, rb, rc, args) {\n    _assertClass(args, CompareArgs);\n    var ptr0 = args.__destroy_into_raw();\n    const ret = wasm$1.wdcm_args(ra, rb, rc, ptr0);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Construct a `WQCM` instruction from its arguments.\n * @param {number} ra\n * @param {number} rb\n * @param {number} rc\n * @param {CompareArgs} args\n * @returns {Instruction}\n */\nfunction wqcm_args(ra, rb, rc, args) {\n    _assertClass(args, CompareArgs);\n    var ptr0 = args.__destroy_into_raw();\n    const ret = wasm$1.wqcm_args(ra, rb, rc, ptr0);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Construct a `WDOP` instruction from its arguments.\n * @param {number} ra\n * @param {number} rb\n * @param {number} rc\n * @param {MathArgs} args\n * @returns {Instruction}\n */\nfunction wdop_args(ra, rb, rc, args) {\n    _assertClass(args, MathArgs);\n    var ptr0 = args.__destroy_into_raw();\n    const ret = wasm$1.wdop_args(ra, rb, rc, ptr0);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Construct a `WQOP` instruction from its arguments.\n * @param {number} ra\n * @param {number} rb\n * @param {number} rc\n * @param {MathArgs} args\n * @returns {Instruction}\n */\nfunction wqop_args(ra, rb, rc, args) {\n    _assertClass(args, MathArgs);\n    var ptr0 = args.__destroy_into_raw();\n    const ret = wasm$1.wqop_args(ra, rb, rc, ptr0);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Construct a `WDML` instruction from its arguments.\n * @param {number} ra\n * @param {number} rb\n * @param {number} rc\n * @param {MulArgs} args\n * @returns {Instruction}\n */\nfunction wdml_args(ra, rb, rc, args) {\n    _assertClass(args, MulArgs);\n    var ptr0 = args.__destroy_into_raw();\n    const ret = wasm$1.wdml_args(ra, rb, rc, ptr0);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Construct a `WQML` instruction from its arguments.\n * @param {number} ra\n * @param {number} rb\n * @param {number} rc\n * @param {MulArgs} args\n * @returns {Instruction}\n */\nfunction wqml_args(ra, rb, rc, args) {\n    _assertClass(args, MulArgs);\n    var ptr0 = args.__destroy_into_raw();\n    const ret = wasm$1.wqml_args(ra, rb, rc, ptr0);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Construct a `WDDV` instruction from its arguments.\n * @param {number} ra\n * @param {number} rb\n * @param {number} rc\n * @param {DivArgs} args\n * @returns {Instruction}\n */\nfunction wddv_args(ra, rb, rc, args) {\n    _assertClass(args, DivArgs);\n    var ptr0 = args.__destroy_into_raw();\n    const ret = wasm$1.wddv_args(ra, rb, rc, ptr0);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Construct a `WQDV` instruction from its arguments.\n * @param {number} ra\n * @param {number} rb\n * @param {number} rc\n * @param {DivArgs} args\n * @returns {Instruction}\n */\nfunction wqdv_args(ra, rb, rc, args) {\n    _assertClass(args, DivArgs);\n    var ptr0 = args.__destroy_into_raw();\n    const ret = wasm$1.wqdv_args(ra, rb, rc, ptr0);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Adds two registers.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction add(dst, lhs, rhs) {\n    const ret = wasm$1.add(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Bitwise ANDs two registers.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction and(dst, lhs, rhs) {\n    const ret = wasm$1.and(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Divides two registers.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction div(dst, lhs, rhs) {\n    const ret = wasm$1.div(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Compares two registers for equality.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction eq(dst, lhs, rhs) {\n    const ret = wasm$1.eq(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Raises one register to the power of another.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction exp(dst, lhs, rhs) {\n    const ret = wasm$1.exp(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Compares two registers for greater-than.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction gt(dst, lhs, rhs) {\n    const ret = wasm$1.gt(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Compares two registers for less-than.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction lt(dst, lhs, rhs) {\n    const ret = wasm$1.lt(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * The integer logarithm of a register.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction mlog(dst, lhs, rhs) {\n    const ret = wasm$1.mlog(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * The integer root of a register.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction mroo(dst, lhs, rhs) {\n    const ret = wasm$1.mroo(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Modulo remainder of two registers.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction mod_(dst, lhs, rhs) {\n    const ret = wasm$1.mod_(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Copy from one register to another.\n * @param {number} dst\n * @param {number} src\n * @returns {Instruction}\n */\nfunction move_(dst, src) {\n    const ret = wasm$1.move_(dst, src);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Multiplies two registers.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction mul(dst, lhs, rhs) {\n    const ret = wasm$1.mul(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Bitwise NOT a register.\n * @param {number} dst\n * @param {number} arg\n * @returns {Instruction}\n */\nfunction not(dst, arg) {\n    const ret = wasm$1.not(dst, arg);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Bitwise ORs two registers.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction or(dst, lhs, rhs) {\n    const ret = wasm$1.or(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Left shifts a register by a register.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction sll(dst, lhs, rhs) {\n    const ret = wasm$1.sll(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Right shifts a register by a register.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction srl(dst, lhs, rhs) {\n    const ret = wasm$1.srl(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Subtracts two registers.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction sub(dst, lhs, rhs) {\n    const ret = wasm$1.sub(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Bitwise XORs two registers.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction xor(dst, lhs, rhs) {\n    const ret = wasm$1.xor(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Fused multiply-divide with arbitrary precision intermediate step.\n * @param {number} dst\n * @param {number} mul_lhs\n * @param {number} mul_rhs\n * @param {number} divisor\n * @returns {Instruction}\n */\nfunction mldv(dst, mul_lhs, mul_rhs, divisor) {\n    const ret = wasm$1.mldv(dst, mul_lhs, mul_rhs, divisor);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Return from context.\n * @param {number} value\n * @returns {Instruction}\n */\nfunction ret(value) {\n    const ret = wasm$1.ret(value);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Return from context with data.\n * @param {number} addr\n * @param {number} len\n * @returns {Instruction}\n */\nfunction retd(addr, len) {\n    const ret = wasm$1.retd(addr, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Allocate a number of bytes from the heap.\n * @param {number} bytes\n * @returns {Instruction}\n */\nfunction aloc(bytes) {\n    const ret = wasm$1.aloc(bytes);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Clear a variable number of bytes in memory.\n * @param {number} dst_addr\n * @param {number} len\n * @returns {Instruction}\n */\nfunction mcl(dst_addr, len) {\n    const ret = wasm$1.mcl(dst_addr, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Copy a variable number of bytes in memory.\n * @param {number} dst_addr\n * @param {number} src_addr\n * @param {number} len\n * @returns {Instruction}\n */\nfunction mcp(dst_addr, src_addr, len) {\n    const ret = wasm$1.mcp(dst_addr, src_addr, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Compare bytes in memory.\n * @param {number} result\n * @param {number} lhs_addr\n * @param {number} rhs_addr\n * @param {number} len\n * @returns {Instruction}\n */\nfunction meq(result, lhs_addr, rhs_addr, len) {\n    const ret = wasm$1.meq(result, lhs_addr, rhs_addr, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get block header hash for height.\n * @param {number} dst\n * @param {number} heigth\n * @returns {Instruction}\n */\nfunction bhsh(dst, heigth) {\n    const ret = wasm$1.bhsh(dst, heigth);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get current block height.\n * @param {number} dst\n * @returns {Instruction}\n */\nfunction bhei(dst) {\n    const ret = wasm$1.bhei(dst);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Burns `amount` coins of the asset ID created from `sub_id` for the current contract.\n * @param {number} amount\n * @param {number} sub_id_addr\n * @returns {Instruction}\n */\nfunction burn(amount, sub_id_addr) {\n    const ret = wasm$1.burn(amount, sub_id_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Call a contract.\n * @param {number} target_struct\n * @param {number} fwd_coins\n * @param {number} asset_id_addr\n * @param {number} fwd_gas\n * @returns {Instruction}\n */\nfunction call(target_struct, fwd_coins, asset_id_addr, fwd_gas) {\n    const ret = wasm$1.call(target_struct, fwd_coins, asset_id_addr, fwd_gas);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Copy contract code for a contract.\n * @param {number} dst_addr\n * @param {number} contract_id_addr\n * @param {number} offset\n * @param {number} len\n * @returns {Instruction}\n */\nfunction ccp(dst_addr, contract_id_addr, offset, len) {\n    const ret = wasm$1.ccp(dst_addr, contract_id_addr, offset, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get code root of a contract.\n * @param {number} dst_addr\n * @param {number} contract_id_addr\n * @returns {Instruction}\n */\nfunction croo(dst_addr, contract_id_addr) {\n    const ret = wasm$1.croo(dst_addr, contract_id_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get code size of a contract.\n * @param {number} dst\n * @param {number} contract_id_addr\n * @returns {Instruction}\n */\nfunction csiz(dst, contract_id_addr) {\n    const ret = wasm$1.csiz(dst, contract_id_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get current block proposer's address.\n * @param {number} dst\n * @returns {Instruction}\n */\nfunction cb(dst) {\n    const ret = wasm$1.cb(dst);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Load code as executable either from contract, blob, or memory.\n * @param {number} src_addr\n * @param {number} offset\n * @param {number} len\n * @param {number} mode\n * @returns {Instruction}\n */\nfunction ldc(src_addr, offset, len, mode) {\n    const ret = wasm$1.ldc(src_addr, offset, len, mode);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Log an event.\n * @param {number} a\n * @param {number} b\n * @param {number} c\n * @param {number} d\n * @returns {Instruction}\n */\nfunction log(a, b, c, d) {\n    const ret = wasm$1.log(a, b, c, d);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Log data.\n * @param {number} a\n * @param {number} b\n * @param {number} addr\n * @param {number} len\n * @returns {Instruction}\n */\nfunction logd(a, b, addr, len) {\n    const ret = wasm$1.logd(a, b, addr, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Mints `amount` coins of the asset ID created from `sub_id` for the current contract.\n * @param {number} amount\n * @param {number} sub_id_addr\n * @returns {Instruction}\n */\nfunction mint(amount, sub_id_addr) {\n    const ret = wasm$1.mint(amount, sub_id_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Halt execution, reverting state changes and returning a value.\n * @param {number} value\n * @returns {Instruction}\n */\nfunction rvrt(value) {\n    const ret = wasm$1.rvrt(value);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Clear a series of slots from contract storage.\n * @param {number} key_addr\n * @param {number} status\n * @param {number} lenq\n * @returns {Instruction}\n */\nfunction scwq(key_addr, status, lenq) {\n    const ret = wasm$1.scwq(key_addr, status, lenq);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Load a word from contract storage.\n * @param {number} dst\n * @param {number} status\n * @param {number} key_addr\n * @returns {Instruction}\n */\nfunction srw(dst, status, key_addr) {\n    const ret = wasm$1.srw(dst, status, key_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Load a series of 32 byte slots from contract storage.\n * @param {number} dst_addr\n * @param {number} status\n * @param {number} key_addr\n * @param {number} lenq\n * @returns {Instruction}\n */\nfunction srwq(dst_addr, status, key_addr, lenq) {\n    const ret = wasm$1.srwq(dst_addr, status, key_addr, lenq);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Store a word in contract storage.\n * @param {number} key_addr\n * @param {number} status\n * @param {number} value\n * @returns {Instruction}\n */\nfunction sww(key_addr, status, value) {\n    const ret = wasm$1.sww(key_addr, status, value);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Store a series of 32 byte slots in contract storage.\n * @param {number} key_addr\n * @param {number} status\n * @param {number} src_addr\n * @param {number} lenq\n * @returns {Instruction}\n */\nfunction swwq(key_addr, status, src_addr, lenq) {\n    const ret = wasm$1.swwq(key_addr, status, src_addr, lenq);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Transfer coins to a contract unconditionally.\n * @param {number} contract_id_addr\n * @param {number} amount\n * @param {number} asset_id_addr\n * @returns {Instruction}\n */\nfunction tr(contract_id_addr, amount, asset_id_addr) {\n    const ret = wasm$1.tr(contract_id_addr, amount, asset_id_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Transfer coins to a variable output.\n * @param {number} contract_id_addr\n * @param {number} output_index\n * @param {number} amount\n * @param {number} asset_id_addr\n * @returns {Instruction}\n */\nfunction tro(contract_id_addr, output_index, amount, asset_id_addr) {\n    const ret = wasm$1.tro(contract_id_addr, output_index, amount, asset_id_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * The 64-byte public key (x, y) recovered from 64-byte signature on 32-byte message hash.\n * @param {number} dst_addr\n * @param {number} sig_addr\n * @param {number} msg_hash_addr\n * @returns {Instruction}\n */\nfunction eck1(dst_addr, sig_addr, msg_hash_addr) {\n    const ret = wasm$1.eck1(dst_addr, sig_addr, msg_hash_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * The 64-byte Secp256r1 public key (x, y) recovered from 64-byte signature on 32-byte message hash.\n * @param {number} dst_addr\n * @param {number} sig_addr\n * @param {number} msg_hash_addr\n * @returns {Instruction}\n */\nfunction ecr1(dst_addr, sig_addr, msg_hash_addr) {\n    const ret = wasm$1.ecr1(dst_addr, sig_addr, msg_hash_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Verify ED25519 public key and signature match a message.\n * @param {number} pub_key_addr\n * @param {number} sig_addr\n * @param {number} msg_addr\n * @param {number} msg_len\n * @returns {Instruction}\n */\nfunction ed19(pub_key_addr, sig_addr, msg_addr, msg_len) {\n    const ret = wasm$1.ed19(pub_key_addr, sig_addr, msg_addr, msg_len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * The keccak-256 hash of a slice.\n * @param {number} dst_addr\n * @param {number} src_addr\n * @param {number} len\n * @returns {Instruction}\n */\nfunction k256(dst_addr, src_addr, len) {\n    const ret = wasm$1.k256(dst_addr, src_addr, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * The SHA-2-256 hash of a slice.\n * @param {number} dst_addr\n * @param {number} src_addr\n * @param {number} len\n * @returns {Instruction}\n */\nfunction s256(dst_addr, src_addr, len) {\n    const ret = wasm$1.s256(dst_addr, src_addr, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get timestamp of block at given height.\n * @param {number} dst\n * @param {number} heigth\n * @returns {Instruction}\n */\nfunction time(dst, heigth) {\n    const ret = wasm$1.time(dst, heigth);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Performs no operation.\n * @returns {Instruction}\n */\nfunction noop() {\n    const ret = wasm$1.noop();\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Set flag register to a register.\n * @param {number} value\n * @returns {Instruction}\n */\nfunction flag(value) {\n    const ret = wasm$1.flag(value);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get the balance of contract of an asset ID.\n * @param {number} dst\n * @param {number} asset_id_addr\n * @param {number} contract_id_addr\n * @returns {Instruction}\n */\nfunction bal(dst, asset_id_addr, contract_id_addr) {\n    const ret = wasm$1.bal(dst, asset_id_addr, contract_id_addr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Dynamic jump.\n * @param {number} abs_target\n * @returns {Instruction}\n */\nfunction jmp(abs_target) {\n    const ret = wasm$1.jmp(abs_target);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Conditional dynamic jump.\n * @param {number} abs_target\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction jne(abs_target, lhs, rhs) {\n    const ret = wasm$1.jne(abs_target, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Send a message to recipient address with call abi, coins, and output.\n * @param {number} recipient_addr\n * @param {number} data_addr\n * @param {number} data_len\n * @param {number} coins\n * @returns {Instruction}\n */\nfunction smo(recipient_addr, data_addr, data_len, coins) {\n    const ret = wasm$1.smo(recipient_addr, data_addr, data_len, coins);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Adds a register and an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction addi(dst, lhs, rhs) {\n    const ret = wasm$1.addi(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Bitwise ANDs a register and an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction andi(dst, lhs, rhs) {\n    const ret = wasm$1.andi(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Divides a register and an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction divi(dst, lhs, rhs) {\n    const ret = wasm$1.divi(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Raises one register to the power of an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction expi(dst, lhs, rhs) {\n    const ret = wasm$1.expi(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Modulo remainder of a register and an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction modi(dst, lhs, rhs) {\n    const ret = wasm$1.modi(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Multiplies a register and an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction muli(dst, lhs, rhs) {\n    const ret = wasm$1.muli(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Bitwise ORs a register and an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction ori(dst, lhs, rhs) {\n    const ret = wasm$1.ori(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Left shifts a register by an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction slli(dst, lhs, rhs) {\n    const ret = wasm$1.slli(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Right shifts a register by an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction srli(dst, lhs, rhs) {\n    const ret = wasm$1.srli(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Subtracts a register and an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction subi(dst, lhs, rhs) {\n    const ret = wasm$1.subi(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Bitwise XORs a register and an immediate value.\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @returns {Instruction}\n */\nfunction xori(dst, lhs, rhs) {\n    const ret = wasm$1.xori(dst, lhs, rhs);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Conditional jump.\n * @param {number} cond_lhs\n * @param {number} cond_rhs\n * @param {number} abs_target\n * @returns {Instruction}\n */\nfunction jnei(cond_lhs, cond_rhs, abs_target) {\n    const ret = wasm$1.jnei(cond_lhs, cond_rhs, abs_target);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * A byte is loaded from the specified address offset by an immediate value.\n * @param {number} dst\n * @param {number} addr\n * @param {number} offset\n * @returns {Instruction}\n */\nfunction lb(dst, addr, offset) {\n    const ret = wasm$1.lb(dst, addr, offset);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * A word is loaded from the specified address offset by an immediate value.\n * @param {number} dst\n * @param {number} addr\n * @param {number} offset\n * @returns {Instruction}\n */\nfunction lw(dst, addr, offset) {\n    const ret = wasm$1.lw(dst, addr, offset);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Write the least significant byte of a register to memory.\n * @param {number} addr\n * @param {number} value\n * @param {number} offset\n * @returns {Instruction}\n */\nfunction sb(addr, value, offset) {\n    const ret = wasm$1.sb(addr, value, offset);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Write a register to memory.\n * @param {number} addr\n * @param {number} value\n * @param {number} offset\n * @returns {Instruction}\n */\nfunction sw(addr, value, offset) {\n    const ret = wasm$1.sw(addr, value, offset);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Copy an immediate number of bytes in memory.\n * @param {number} dst_addr\n * @param {number} src_addr\n * @param {number} len\n * @returns {Instruction}\n */\nfunction mcpi(dst_addr, src_addr, len) {\n    const ret = wasm$1.mcpi(dst_addr, src_addr, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get transaction fields.\n * @param {number} dst\n * @param {number} arg\n * @param {number} selector\n * @returns {Instruction}\n */\nfunction gtf(dst, arg, selector) {\n    const ret = wasm$1.gtf(dst, arg, selector);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Clear an immediate number of bytes in memory.\n * @param {number} addr\n * @param {number} count\n * @returns {Instruction}\n */\nfunction mcli(addr, count) {\n    const ret = wasm$1.mcli(addr, count);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get metadata from memory.\n * @param {number} dst\n * @param {number} selector\n * @returns {Instruction}\n */\nfunction gm(dst, selector) {\n    const ret = wasm$1.gm(dst, selector);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Copy immediate value into a register\n * @param {number} dst\n * @param {number} val\n * @returns {Instruction}\n */\nfunction movi(dst, val) {\n    const ret = wasm$1.movi(dst, val);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Conditional jump against zero.\n * @param {number} cond_nz\n * @param {number} abs_target\n * @returns {Instruction}\n */\nfunction jnzi(cond_nz, abs_target) {\n    const ret = wasm$1.jnzi(cond_nz, abs_target);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Unconditional dynamic relative jump forwards, with a constant offset.\n * @param {number} dynamic\n * @param {number} fixed\n * @returns {Instruction}\n */\nfunction jmpf(dynamic, fixed) {\n    const ret = wasm$1.jmpf(dynamic, fixed);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Unconditional dynamic relative jump backwards, with a constant offset.\n * @param {number} dynamic\n * @param {number} fixed\n * @returns {Instruction}\n */\nfunction jmpb(dynamic, fixed) {\n    const ret = wasm$1.jmpb(dynamic, fixed);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Dynamic relative jump forwards, conditional against zero, with a constant offset.\n * @param {number} cond_nz\n * @param {number} dynamic\n * @param {number} fixed\n * @returns {Instruction}\n */\nfunction jnzf(cond_nz, dynamic, fixed) {\n    const ret = wasm$1.jnzf(cond_nz, dynamic, fixed);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Dynamic relative jump backwards, conditional against zero, with a constant offset.\n * @param {number} cond_nz\n * @param {number} dynamic\n * @param {number} fixed\n * @returns {Instruction}\n */\nfunction jnzb(cond_nz, dynamic, fixed) {\n    const ret = wasm$1.jnzb(cond_nz, dynamic, fixed);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Dynamic relative jump forwards, conditional on comparsion, with a constant offset.\n * @param {number} cond_lhs\n * @param {number} cond_rhs\n * @param {number} dynamic\n * @param {number} fixed\n * @returns {Instruction}\n */\nfunction jnef(cond_lhs, cond_rhs, dynamic, fixed) {\n    const ret = wasm$1.jnef(cond_lhs, cond_rhs, dynamic, fixed);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Dynamic relative jump backwards, conditional on comparsion, with a constant offset.\n * @param {number} cond_lhs\n * @param {number} cond_rhs\n * @param {number} dynamic\n * @param {number} fixed\n * @returns {Instruction}\n */\nfunction jneb(cond_lhs, cond_rhs, dynamic, fixed) {\n    const ret = wasm$1.jneb(cond_lhs, cond_rhs, dynamic, fixed);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Jump.\n * @param {number} abs_target\n * @returns {Instruction}\n */\nfunction ji(abs_target) {\n    const ret = wasm$1.ji(abs_target);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Extend the current call frame's stack by an immediate value.\n * @param {number} amount\n * @returns {Instruction}\n */\nfunction cfei(amount) {\n    const ret = wasm$1.cfei(amount);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Shrink the current call frame's stack by an immediate value.\n * @param {number} amount\n * @returns {Instruction}\n */\nfunction cfsi(amount) {\n    const ret = wasm$1.cfsi(amount);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Extend the current call frame's stack\n * @param {number} amount\n * @returns {Instruction}\n */\nfunction cfe(amount) {\n    const ret = wasm$1.cfe(amount);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Shrink the current call frame's stack\n * @param {number} amount\n * @returns {Instruction}\n */\nfunction cfs(amount) {\n    const ret = wasm$1.cfs(amount);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Push a bitmask-selected set of registers in range 16..40 to the stack.\n * @param {number} bitmask\n * @returns {Instruction}\n */\nfunction pshl(bitmask) {\n    const ret = wasm$1.pshl(bitmask);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Push a bitmask-selected set of registers in range 40..64 to the stack.\n * @param {number} bitmask\n * @returns {Instruction}\n */\nfunction pshh(bitmask) {\n    const ret = wasm$1.pshh(bitmask);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Pop a bitmask-selected set of registers in range 16..40 to the stack.\n * @param {number} bitmask\n * @returns {Instruction}\n */\nfunction popl(bitmask) {\n    const ret = wasm$1.popl(bitmask);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Pop a bitmask-selected set of registers in range 40..64 to the stack.\n * @param {number} bitmask\n * @returns {Instruction}\n */\nfunction poph(bitmask) {\n    const ret = wasm$1.poph(bitmask);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Compare 128bit integers\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @param {number} flags\n * @returns {Instruction}\n */\nfunction wdcm(dst, lhs, rhs, flags) {\n    const ret = wasm$1.wdcm(dst, lhs, rhs, flags);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Compare 256bit integers\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @param {number} flags\n * @returns {Instruction}\n */\nfunction wqcm(dst, lhs, rhs, flags) {\n    const ret = wasm$1.wqcm(dst, lhs, rhs, flags);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Simple 128bit operations\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @param {number} flags\n * @returns {Instruction}\n */\nfunction wdop(dst, lhs, rhs, flags) {\n    const ret = wasm$1.wdop(dst, lhs, rhs, flags);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Simple 256bit operations\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @param {number} flags\n * @returns {Instruction}\n */\nfunction wqop(dst, lhs, rhs, flags) {\n    const ret = wasm$1.wqop(dst, lhs, rhs, flags);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Multiply 128bit\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @param {number} flags\n * @returns {Instruction}\n */\nfunction wdml(dst, lhs, rhs, flags) {\n    const ret = wasm$1.wdml(dst, lhs, rhs, flags);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Multiply 256bit\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @param {number} flags\n * @returns {Instruction}\n */\nfunction wqml(dst, lhs, rhs, flags) {\n    const ret = wasm$1.wqml(dst, lhs, rhs, flags);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Divide 128bit\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @param {number} flags\n * @returns {Instruction}\n */\nfunction wddv(dst, lhs, rhs, flags) {\n    const ret = wasm$1.wddv(dst, lhs, rhs, flags);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Divide 256bit\n * @param {number} dst\n * @param {number} lhs\n * @param {number} rhs\n * @param {number} flags\n * @returns {Instruction}\n */\nfunction wqdv(dst, lhs, rhs, flags) {\n    const ret = wasm$1.wqdv(dst, lhs, rhs, flags);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Fused multiply-divide 128bit\n * @param {number} dst\n * @param {number} mul_lhs\n * @param {number} mul_rhs\n * @param {number} divisor\n * @returns {Instruction}\n */\nfunction wdmd(dst, mul_lhs, mul_rhs, divisor) {\n    const ret = wasm$1.wdmd(dst, mul_lhs, mul_rhs, divisor);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Fused multiply-divide 256bit\n * @param {number} dst\n * @param {number} mul_lhs\n * @param {number} mul_rhs\n * @param {number} divisor\n * @returns {Instruction}\n */\nfunction wqmd(dst, mul_lhs, mul_rhs, divisor) {\n    const ret = wasm$1.wqmd(dst, mul_lhs, mul_rhs, divisor);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * AddMod 128bit\n * @param {number} dst\n * @param {number} add_lhs\n * @param {number} add_rhs\n * @param {number} modulo\n * @returns {Instruction}\n */\nfunction wdam(dst, add_lhs, add_rhs, modulo) {\n    const ret = wasm$1.wdam(dst, add_lhs, add_rhs, modulo);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * AddMod 256bit\n * @param {number} dst\n * @param {number} add_lhs\n * @param {number} add_rhs\n * @param {number} modulo\n * @returns {Instruction}\n */\nfunction wqam(dst, add_lhs, add_rhs, modulo) {\n    const ret = wasm$1.wqam(dst, add_lhs, add_rhs, modulo);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * MulMod 128bit\n * @param {number} dst\n * @param {number} mul_lhs\n * @param {number} mul_rhs\n * @param {number} modulo\n * @returns {Instruction}\n */\nfunction wdmm(dst, mul_lhs, mul_rhs, modulo) {\n    const ret = wasm$1.wdmm(dst, mul_lhs, mul_rhs, modulo);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * MulMod 256bit\n * @param {number} dst\n * @param {number} mul_lhs\n * @param {number} mul_rhs\n * @param {number} modulo\n * @returns {Instruction}\n */\nfunction wqmm(dst, mul_lhs, mul_rhs, modulo) {\n    const ret = wasm$1.wqmm(dst, mul_lhs, mul_rhs, modulo);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Call external function\n * @param {number} a\n * @param {number} b\n * @param {number} c\n * @param {number} d\n * @returns {Instruction}\n */\nfunction ecal(a, b, c, d) {\n    const ret = wasm$1.ecal(a, b, c, d);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Get blob size\n * @param {number} dst\n * @param {number} blob_id_ptr\n * @returns {Instruction}\n */\nfunction bsiz(dst, blob_id_ptr) {\n    const ret = wasm$1.bsiz(dst, blob_id_ptr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Load blob as data\n * @param {number} dst_ptr\n * @param {number} blob_id_ptr\n * @param {number} offset\n * @param {number} len\n * @returns {Instruction}\n */\nfunction bldd(dst_ptr, blob_id_ptr, offset, len) {\n    const ret = wasm$1.bldd(dst_ptr, blob_id_ptr, offset, len);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Given some curve, performs an operation on points\n * @param {number} dst\n * @param {number} curve_id\n * @param {number} operation_type\n * @param {number} points_ptr\n * @returns {Instruction}\n */\nfunction ecop(dst, curve_id, operation_type, points_ptr) {\n    const ret = wasm$1.ecop(dst, curve_id, operation_type, points_ptr);\n    return Instruction.__wrap(ret);\n}\n\n/**\n * Given some curve, performs a pairing on groups of points\n * @param {number} success\n * @param {number} curve_id\n * @param {number} number_elements\n * @param {number} points_ptr\n * @returns {Instruction}\n */\nfunction epar(success, curve_id, number_elements, points_ptr) {\n    const ret = wasm$1.epar(success, curve_id, number_elements, points_ptr);\n    return Instruction.__wrap(ret);\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n    if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm$1.memory.buffer)) {\n        cachedDataViewMemory0 = new DataView(wasm$1.memory.buffer);\n    }\n    return cachedDataViewMemory0;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n    ptr = ptr >>> 0;\n    return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n * Comparison mode used by WDCM and WQCM instructions.\n * @enum {0 | 1 | 2 | 3 | 4 | 5 | 6}\n */\nconst CompareMode = Object.freeze({\n    /**\n     * Equality (`==`)\n     */\n    EQ: 0, \"0\": \"EQ\",\n    /**\n     * Inequality (`!=`)\n     */\n    NE: 1, \"1\": \"NE\",\n    /**\n     * Less than (`<`)\n     */\n    LT: 2, \"2\": \"LT\",\n    /**\n     * Greater than (`>`)\n     */\n    GT: 3, \"3\": \"GT\",\n    /**\n     * Less than or equals (`>=`)\n     */\n    LTE: 4, \"4\": \"LTE\",\n    /**\n     * Greater than or equals (`>=`)\n     */\n    GTE: 5, \"5\": \"GTE\",\n    /**\n     * Number of leading zeroes in lhs (`lzcnt`) (discards rhs)\n     */\n    LZC: 6, \"6\": \"LZC\",\n});\n/**\n * r\" Argument list for GM (get metadata) instruction\n * r\" The VM is the only who should match this struct, and it *MUST* always perform\n * r\" exhaustive match so all offered variants are covered.\n * @enum {1 | 2 | 3 | 4 | 5 | 6 | 7}\n */\nconst GMArgs = Object.freeze({\n    /**\n     * r\" Get if caller is external.\n     */\n    IsCallerExternal: 1, \"1\": \"IsCallerExternal\",\n    /**\n     * r\" Get caller's contract ID.\n     */\n    GetCaller: 2, \"2\": \"GetCaller\",\n    /**\n     * r\" Get index of current predicate.\n     */\n    GetVerifyingPredicate: 3, \"3\": \"GetVerifyingPredicate\",\n    /**\n     * r\" Get the Chain ID this VM is operating within\n     */\n    GetChainId: 4, \"4\": \"GetChainId\",\n    /**\n     * r\" Get memory address where the transaction is located\n     */\n    TxStart: 5, \"5\": \"TxStart\",\n    /**\n     * r\" Get memory address of base asset ID\n     */\n    BaseAssetId: 6, \"6\": \"BaseAssetId\",\n    /**\n     * r\" Get gas price for block\n     */\n    GetGasPrice: 7, \"7\": \"GetGasPrice\",\n});\n/**\n * r\" Argument list for GTF (get tx fields) instruction\n * r\" The VM is the only who should match this struct, and it *MUST* always perform\n * r\" exhaustive match so all offered variants are covered.\n * @enum {1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 521 | 522 | 523 | 524 | 525 | 544 | 545 | 549 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 768 | 769 | 770 | 771 | 772 | 775 | 776 | 1024 | 1025 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1536 | 1537 | 1538 | 1539 | 1540 | 1541 | 1792 | 1793 | 2048 | 2304 | 2305 | 2306 | 2307 | 2308 | 2309}\n */\nconst GTFArgs = Object.freeze({\n    /**\n     * r\" Set `$rA` to `tx.type`\n     */\n    Type: 1, \"1\": \"Type\",\n    /**\n     * r\" Set `$rA` to `tx.scriptGasLimit`\n     */\n    ScriptGasLimit: 2, \"2\": \"ScriptGasLimit\",\n    /**\n     * r\" Set `$rA` to `tx.scriptLength`\n     */\n    ScriptLength: 3, \"3\": \"ScriptLength\",\n    /**\n     * r\" Set `$rA` to `tx.scriptDataLength`\n     */\n    ScriptDataLength: 4, \"4\": \"ScriptDataLength\",\n    /**\n     * r\" Set `$rA` to `tx.inputsCount`\n     */\n    ScriptInputsCount: 5, \"5\": \"ScriptInputsCount\",\n    /**\n     * r\" Set `$rA` to `tx.outputsCount`\n     */\n    ScriptOutputsCount: 6, \"6\": \"ScriptOutputsCount\",\n    /**\n     * r\" Set `$rA` to `tx.witnessesCount`\n     */\n    ScriptWitnessesCount: 7, \"7\": \"ScriptWitnessesCount\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.script`\n     */\n    Script: 9, \"9\": \"Script\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.scriptData`\n     */\n    ScriptData: 10, \"10\": \"ScriptData\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB]`\n     */\n    ScriptInputAtIndex: 11, \"11\": \"ScriptInputAtIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of t.outputs[$rB]`\n     */\n    ScriptOutputAtIndex: 12, \"12\": \"ScriptOutputAtIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.witnesses[$rB]`\n     */\n    ScriptWitnessAtIndex: 13, \"13\": \"ScriptWitnessAtIndex\",\n    /**\n     * r\" Set `$rA` to size of the transaction in memory, in bytes\n     */\n    TxLength: 14, \"14\": \"TxLength\",\n    /**\n     * r\" Set `$rA` to `tx.bytecodeWitnessIndex`\n     */\n    CreateBytecodeWitnessIndex: 257, \"257\": \"CreateBytecodeWitnessIndex\",\n    /**\n     * r\" Set `$rA` to `tx.storageSlotsCount`\n     */\n    CreateStorageSlotsCount: 258, \"258\": \"CreateStorageSlotsCount\",\n    /**\n     * r\" Set `$rA` to `tx.inputsCount`\n     */\n    CreateInputsCount: 259, \"259\": \"CreateInputsCount\",\n    /**\n     * r\" Set `$rA` to `tx.outputsCount`\n     */\n    CreateOutputsCount: 260, \"260\": \"CreateOutputsCount\",\n    /**\n     * r\" Set `$rA` to `tx.witnessesCount`\n     */\n    CreateWitnessesCount: 261, \"261\": \"CreateWitnessesCount\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.salt`\n     */\n    CreateSalt: 262, \"262\": \"CreateSalt\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.storageSlots[$rB]`\n     */\n    CreateStorageSlotAtIndex: 263, \"263\": \"CreateStorageSlotAtIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB]`\n     */\n    CreateInputAtIndex: 264, \"264\": \"CreateInputAtIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of t.outputs[$rB]`\n     */\n    CreateOutputAtIndex: 265, \"265\": \"CreateOutputAtIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.witnesses[$rB]`\n     */\n    CreateWitnessAtIndex: 266, \"266\": \"CreateWitnessAtIndex\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].type`\n     */\n    InputType: 512, \"512\": \"InputType\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].txID`\n     */\n    InputCoinTxId: 513, \"513\": \"InputCoinTxId\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].outputIndex`\n     */\n    InputCoinOutputIndex: 514, \"514\": \"InputCoinOutputIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].owner`\n     */\n    InputCoinOwner: 515, \"515\": \"InputCoinOwner\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].amount`\n     */\n    InputCoinAmount: 516, \"516\": \"InputCoinAmount\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].asset_id`\n     */\n    InputCoinAssetId: 517, \"517\": \"InputCoinAssetId\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].txPointer`\n     */\n    InputCoinTxPointer: 518, \"518\": \"InputCoinTxPointer\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].witnessIndex`\n     */\n    InputCoinWitnessIndex: 519, \"519\": \"InputCoinWitnessIndex\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].predicateLength`\n     */\n    InputCoinPredicateLength: 521, \"521\": \"InputCoinPredicateLength\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].predicateDataLength`\n     */\n    InputCoinPredicateDataLength: 522, \"522\": \"InputCoinPredicateDataLength\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].predicate`\n     */\n    InputCoinPredicate: 523, \"523\": \"InputCoinPredicate\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].predicateData`\n     */\n    InputCoinPredicateData: 524, \"524\": \"InputCoinPredicateData\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].predicateGasUsed`\n     */\n    InputCoinPredicateGasUsed: 525, \"525\": \"InputCoinPredicateGasUsed\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].txID`\n     */\n    InputContractTxId: 544, \"544\": \"InputContractTxId\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].outputIndex`\n     */\n    InputContractOutputIndex: 545, \"545\": \"InputContractOutputIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].contractID`\n     */\n    InputContractId: 549, \"549\": \"InputContractId\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].sender`\n     */\n    InputMessageSender: 576, \"576\": \"InputMessageSender\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].recipient`\n     */\n    InputMessageRecipient: 577, \"577\": \"InputMessageRecipient\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].amount`\n     */\n    InputMessageAmount: 578, \"578\": \"InputMessageAmount\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].nonce`\n     */\n    InputMessageNonce: 579, \"579\": \"InputMessageNonce\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].witnessIndex`\n     */\n    InputMessageWitnessIndex: 580, \"580\": \"InputMessageWitnessIndex\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].dataLength`\n     */\n    InputMessageDataLength: 581, \"581\": \"InputMessageDataLength\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].predicateLength`\n     */\n    InputMessagePredicateLength: 582, \"582\": \"InputMessagePredicateLength\",\n    /**\n     * r\" Set `$rA` to `tx.inputs[$rB].predicateDataLength`\n     */\n    InputMessagePredicateDataLength: 583, \"583\": \"InputMessagePredicateDataLength\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].data`\n     */\n    InputMessageData: 584, \"584\": \"InputMessageData\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].predicate`\n     */\n    InputMessagePredicate: 585, \"585\": \"InputMessagePredicate\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].predicateData`\n     */\n    InputMessagePredicateData: 586, \"586\": \"InputMessagePredicateData\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB].predicateGasUsed`\n     */\n    InputMessagePredicateGasUsed: 587, \"587\": \"InputMessagePredicateGasUsed\",\n    /**\n     * r\" Set `$rA` to `tx.outputs[$rB].type`\n     */\n    OutputType: 768, \"768\": \"OutputType\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.outputs[$rB].to`\n     */\n    OutputCoinTo: 769, \"769\": \"OutputCoinTo\",\n    /**\n     * r\" Set `$rA` to `tx.outputs[$rB].amount`\n     */\n    OutputCoinAmount: 770, \"770\": \"OutputCoinAmount\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.outputs[$rB].asset_id`\n     */\n    OutputCoinAssetId: 771, \"771\": \"OutputCoinAssetId\",\n    /**\n     * r\" Set `$rA` to `tx.outputs[$rB].inputIndex`\n     */\n    OutputContractInputIndex: 772, \"772\": \"OutputContractInputIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.outputs[$rB].contractID`\n     */\n    OutputContractCreatedContractId: 775, \"775\": \"OutputContractCreatedContractId\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.outputs[$rB].stateRoot`\n     */\n    OutputContractCreatedStateRoot: 776, \"776\": \"OutputContractCreatedStateRoot\",\n    /**\n     * r\" Set `$rA` to `tx.witnesses[$rB].dataLength`\n     */\n    WitnessDataLength: 1024, \"1024\": \"WitnessDataLength\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.witnesses[$rB].data`\n     */\n    WitnessData: 1025, \"1025\": \"WitnessData\",\n    /**\n     * r\" Set `$rA` to `tx.policyTypes`\n     */\n    PolicyTypes: 1280, \"1280\": \"PolicyTypes\",\n    /**\n     * r\" Set `$rA` to `tx.policies[0x00].gasPrice`\n     */\n    PolicyTip: 1281, \"1281\": \"PolicyTip\",\n    /**\n     * r\" Set `$rA` to `tx.policies[count_ones(0b11 & tx.policyTypes) - 1].witnessLimit`\n     */\n    PolicyWitnessLimit: 1282, \"1282\": \"PolicyWitnessLimit\",\n    /**\n     * r\" Set `$rA` to `tx.policies[count_ones(0b111 & tx.policyTypes) - 1].maturity`\n     */\n    PolicyMaturity: 1283, \"1283\": \"PolicyMaturity\",\n    /**\n     * r\" Set `$rA` to `tx.policies[count_ones(0b1111 & tx.policyTypes) - 1].maxFee`\n     */\n    PolicyMaxFee: 1284, \"1284\": \"PolicyMaxFee\",\n    /**\n     * r\" Set `$rA` to `tx.policies[count_ones(0b11111 & tx.policyTypes) - 1].expiration`\n     */\n    PolicyExpiration: 1285, \"1285\": \"PolicyExpiration\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.root`\n     */\n    UploadRoot: 1536, \"1536\": \"UploadRoot\",\n    /**\n     * r\" Set `$rA` to `tx.witnessIndex`\n     */\n    UploadWitnessIndex: 1537, \"1537\": \"UploadWitnessIndex\",\n    /**\n     * r\" Set `$rA` to `tx.subsectionIndex`\n     */\n    UploadSubsectionIndex: 1538, \"1538\": \"UploadSubsectionIndex\",\n    /**\n     * r\" Set `$rA` to `tx.subsectionsNumber`\n     */\n    UploadSubsectionsCount: 1539, \"1539\": \"UploadSubsectionsCount\",\n    /**\n     * r\" Set `$rA` to `tx.proofSetCount`\n     */\n    UploadProofSetCount: 1540, \"1540\": \"UploadProofSetCount\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.proofSet[$rB]`\n     */\n    UploadProofSetAtIndex: 1541, \"1541\": \"UploadProofSetAtIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.id`\n     */\n    BlobId: 1792, \"1792\": \"BlobId\",\n    /**\n     * r\" Set `$rA` to `tx.witnessIndex`\n     */\n    BlobWitnessIndex: 1793, \"1793\": \"BlobWitnessIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.purpose`\n     */\n    UpgradePurpose: 2048, \"2048\": \"UpgradePurpose\",\n    /**\n     * r\" Set `$rA` to `tx.inputsCount`\n     */\n    TxInputsCount: 2304, \"2304\": \"TxInputsCount\",\n    /**\n     * r\" Set `$rA` to `tx.outputsCount`\n     */\n    TxOutputsCount: 2305, \"2305\": \"TxOutputsCount\",\n    /**\n     * r\" Set `$rA` to `tx.witnessesCount`\n     */\n    TxWitnessesCount: 2306, \"2306\": \"TxWitnessesCount\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.inputs[$rB]`\n     */\n    TxInputAtIndex: 2307, \"2307\": \"TxInputAtIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of t.outputs[$rB]`\n     */\n    TxOutputAtIndex: 2308, \"2308\": \"TxOutputAtIndex\",\n    /**\n     * r\" Set `$rA` to `Memory address of tx.witnesses[$rB]`\n     */\n    TxWitnessAtIndex: 2309, \"2309\": \"TxWitnessAtIndex\",\n});\n/**\n * The operation performed by WDOP and WQOP instructions, determined as\n * @enum {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7}\n */\nconst MathOp = Object.freeze({\n    /**\n     * Add\n     */\n    ADD: 0, \"0\": \"ADD\",\n    /**\n     * Subtract\n     */\n    SUB: 1, \"1\": \"SUB\",\n    /**\n     * Invert bits (discards rhs)\n     */\n    NOT: 2, \"2\": \"NOT\",\n    /**\n     * Bitwise or\n     */\n    OR: 3, \"3\": \"OR\",\n    /**\n     * Bitwise exclusive or\n     */\n    XOR: 4, \"4\": \"XOR\",\n    /**\n     * Bitwise and\n     */\n    AND: 5, \"5\": \"AND\",\n    /**\n     * Shift left\n     */\n    SHL: 6, \"6\": \"SHL\",\n    /**\n     * Shift right\n     */\n    SHR: 7, \"7\": \"SHR\",\n});\n/**\n * r\" Panic reason representation for the interpreter.\n * @enum {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64}\n */\nconst PanicReason = Object.freeze({\n    /**\n     * r\" The byte can't be mapped to any known `PanicReason`.\n     */\n    UnknownPanicReason: 0, \"0\": \"UnknownPanicReason\",\n    /**\n     * r\" Found `RVRT` instruction.\n     */\n    Revert: 1, \"1\": \"Revert\",\n    /**\n     * r\" Execution ran out of gas.\n     */\n    OutOfGas: 2, \"2\": \"OutOfGas\",\n    /**\n     * r\" The transaction validity is violated.\n     */\n    TransactionValidity: 3, \"3\": \"TransactionValidity\",\n    /**\n     * r\" Attempt to write outside interpreter memory boundaries.\n     */\n    MemoryOverflow: 4, \"4\": \"MemoryOverflow\",\n    /**\n     * r\" Overflow while executing arithmetic operation.\n     * r\" These errors are ignored using the WRAPPING flag.\n     */\n    ArithmeticOverflow: 5, \"5\": \"ArithmeticOverflow\",\n    /**\n     * r\" Designed contract was not found in the storage.\n     */\n    ContractNotFound: 6, \"6\": \"ContractNotFound\",\n    /**\n     * r\" Memory ownership rules are violated.\n     */\n    MemoryOwnership: 7, \"7\": \"MemoryOwnership\",\n    /**\n     * r\" The asset ID balance isn't enough for the instruction.\n     */\n    NotEnoughBalance: 8, \"8\": \"NotEnoughBalance\",\n    /**\n     * r\" The interpreter is expected to be in internal context.\n     */\n    ExpectedInternalContext: 9, \"9\": \"ExpectedInternalContext\",\n    /**\n     * r\" The queried asset ID was not found in the state.\n     */\n    AssetIdNotFound: 10, \"10\": \"AssetIdNotFound\",\n    /**\n     * r\" The provided input is not found in the transaction.\n     */\n    InputNotFound: 11, \"11\": \"InputNotFound\",\n    /**\n     * r\" The provided output is not found in the transaction.\n     */\n    OutputNotFound: 12, \"12\": \"OutputNotFound\",\n    /**\n     * r\" The provided witness is not found in the transaction.\n     */\n    WitnessNotFound: 13, \"13\": \"WitnessNotFound\",\n    /**\n     * r\" The transaction maturity is not valid for this request.\n     */\n    TransactionMaturity: 14, \"14\": \"TransactionMaturity\",\n    /**\n     * r\" The metadata identifier is invalid.\n     */\n    InvalidMetadataIdentifier: 15, \"15\": \"InvalidMetadataIdentifier\",\n    /**\n     * r\" The call structure is not valid.\n     */\n    MalformedCallStructure: 16, \"16\": \"MalformedCallStructure\",\n    /**\n     * r\" The provided register does not allow write operations.\n     */\n    ReservedRegisterNotWritable: 17, \"17\": \"ReservedRegisterNotWritable\",\n    /**\n     * r\" The execution resulted in an erroneous state of the interpreter.\n     */\n    InvalidFlags: 18, \"18\": \"InvalidFlags\",\n    /**\n     * r\" The provided immediate value is not valid for this instruction.\n     */\n    InvalidImmediateValue: 19, \"19\": \"InvalidImmediateValue\",\n    /**\n     * r\" The provided transaction input is not of type `Coin`.\n     */\n    ExpectedCoinInput: 20, \"20\": \"ExpectedCoinInput\",\n    /**\n     * r\" `ECAL` instruction failed.\n     */\n    EcalError: 21, \"21\": \"EcalError\",\n    /**\n     * r\" Two segments of the interpreter memory should not intersect for write operations.\n     */\n    MemoryWriteOverlap: 22, \"22\": \"MemoryWriteOverlap\",\n    /**\n     * r\" The requested contract is not listed in the transaction inputs.\n     */\n    ContractNotInInputs: 23, \"23\": \"ContractNotInInputs\",\n    /**\n     * r\" The internal asset ID balance overflowed with the provided instruction.\n     */\n    InternalBalanceOverflow: 24, \"24\": \"InternalBalanceOverflow\",\n    /**\n     * r\" The maximum allowed contract size is violated.\n     */\n    ContractMaxSize: 25, \"25\": \"ContractMaxSize\",\n    /**\n     * r\" This instruction expects the stack area to be unallocated for this call.\n     */\n    ExpectedUnallocatedStack: 26, \"26\": \"ExpectedUnallocatedStack\",\n    /**\n     * r\" The maximum allowed number of static contracts was reached for this transaction.\n     */\n    MaxStaticContractsReached: 27, \"27\": \"MaxStaticContractsReached\",\n    /**\n     * r\" The requested transfer amount cannot be zero.\n     */\n    TransferAmountCannotBeZero: 28, \"28\": \"TransferAmountCannotBeZero\",\n    /**\n     * r\" The provided transaction output should be of type `Variable`.\n     */\n    ExpectedOutputVariable: 29, \"29\": \"ExpectedOutputVariable\",\n    /**\n     * r\" The expected context of the stack parent is internal.\n     */\n    ExpectedParentInternalContext: 30, \"30\": \"ExpectedParentInternalContext\",\n    /**\n     * r\" The predicate returned non `1`. The `1` means successful verification\n     * r\" of the predicate, all other values means unsuccessful.\n     */\n    PredicateReturnedNonOne: 31, \"31\": \"PredicateReturnedNonOne\",\n    /**\n     * r\" The contract ID is already deployed and can't be overwritten.\n     */\n    ContractIdAlreadyDeployed: 32, \"32\": \"ContractIdAlreadyDeployed\",\n    /**\n     * r\" The loaded contract mismatch expectations.\n     */\n    ContractMismatch: 33, \"33\": \"ContractMismatch\",\n    /**\n     * r\" Attempting to send message data longer than `MAX_MESSAGE_DATA_LENGTH`\n     */\n    MessageDataTooLong: 34, \"34\": \"MessageDataTooLong\",\n    /**\n     * r\" Mathematically invalid arguments where given to an arithmetic instruction.\n     * r\" For instance, division by zero produces this.\n     * r\" These errors are ignored using the UNSAFEMATH flag.\n     */\n    ArithmeticError: 35, \"35\": \"ArithmeticError\",\n    /**\n     * r\" The contract instruction is not allowed in predicates.\n     */\n    ContractInstructionNotAllowed: 36, \"36\": \"ContractInstructionNotAllowed\",\n    /**\n     * r\" Transfer of zero coins is not allowed.\n     */\n    TransferZeroCoins: 37, \"37\": \"TransferZeroCoins\",\n    /**\n     * r\" Attempted to execute an invalid instruction\n     */\n    InvalidInstruction: 38, \"38\": \"InvalidInstruction\",\n    /**\n     * r\" Memory outside $is..$ssp range is not executable\n     */\n    MemoryNotExecutable: 39, \"39\": \"MemoryNotExecutable\",\n    /**\n     * r\" The policy is not set.\n     */\n    PolicyIsNotSet: 40, \"40\": \"PolicyIsNotSet\",\n    /**\n     * r\" The policy is not found across policies.\n     */\n    PolicyNotFound: 41, \"41\": \"PolicyNotFound\",\n    /**\n     * r\" Receipt context is full\n     */\n    TooManyReceipts: 42, \"42\": \"TooManyReceipts\",\n    /**\n     * r\" Balance of a contract overflowed\n     */\n    BalanceOverflow: 43, \"43\": \"BalanceOverflow\",\n    /**\n     * r\" Block height value is invalid, typically because it is too large\n     */\n    InvalidBlockHeight: 44, \"44\": \"InvalidBlockHeight\",\n    /**\n     * r\" Attempt to use sequential memory instructions with too large slot count,\n     * r\" typically because it cannot fit into usize\n     */\n    TooManySlots: 45, \"45\": \"TooManySlots\",\n    /**\n     * r\" Caller of this internal context is also expected to be internal,\n     * r\" i.e. $fp->$fp must be non-zero.\n     */\n    ExpectedNestedCaller: 46, \"46\": \"ExpectedNestedCaller\",\n    /**\n     * r\" During memory growth, the stack overlapped with the heap\n     */\n    MemoryGrowthOverlap: 47, \"47\": \"MemoryGrowthOverlap\",\n    /**\n     * r\" Attempting to read or write uninitialized memory.\n     * r\" Also occurs when boundary crosses from stack to heap.\n     */\n    UninitalizedMemoryAccess: 48, \"48\": \"UninitalizedMemoryAccess\",\n    /**\n     * r\" Overriding consensus parameters is not allowed.\n     */\n    OverridingConsensusParameters: 49, \"49\": \"OverridingConsensusParameters\",\n    /**\n     * r\" The storage doesn't know about the hash of the state transition bytecode.\n     */\n    UnknownStateTransactionBytecodeRoot: 50, \"50\": \"UnknownStateTransactionBytecodeRoot\",\n    /**\n     * r\" Overriding the state transition bytecode is not allowed.\n     */\n    OverridingStateTransactionBytecode: 51, \"51\": \"OverridingStateTransactionBytecode\",\n    /**\n     * r\" The bytecode is already uploaded and cannot be uploaded again.\n     */\n    BytecodeAlreadyUploaded: 52, \"52\": \"BytecodeAlreadyUploaded\",\n    /**\n     * r\" The part of the bytecode is not sequentially connected to the previous parts.\n     */\n    ThePartIsNotSequentiallyConnected: 53, \"53\": \"ThePartIsNotSequentiallyConnected\",\n    /**\n     * r\" The requested blob is not found.\n     */\n    BlobNotFound: 54, \"54\": \"BlobNotFound\",\n    /**\n     * r\" The blob was already\n     */\n    BlobIdAlreadyUploaded: 55, \"55\": \"BlobIdAlreadyUploaded\",\n    /**\n     * r\" Active gas costs do not define the cost for this instruction.\n     */\n    GasCostNotDefined: 56, \"56\": \"GasCostNotDefined\",\n    /**\n     * r\" The curve id is not supported.\n     */\n    UnsupportedCurveId: 57, \"57\": \"UnsupportedCurveId\",\n    /**\n     * r\" The operation type is not supported.\n     */\n    UnsupportedOperationType: 58, \"58\": \"UnsupportedOperationType\",\n    /**\n     * r\" Read alt_bn_128 curve point is invalid.\n     */\n    InvalidEllipticCurvePoint: 59, \"59\": \"InvalidEllipticCurvePoint\",\n    /**\n     * r\" Given input contract does not exist.\n     */\n    InputContractDoesNotExist: 60, \"60\": \"InputContractDoesNotExist\",\n    /**\n     * r\" Storage slot in Create not found\n     */\n    StorageSlotsNotFound: 61, \"61\": \"StorageSlotsNotFound\",\n    /**\n     * r\" Proof in Upload not found\n     */\n    ProofInUploadNotFound: 62, \"62\": \"ProofInUploadNotFound\",\n    /**\n     * r\" Invalid purpose type in Upgrade\n     */\n    InvalidUpgradePurposeType: 63, \"63\": \"InvalidUpgradePurposeType\",\n    /**\n     * r\" Cannot get gas price in predicate\n     */\n    CanNotGetGasPriceInPredicate: 64, \"64\": \"CanNotGetGasPriceInPredicate\",\n});\n\nconst ADDFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_add_free(ptr >>> 0, 1));\n/**\n * Adds two registers.\n */\nclass ADD {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ADDFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_add_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        ADDFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst ADDIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_addi_free(ptr >>> 0, 1));\n/**\n * Adds a register and an immediate value.\n */\nclass ADDI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ADDIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_addi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        ADDIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst ALOCFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_aloc_free(ptr >>> 0, 1));\n/**\n * Allocate a number of bytes from the heap.\n */\nclass ALOC {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ALOCFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_aloc_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} bytes\n     */\n    constructor(bytes) {\n        _assertClass(bytes, RegId);\n        var ptr0 = bytes.__destroy_into_raw();\n        const ret = wasm$1.aloc_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        ALOCFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.aloc_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst ANDFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_and_free(ptr >>> 0, 1));\n/**\n * Bitwise ANDs two registers.\n */\nclass AND {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ANDFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_and_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        ANDFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst ANDIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_andi_free(ptr >>> 0, 1));\n/**\n * Bitwise ANDs a register and an immediate value.\n */\nclass ANDI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ANDIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_andi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        ANDIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst BALFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_bal_free(ptr >>> 0, 1));\n/**\n * Get the balance of contract of an asset ID.\n */\nclass BAL {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        BALFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_bal_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} asset_id_addr\n     * @param {RegId} contract_id_addr\n     */\n    constructor(dst, asset_id_addr, contract_id_addr) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(asset_id_addr, RegId);\n        var ptr1 = asset_id_addr.__destroy_into_raw();\n        _assertClass(contract_id_addr, RegId);\n        var ptr2 = contract_id_addr.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        BALFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst BHEIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_bhei_free(ptr >>> 0, 1));\n/**\n * Get current block height.\n */\nclass BHEI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        BHEIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_bhei_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     */\n    constructor(dst) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        const ret = wasm$1.aloc_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        BHEIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.aloc_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst BHSHFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_bhsh_free(ptr >>> 0, 1));\n/**\n * Get block header hash for height.\n */\nclass BHSH {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        BHSHFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_bhsh_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} heigth\n     */\n    constructor(dst, heigth) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(heigth, RegId);\n        var ptr1 = heigth.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        BHSHFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst BLDDFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_bldd_free(ptr >>> 0, 1));\n/**\n * Load blob as data\n */\nclass BLDD {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        BLDDFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_bldd_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_ptr\n     * @param {RegId} blob_id_ptr\n     * @param {RegId} offset\n     * @param {RegId} len\n     */\n    constructor(dst_ptr, blob_id_ptr, offset, len) {\n        _assertClass(dst_ptr, RegId);\n        var ptr0 = dst_ptr.__destroy_into_raw();\n        _assertClass(blob_id_ptr, RegId);\n        var ptr1 = blob_id_ptr.__destroy_into_raw();\n        _assertClass(offset, RegId);\n        var ptr2 = offset.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr3 = len.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        BLDDFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst BSIZFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_bsiz_free(ptr >>> 0, 1));\n/**\n * Get blob size\n */\nclass BSIZ {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        BSIZFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_bsiz_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} blob_id_ptr\n     */\n    constructor(dst, blob_id_ptr) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(blob_id_ptr, RegId);\n        var ptr1 = blob_id_ptr.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        BSIZFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst BURNFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_burn_free(ptr >>> 0, 1));\n/**\n * Burns `amount` coins of the asset ID created from `sub_id` for the current contract.\n */\nclass BURN {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        BURNFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_burn_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} amount\n     * @param {RegId} sub_id_addr\n     */\n    constructor(amount, sub_id_addr) {\n        _assertClass(amount, RegId);\n        var ptr0 = amount.__destroy_into_raw();\n        _assertClass(sub_id_addr, RegId);\n        var ptr1 = sub_id_addr.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        BURNFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst CALLFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_call_free(ptr >>> 0, 1));\n/**\n * Call a contract.\n */\nclass CALL {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CALLFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_call_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} target_struct\n     * @param {RegId} fwd_coins\n     * @param {RegId} asset_id_addr\n     * @param {RegId} fwd_gas\n     */\n    constructor(target_struct, fwd_coins, asset_id_addr, fwd_gas) {\n        _assertClass(target_struct, RegId);\n        var ptr0 = target_struct.__destroy_into_raw();\n        _assertClass(fwd_coins, RegId);\n        var ptr1 = fwd_coins.__destroy_into_raw();\n        _assertClass(asset_id_addr, RegId);\n        var ptr2 = asset_id_addr.__destroy_into_raw();\n        _assertClass(fwd_gas, RegId);\n        var ptr3 = fwd_gas.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        CALLFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst CBFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_cb_free(ptr >>> 0, 1));\n/**\n * Get current block proposer's address.\n */\nclass CB {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CBFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_cb_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     */\n    constructor(dst) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        const ret = wasm$1.aloc_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        CBFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.aloc_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst CCPFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_ccp_free(ptr >>> 0, 1));\n/**\n * Copy contract code for a contract.\n */\nclass CCP {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CCPFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_ccp_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} contract_id_addr\n     * @param {RegId} offset\n     * @param {RegId} len\n     */\n    constructor(dst_addr, contract_id_addr, offset, len) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(contract_id_addr, RegId);\n        var ptr1 = contract_id_addr.__destroy_into_raw();\n        _assertClass(offset, RegId);\n        var ptr2 = offset.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr3 = len.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        CCPFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst CFEFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_cfe_free(ptr >>> 0, 1));\n/**\n * Extend the current call frame's stack\n */\nclass CFE {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CFEFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_cfe_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} amount\n     */\n    constructor(amount) {\n        _assertClass(amount, RegId);\n        var ptr0 = amount.__destroy_into_raw();\n        const ret = wasm$1.aloc_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        CFEFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.aloc_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst CFEIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_cfei_free(ptr >>> 0, 1));\n/**\n * Extend the current call frame's stack by an immediate value.\n */\nclass CFEI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CFEIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_cfei_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {Imm24} amount\n     */\n    constructor(amount) {\n        _assertClass(amount, Imm24);\n        var ptr0 = amount.__destroy_into_raw();\n        const ret = wasm$1.cfei_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        CFEIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the 24-bit immediate value.\n     * @returns {Imm24}\n     */\n    imm24() {\n        const ret = wasm$1.cfei_imm24(this.__wbg_ptr);\n        return Imm24.__wrap(ret);\n    }\n}\n\nconst CFSFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_cfs_free(ptr >>> 0, 1));\n/**\n * Shrink the current call frame's stack\n */\nclass CFS {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CFSFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_cfs_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} amount\n     */\n    constructor(amount) {\n        _assertClass(amount, RegId);\n        var ptr0 = amount.__destroy_into_raw();\n        const ret = wasm$1.aloc_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        CFSFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.aloc_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst CFSIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_cfsi_free(ptr >>> 0, 1));\n/**\n * Shrink the current call frame's stack by an immediate value.\n */\nclass CFSI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CFSIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_cfsi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {Imm24} amount\n     */\n    constructor(amount) {\n        _assertClass(amount, Imm24);\n        var ptr0 = amount.__destroy_into_raw();\n        const ret = wasm$1.cfei_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        CFSIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the 24-bit immediate value.\n     * @returns {Imm24}\n     */\n    imm24() {\n        const ret = wasm$1.cfei_imm24(this.__wbg_ptr);\n        return Imm24.__wrap(ret);\n    }\n}\n\nconst CROOFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_croo_free(ptr >>> 0, 1));\n/**\n * Get code root of a contract.\n */\nclass CROO {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CROOFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_croo_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} contract_id_addr\n     */\n    constructor(dst_addr, contract_id_addr) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(contract_id_addr, RegId);\n        var ptr1 = contract_id_addr.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        CROOFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst CSIZFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_csiz_free(ptr >>> 0, 1));\n/**\n * Get code size of a contract.\n */\nclass CSIZ {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CSIZFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_csiz_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} contract_id_addr\n     */\n    constructor(dst, contract_id_addr) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(contract_id_addr, RegId);\n        var ptr1 = contract_id_addr.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        CSIZFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst CompareArgsFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_compareargs_free(ptr >>> 0, 1));\n/**\n * Arguments for WDCM and WQCM instructions.\n */\nclass CompareArgs {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(CompareArgs.prototype);\n        obj.__wbg_ptr = ptr;\n        CompareArgsFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        CompareArgsFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_compareargs_free(ptr, 0);\n    }\n    /**\n     * Comparison mode\n     * @returns {CompareMode}\n     */\n    get mode() {\n        const ret = wasm$1.__wbg_get_compareargs_mode(this.__wbg_ptr);\n        return ret;\n    }\n    /**\n     * Comparison mode\n     * @param {CompareMode} arg0\n     */\n    set mode(arg0) {\n        wasm$1.__wbg_set_compareargs_mode(this.__wbg_ptr, arg0);\n    }\n    /**\n     * Load RHS from register if true, otherwise zero-extend register value\n     * @returns {boolean}\n     */\n    get indirect_rhs() {\n        const ret = wasm$1.__wbg_get_compareargs_indirect_rhs(this.__wbg_ptr);\n        return ret !== 0;\n    }\n    /**\n     * Load RHS from register if true, otherwise zero-extend register value\n     * @param {boolean} arg0\n     */\n    set indirect_rhs(arg0) {\n        wasm$1.__wbg_set_compareargs_indirect_rhs(this.__wbg_ptr, arg0);\n    }\n    /**\n     * Convert to immediate value.\n     * @returns {Imm06}\n     */\n    to_imm() {\n        const ptr = this.__destroy_into_raw();\n        const ret = wasm$1.compareargs_to_imm(ptr);\n        return Imm06.__wrap(ret);\n    }\n    /**\n     * Construct from `Imm06`. Returns `None` if the value has reserved flags set.\n     * @param {Imm06} bits\n     * @returns {CompareArgs | undefined}\n     */\n    static from_imm(bits) {\n        _assertClass(bits, Imm06);\n        var ptr0 = bits.__destroy_into_raw();\n        const ret = wasm$1.compareargs_from_imm(ptr0);\n        return ret === 0 ? undefined : CompareArgs.__wrap(ret);\n    }\n}\n\nconst DIVFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_div_free(ptr >>> 0, 1));\n/**\n * Divides two registers.\n */\nclass DIV {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        DIVFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_div_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        DIVFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst DIVIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_divi_free(ptr >>> 0, 1));\n/**\n * Divides a register and an immediate value.\n */\nclass DIVI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        DIVIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_divi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        DIVIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst DivArgsFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_divargs_free(ptr >>> 0, 1));\n/**\n * Additional arguments for WMDV and WDDV instructions.\n */\nclass DivArgs {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        DivArgsFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_divargs_free(ptr, 0);\n    }\n    /**\n     * Load RHS from register if true, otherwise zero-extend register value\n     * @returns {boolean}\n     */\n    get indirect_rhs() {\n        const ret = wasm$1.__wbg_get_divargs_indirect_rhs(this.__wbg_ptr);\n        return ret !== 0;\n    }\n    /**\n     * Load RHS from register if true, otherwise zero-extend register value\n     * @param {boolean} arg0\n     */\n    set indirect_rhs(arg0) {\n        wasm$1.__wbg_set_divargs_indirect_rhs(this.__wbg_ptr, arg0);\n    }\n}\n\nconst ECALFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_ecal_free(ptr >>> 0, 1));\n/**\n * Call external function\n */\nclass ECAL {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ECALFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_ecal_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} a\n     * @param {RegId} b\n     * @param {RegId} c\n     * @param {RegId} d\n     */\n    constructor(a, b, c, d) {\n        _assertClass(a, RegId);\n        var ptr0 = a.__destroy_into_raw();\n        _assertClass(b, RegId);\n        var ptr1 = b.__destroy_into_raw();\n        _assertClass(c, RegId);\n        var ptr2 = c.__destroy_into_raw();\n        _assertClass(d, RegId);\n        var ptr3 = d.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        ECALFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst ECK1Finalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_eck1_free(ptr >>> 0, 1));\n/**\n * The 64-byte public key (x, y) recovered from 64-byte signature on 32-byte message hash.\n */\nclass ECK1 {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ECK1Finalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_eck1_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} sig_addr\n     * @param {RegId} msg_hash_addr\n     */\n    constructor(dst_addr, sig_addr, msg_hash_addr) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(sig_addr, RegId);\n        var ptr1 = sig_addr.__destroy_into_raw();\n        _assertClass(msg_hash_addr, RegId);\n        var ptr2 = msg_hash_addr.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        ECK1Finalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst ECOPFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_ecop_free(ptr >>> 0, 1));\n/**\n * Given some curve, performs an operation on points\n */\nclass ECOP {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ECOPFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_ecop_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} curve_id\n     * @param {RegId} operation_type\n     * @param {RegId} points_ptr\n     */\n    constructor(dst, curve_id, operation_type, points_ptr) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(curve_id, RegId);\n        var ptr1 = curve_id.__destroy_into_raw();\n        _assertClass(operation_type, RegId);\n        var ptr2 = operation_type.__destroy_into_raw();\n        _assertClass(points_ptr, RegId);\n        var ptr3 = points_ptr.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        ECOPFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst ECR1Finalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_ecr1_free(ptr >>> 0, 1));\n/**\n * The 64-byte Secp256r1 public key (x, y) recovered from 64-byte signature on 32-byte message hash.\n */\nclass ECR1 {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ECR1Finalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_ecr1_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} sig_addr\n     * @param {RegId} msg_hash_addr\n     */\n    constructor(dst_addr, sig_addr, msg_hash_addr) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(sig_addr, RegId);\n        var ptr1 = sig_addr.__destroy_into_raw();\n        _assertClass(msg_hash_addr, RegId);\n        var ptr2 = msg_hash_addr.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        ECR1Finalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst ED19Finalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_ed19_free(ptr >>> 0, 1));\n/**\n * Verify ED25519 public key and signature match a message.\n */\nclass ED19 {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ED19Finalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_ed19_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} pub_key_addr\n     * @param {RegId} sig_addr\n     * @param {RegId} msg_addr\n     * @param {RegId} msg_len\n     */\n    constructor(pub_key_addr, sig_addr, msg_addr, msg_len) {\n        _assertClass(pub_key_addr, RegId);\n        var ptr0 = pub_key_addr.__destroy_into_raw();\n        _assertClass(sig_addr, RegId);\n        var ptr1 = sig_addr.__destroy_into_raw();\n        _assertClass(msg_addr, RegId);\n        var ptr2 = msg_addr.__destroy_into_raw();\n        _assertClass(msg_len, RegId);\n        var ptr3 = msg_len.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        ED19Finalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst EPARFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_epar_free(ptr >>> 0, 1));\n/**\n * Given some curve, performs a pairing on groups of points\n */\nclass EPAR {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        EPARFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_epar_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} success\n     * @param {RegId} curve_id\n     * @param {RegId} number_elements\n     * @param {RegId} points_ptr\n     */\n    constructor(success, curve_id, number_elements, points_ptr) {\n        _assertClass(success, RegId);\n        var ptr0 = success.__destroy_into_raw();\n        _assertClass(curve_id, RegId);\n        var ptr1 = curve_id.__destroy_into_raw();\n        _assertClass(number_elements, RegId);\n        var ptr2 = number_elements.__destroy_into_raw();\n        _assertClass(points_ptr, RegId);\n        var ptr3 = points_ptr.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        EPARFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst EQFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_eq_free(ptr >>> 0, 1));\n/**\n * Compares two registers for equality.\n */\nclass EQ {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        EQFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_eq_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        EQFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst EXPFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_exp_free(ptr >>> 0, 1));\n/**\n * Raises one register to the power of another.\n */\nclass EXP {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        EXPFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_exp_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        EXPFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst EXPIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_expi_free(ptr >>> 0, 1));\n/**\n * Raises one register to the power of an immediate value.\n */\nclass EXPI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        EXPIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_expi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        EXPIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst FLAGFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_flag_free(ptr >>> 0, 1));\n/**\n * Set flag register to a register.\n */\nclass FLAG {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        FLAGFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_flag_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} value\n     */\n    constructor(value) {\n        _assertClass(value, RegId);\n        var ptr0 = value.__destroy_into_raw();\n        const ret = wasm$1.aloc_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        FLAGFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.aloc_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst GMFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_gm_free(ptr >>> 0, 1));\n/**\n * Get metadata from memory.\n */\nclass GM {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(GM.prototype);\n        obj.__wbg_ptr = ptr;\n        GMFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        GMFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_gm_free(ptr, 0);\n    }\n    /**\n     * Construct a `GM` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {GMArgs} args\n     * @returns {GM}\n     */\n    static from_args(ra, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        const ret = wasm$1.gm_from_args(ptr0, args);\n        return GM.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {Imm18} selector\n     */\n    constructor(dst, selector) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(selector, Imm18);\n        var ptr1 = selector.__destroy_into_raw();\n        const ret = wasm$1.gm_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        GMFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 18-bit immediate value.\n     * @returns {Imm18}\n     */\n    imm18() {\n        const ret = wasm$1.gm_imm18(this.__wbg_ptr);\n        return Imm18.__wrap(ret);\n    }\n}\n\nconst GTFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_gt_free(ptr >>> 0, 1));\n/**\n * Compares two registers for greater-than.\n */\nclass GT {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        GTFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_gt_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        GTFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst GTFFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_gtf_free(ptr >>> 0, 1));\n/**\n * Get transaction fields.\n */\nclass GTF {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(GTF.prototype);\n        obj.__wbg_ptr = ptr;\n        GTFFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        GTFFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_gtf_free(ptr, 0);\n    }\n    /**\n     * Construct a `GTF` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {RegId} rb\n     * @param {GTFArgs} args\n     * @returns {GTF}\n     */\n    static from_args(ra, rb, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        _assertClass(rb, RegId);\n        var ptr1 = rb.__destroy_into_raw();\n        const ret = wasm$1.gtf_from_args(ptr0, ptr1, args);\n        return GTF.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} arg\n     * @param {Imm12} selector\n     */\n    constructor(dst, arg, selector) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(arg, RegId);\n        var ptr1 = arg.__destroy_into_raw();\n        _assertClass(selector, Imm12);\n        var ptr2 = selector.__destroy_into_raw();\n        const ret = wasm$1.gtf_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        GTFFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst Imm06Finalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_imm06_free(ptr >>> 0, 1));\n/**\n * Represents a 6-bit immediate value, guaranteed to be masked by construction.\n */\nclass Imm06 {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(Imm06.prototype);\n        obj.__wbg_ptr = ptr;\n        Imm06Finalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        Imm06Finalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_imm06_free(ptr, 0);\n    }\n}\n\nconst Imm12Finalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_imm12_free(ptr >>> 0, 1));\n/**\n * Represents a 12-bit immediate value, guaranteed to be masked by construction.\n */\nclass Imm12 {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(Imm12.prototype);\n        obj.__wbg_ptr = ptr;\n        Imm12Finalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        Imm12Finalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_imm12_free(ptr, 0);\n    }\n}\n\nconst Imm18Finalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_imm18_free(ptr >>> 0, 1));\n/**\n * Represents a 18-bit immediate value, guaranteed to be masked by construction.\n */\nclass Imm18 {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(Imm18.prototype);\n        obj.__wbg_ptr = ptr;\n        Imm18Finalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        Imm18Finalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_imm18_free(ptr, 0);\n    }\n}\n\nconst Imm24Finalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_imm24_free(ptr >>> 0, 1));\n/**\n * Represents a 24-bit immediate value, guaranteed to be masked by construction.\n */\nclass Imm24 {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(Imm24.prototype);\n        obj.__wbg_ptr = ptr;\n        Imm24Finalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        Imm24Finalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_imm24_free(ptr, 0);\n    }\n}\n\nconst InstructionFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_instruction_free(ptr >>> 0, 1));\n/**\n * Representation of a single instruction for the interpreter.\n *\n * The opcode is represented in the tag (variant), or may be retrieved in the\n * form of an `Opcode` byte using the `opcode` method.\n *\n * The register and immediate data associated with the instruction is represented\n * within an inner unit type wrapper around the 3 remaining bytes.\n */\nclass Instruction {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(Instruction.prototype);\n        obj.__wbg_ptr = ptr;\n        InstructionFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        InstructionFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_instruction_free(ptr, 0);\n    }\n    /**\n     * Convenience method for converting to bytes\n     * @returns {Uint8Array}\n     */\n    to_bytes() {\n        try {\n            const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16);\n            wasm$1.instruction_to_bytes(retptr, this.__wbg_ptr);\n            var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n            var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n            var v1 = getArrayU8FromWasm0(r0, r1).slice();\n            wasm$1.__wbindgen_export_0(r0, r1 * 1, 1);\n            return v1;\n        } finally {\n            wasm$1.__wbindgen_add_to_stack_pointer(16);\n        }\n    }\n    /**\n     * Size of an instruction in bytes\n     * @returns {number}\n     */\n    static size() {\n        const ret = wasm$1.instruction_size();\n        return ret >>> 0;\n    }\n}\n\nconst JIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_ji_free(ptr >>> 0, 1));\n/**\n * Jump.\n */\nclass JI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_ji_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {Imm24} abs_target\n     */\n    constructor(abs_target) {\n        _assertClass(abs_target, Imm24);\n        var ptr0 = abs_target.__destroy_into_raw();\n        const ret = wasm$1.cfei_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        JIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the 24-bit immediate value.\n     * @returns {Imm24}\n     */\n    imm24() {\n        const ret = wasm$1.cfei_imm24(this.__wbg_ptr);\n        return Imm24.__wrap(ret);\n    }\n}\n\nconst JMPFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jmp_free(ptr >>> 0, 1));\n/**\n * Dynamic jump.\n */\nclass JMP {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JMPFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jmp_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} abs_target\n     */\n    constructor(abs_target) {\n        _assertClass(abs_target, RegId);\n        var ptr0 = abs_target.__destroy_into_raw();\n        const ret = wasm$1.aloc_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        JMPFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.aloc_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst JMPBFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jmpb_free(ptr >>> 0, 1));\n/**\n * Unconditional dynamic relative jump backwards, with a constant offset.\n */\nclass JMPB {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JMPBFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jmpb_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dynamic\n     * @param {Imm18} fixed\n     */\n    constructor(dynamic, fixed) {\n        _assertClass(dynamic, RegId);\n        var ptr0 = dynamic.__destroy_into_raw();\n        _assertClass(fixed, Imm18);\n        var ptr1 = fixed.__destroy_into_raw();\n        const ret = wasm$1.jmpb_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        JMPBFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 18-bit immediate value.\n     * @returns {Imm18}\n     */\n    imm18() {\n        const ret = wasm$1.gm_imm18(this.__wbg_ptr);\n        return Imm18.__wrap(ret);\n    }\n}\n\nconst JMPFFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jmpf_free(ptr >>> 0, 1));\n/**\n * Unconditional dynamic relative jump forwards, with a constant offset.\n */\nclass JMPF {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JMPFFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jmpf_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dynamic\n     * @param {Imm18} fixed\n     */\n    constructor(dynamic, fixed) {\n        _assertClass(dynamic, RegId);\n        var ptr0 = dynamic.__destroy_into_raw();\n        _assertClass(fixed, Imm18);\n        var ptr1 = fixed.__destroy_into_raw();\n        const ret = wasm$1.jmpb_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        JMPFFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 18-bit immediate value.\n     * @returns {Imm18}\n     */\n    imm18() {\n        const ret = wasm$1.gm_imm18(this.__wbg_ptr);\n        return Imm18.__wrap(ret);\n    }\n}\n\nconst JNEFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jne_free(ptr >>> 0, 1));\n/**\n * Conditional dynamic jump.\n */\nclass JNE {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JNEFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jne_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} abs_target\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(abs_target, lhs, rhs) {\n        _assertClass(abs_target, RegId);\n        var ptr0 = abs_target.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        JNEFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst JNEBFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jneb_free(ptr >>> 0, 1));\n/**\n * Dynamic relative jump backwards, conditional on comparsion, with a constant offset.\n */\nclass JNEB {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JNEBFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jneb_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} cond_lhs\n     * @param {RegId} cond_rhs\n     * @param {RegId} dynamic\n     * @param {Imm06} fixed\n     */\n    constructor(cond_lhs, cond_rhs, dynamic, fixed) {\n        _assertClass(cond_lhs, RegId);\n        var ptr0 = cond_lhs.__destroy_into_raw();\n        _assertClass(cond_rhs, RegId);\n        var ptr1 = cond_rhs.__destroy_into_raw();\n        _assertClass(dynamic, RegId);\n        var ptr2 = dynamic.__destroy_into_raw();\n        _assertClass(fixed, Imm06);\n        var ptr3 = fixed.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        JNEBFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst JNEFFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jnef_free(ptr >>> 0, 1));\n/**\n * Dynamic relative jump forwards, conditional on comparsion, with a constant offset.\n */\nclass JNEF {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JNEFFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jnef_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} cond_lhs\n     * @param {RegId} cond_rhs\n     * @param {RegId} dynamic\n     * @param {Imm06} fixed\n     */\n    constructor(cond_lhs, cond_rhs, dynamic, fixed) {\n        _assertClass(cond_lhs, RegId);\n        var ptr0 = cond_lhs.__destroy_into_raw();\n        _assertClass(cond_rhs, RegId);\n        var ptr1 = cond_rhs.__destroy_into_raw();\n        _assertClass(dynamic, RegId);\n        var ptr2 = dynamic.__destroy_into_raw();\n        _assertClass(fixed, Imm06);\n        var ptr3 = fixed.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        JNEFFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst JNEIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jnei_free(ptr >>> 0, 1));\n/**\n * Conditional jump.\n */\nclass JNEI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JNEIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jnei_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} cond_lhs\n     * @param {RegId} cond_rhs\n     * @param {Imm12} abs_target\n     */\n    constructor(cond_lhs, cond_rhs, abs_target) {\n        _assertClass(cond_lhs, RegId);\n        var ptr0 = cond_lhs.__destroy_into_raw();\n        _assertClass(cond_rhs, RegId);\n        var ptr1 = cond_rhs.__destroy_into_raw();\n        _assertClass(abs_target, Imm12);\n        var ptr2 = abs_target.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        JNEIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst JNZBFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jnzb_free(ptr >>> 0, 1));\n/**\n * Dynamic relative jump backwards, conditional against zero, with a constant offset.\n */\nclass JNZB {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JNZBFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jnzb_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} cond_nz\n     * @param {RegId} dynamic\n     * @param {Imm12} fixed\n     */\n    constructor(cond_nz, dynamic, fixed) {\n        _assertClass(cond_nz, RegId);\n        var ptr0 = cond_nz.__destroy_into_raw();\n        _assertClass(dynamic, RegId);\n        var ptr1 = dynamic.__destroy_into_raw();\n        _assertClass(fixed, Imm12);\n        var ptr2 = fixed.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        JNZBFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst JNZFFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jnzf_free(ptr >>> 0, 1));\n/**\n * Dynamic relative jump forwards, conditional against zero, with a constant offset.\n */\nclass JNZF {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JNZFFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jnzf_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} cond_nz\n     * @param {RegId} dynamic\n     * @param {Imm12} fixed\n     */\n    constructor(cond_nz, dynamic, fixed) {\n        _assertClass(cond_nz, RegId);\n        var ptr0 = cond_nz.__destroy_into_raw();\n        _assertClass(dynamic, RegId);\n        var ptr1 = dynamic.__destroy_into_raw();\n        _assertClass(fixed, Imm12);\n        var ptr2 = fixed.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        JNZFFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst JNZIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_jnzi_free(ptr >>> 0, 1));\n/**\n * Conditional jump against zero.\n */\nclass JNZI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        JNZIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_jnzi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} cond_nz\n     * @param {Imm18} abs_target\n     */\n    constructor(cond_nz, abs_target) {\n        _assertClass(cond_nz, RegId);\n        var ptr0 = cond_nz.__destroy_into_raw();\n        _assertClass(abs_target, Imm18);\n        var ptr1 = abs_target.__destroy_into_raw();\n        const ret = wasm$1.jmpb_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        JNZIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 18-bit immediate value.\n     * @returns {Imm18}\n     */\n    imm18() {\n        const ret = wasm$1.gm_imm18(this.__wbg_ptr);\n        return Imm18.__wrap(ret);\n    }\n}\n\nconst K256Finalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_k256_free(ptr >>> 0, 1));\n/**\n * The keccak-256 hash of a slice.\n */\nclass K256 {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        K256Finalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_k256_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} src_addr\n     * @param {RegId} len\n     */\n    constructor(dst_addr, src_addr, len) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(src_addr, RegId);\n        var ptr1 = src_addr.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr2 = len.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        K256Finalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst LBFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_lb_free(ptr >>> 0, 1));\n/**\n * A byte is loaded from the specified address offset by an immediate value.\n */\nclass LB {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        LBFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_lb_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} addr\n     * @param {Imm12} offset\n     */\n    constructor(dst, addr, offset) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(addr, RegId);\n        var ptr1 = addr.__destroy_into_raw();\n        _assertClass(offset, Imm12);\n        var ptr2 = offset.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        LBFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst LDCFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_ldc_free(ptr >>> 0, 1));\n/**\n * Load code as executable either from contract, blob, or memory.\n */\nclass LDC {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        LDCFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_ldc_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} src_addr\n     * @param {RegId} offset\n     * @param {RegId} len\n     * @param {Imm06} mode\n     */\n    constructor(src_addr, offset, len, mode) {\n        _assertClass(src_addr, RegId);\n        var ptr0 = src_addr.__destroy_into_raw();\n        _assertClass(offset, RegId);\n        var ptr1 = offset.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr2 = len.__destroy_into_raw();\n        _assertClass(mode, Imm06);\n        var ptr3 = mode.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        LDCFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst LOGFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_log_free(ptr >>> 0, 1));\n/**\n * Log an event.\n */\nclass LOG {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        LOGFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_log_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} a\n     * @param {RegId} b\n     * @param {RegId} c\n     * @param {RegId} d\n     */\n    constructor(a, b, c, d) {\n        _assertClass(a, RegId);\n        var ptr0 = a.__destroy_into_raw();\n        _assertClass(b, RegId);\n        var ptr1 = b.__destroy_into_raw();\n        _assertClass(c, RegId);\n        var ptr2 = c.__destroy_into_raw();\n        _assertClass(d, RegId);\n        var ptr3 = d.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        LOGFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst LOGDFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_logd_free(ptr >>> 0, 1));\n/**\n * Log data.\n */\nclass LOGD {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        LOGDFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_logd_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} a\n     * @param {RegId} b\n     * @param {RegId} addr\n     * @param {RegId} len\n     */\n    constructor(a, b, addr, len) {\n        _assertClass(a, RegId);\n        var ptr0 = a.__destroy_into_raw();\n        _assertClass(b, RegId);\n        var ptr1 = b.__destroy_into_raw();\n        _assertClass(addr, RegId);\n        var ptr2 = addr.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr3 = len.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        LOGDFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst LTFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_lt_free(ptr >>> 0, 1));\n/**\n * Compares two registers for less-than.\n */\nclass LT {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        LTFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_lt_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        LTFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst LWFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_lw_free(ptr >>> 0, 1));\n/**\n * A word is loaded from the specified address offset by an immediate value.\n */\nclass LW {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        LWFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_lw_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} addr\n     * @param {Imm12} offset\n     */\n    constructor(dst, addr, offset) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(addr, RegId);\n        var ptr1 = addr.__destroy_into_raw();\n        _assertClass(offset, Imm12);\n        var ptr2 = offset.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        LWFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst MCLFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mcl_free(ptr >>> 0, 1));\n/**\n * Clear a variable number of bytes in memory.\n */\nclass MCL {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MCLFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mcl_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} len\n     */\n    constructor(dst_addr, len) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr1 = len.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        MCLFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MCLIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mcli_free(ptr >>> 0, 1));\n/**\n * Clear an immediate number of bytes in memory.\n */\nclass MCLI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MCLIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mcli_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} addr\n     * @param {Imm18} count\n     */\n    constructor(addr, count) {\n        _assertClass(addr, RegId);\n        var ptr0 = addr.__destroy_into_raw();\n        _assertClass(count, Imm18);\n        var ptr1 = count.__destroy_into_raw();\n        const ret = wasm$1.jmpb_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        MCLIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 18-bit immediate value.\n     * @returns {Imm18}\n     */\n    imm18() {\n        const ret = wasm$1.gm_imm18(this.__wbg_ptr);\n        return Imm18.__wrap(ret);\n    }\n}\n\nconst MCPFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mcp_free(ptr >>> 0, 1));\n/**\n * Copy a variable number of bytes in memory.\n */\nclass MCP {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MCPFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mcp_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} src_addr\n     * @param {RegId} len\n     */\n    constructor(dst_addr, src_addr, len) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(src_addr, RegId);\n        var ptr1 = src_addr.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr2 = len.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        MCPFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MCPIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mcpi_free(ptr >>> 0, 1));\n/**\n * Copy an immediate number of bytes in memory.\n */\nclass MCPI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MCPIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mcpi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} src_addr\n     * @param {Imm12} len\n     */\n    constructor(dst_addr, src_addr, len) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(src_addr, RegId);\n        var ptr1 = src_addr.__destroy_into_raw();\n        _assertClass(len, Imm12);\n        var ptr2 = len.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        MCPIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst MEQFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_meq_free(ptr >>> 0, 1));\n/**\n * Compare bytes in memory.\n */\nclass MEQ {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MEQFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_meq_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} result\n     * @param {RegId} lhs_addr\n     * @param {RegId} rhs_addr\n     * @param {RegId} len\n     */\n    constructor(result, lhs_addr, rhs_addr, len) {\n        _assertClass(result, RegId);\n        var ptr0 = result.__destroy_into_raw();\n        _assertClass(lhs_addr, RegId);\n        var ptr1 = lhs_addr.__destroy_into_raw();\n        _assertClass(rhs_addr, RegId);\n        var ptr2 = rhs_addr.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr3 = len.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        MEQFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MINTFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mint_free(ptr >>> 0, 1));\n/**\n * Mints `amount` coins of the asset ID created from `sub_id` for the current contract.\n */\nclass MINT {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MINTFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mint_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} amount\n     * @param {RegId} sub_id_addr\n     */\n    constructor(amount, sub_id_addr) {\n        _assertClass(amount, RegId);\n        var ptr0 = amount.__destroy_into_raw();\n        _assertClass(sub_id_addr, RegId);\n        var ptr1 = sub_id_addr.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        MINTFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MLDVFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mldv_free(ptr >>> 0, 1));\n/**\n * Fused multiply-divide with arbitrary precision intermediate step.\n */\nclass MLDV {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MLDVFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mldv_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} mul_lhs\n     * @param {RegId} mul_rhs\n     * @param {RegId} divisor\n     */\n    constructor(dst, mul_lhs, mul_rhs, divisor) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(mul_lhs, RegId);\n        var ptr1 = mul_lhs.__destroy_into_raw();\n        _assertClass(mul_rhs, RegId);\n        var ptr2 = mul_rhs.__destroy_into_raw();\n        _assertClass(divisor, RegId);\n        var ptr3 = divisor.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        MLDVFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MLOGFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mlog_free(ptr >>> 0, 1));\n/**\n * The integer logarithm of a register.\n */\nclass MLOG {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MLOGFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mlog_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        MLOGFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MODFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mod_free(ptr >>> 0, 1));\n/**\n * Modulo remainder of two registers.\n */\nclass MOD {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MODFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mod_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        MODFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MODIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_modi_free(ptr >>> 0, 1));\n/**\n * Modulo remainder of a register and an immediate value.\n */\nclass MODI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MODIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_modi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        MODIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst MOVEFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_move_free(ptr >>> 0, 1));\n/**\n * Copy from one register to another.\n */\nclass MOVE {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MOVEFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_move_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} src\n     */\n    constructor(dst, src) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(src, RegId);\n        var ptr1 = src.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        MOVEFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MOVIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_movi_free(ptr >>> 0, 1));\n/**\n * Copy immediate value into a register\n */\nclass MOVI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MOVIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_movi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {Imm18} val\n     */\n    constructor(dst, val) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(val, Imm18);\n        var ptr1 = val.__destroy_into_raw();\n        const ret = wasm$1.jmpb_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        MOVIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 18-bit immediate value.\n     * @returns {Imm18}\n     */\n    imm18() {\n        const ret = wasm$1.gm_imm18(this.__wbg_ptr);\n        return Imm18.__wrap(ret);\n    }\n}\n\nconst MROOFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mroo_free(ptr >>> 0, 1));\n/**\n * The integer root of a register.\n */\nclass MROO {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MROOFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mroo_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        MROOFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MULFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mul_free(ptr >>> 0, 1));\n/**\n * Multiplies two registers.\n */\nclass MUL {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MULFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mul_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        MULFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst MULIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_muli_free(ptr >>> 0, 1));\n/**\n * Multiplies a register and an immediate value.\n */\nclass MULI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MULIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_muli_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        MULIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst MathArgsFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mathargs_free(ptr >>> 0, 1));\n/**\n * Additional arguments for WDOP and WQOP instructions.\n */\nclass MathArgs {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MathArgsFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mathargs_free(ptr, 0);\n    }\n    /**\n     * The operation to perform\n     * @returns {MathOp}\n     */\n    get op() {\n        const ret = wasm$1.__wbg_get_mathargs_op(this.__wbg_ptr);\n        return ret;\n    }\n    /**\n     * The operation to perform\n     * @param {MathOp} arg0\n     */\n    set op(arg0) {\n        wasm$1.__wbg_set_mathargs_op(this.__wbg_ptr, arg0);\n    }\n    /**\n     * Load RHS from register if true, otherwise zero-extend register value\n     * @returns {boolean}\n     */\n    get indirect_rhs() {\n        const ret = wasm$1.__wbg_get_compareargs_indirect_rhs(this.__wbg_ptr);\n        return ret !== 0;\n    }\n    /**\n     * Load RHS from register if true, otherwise zero-extend register value\n     * @param {boolean} arg0\n     */\n    set indirect_rhs(arg0) {\n        wasm$1.__wbg_set_compareargs_indirect_rhs(this.__wbg_ptr, arg0);\n    }\n}\n\nconst MulArgsFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_mulargs_free(ptr >>> 0, 1));\n/**\n * Additional arguments for WDML and WQML instructions.\n */\nclass MulArgs {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        MulArgsFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_mulargs_free(ptr, 0);\n    }\n    /**\n     * Load LHSS from register if true, otherwise zero-extend register value\n     * @returns {boolean}\n     */\n    get indirect_lhs() {\n        const ret = wasm$1.__wbg_get_compareargs_indirect_rhs(this.__wbg_ptr);\n        return ret !== 0;\n    }\n    /**\n     * Load LHSS from register if true, otherwise zero-extend register value\n     * @param {boolean} arg0\n     */\n    set indirect_lhs(arg0) {\n        wasm$1.__wbg_set_compareargs_indirect_rhs(this.__wbg_ptr, arg0);\n    }\n    /**\n     * Load RHS from register if true, otherwise zero-extend register value\n     * @returns {boolean}\n     */\n    get indirect_rhs() {\n        const ret = wasm$1.__wbg_get_mulargs_indirect_rhs(this.__wbg_ptr);\n        return ret !== 0;\n    }\n    /**\n     * Load RHS from register if true, otherwise zero-extend register value\n     * @param {boolean} arg0\n     */\n    set indirect_rhs(arg0) {\n        wasm$1.__wbg_set_mulargs_indirect_rhs(this.__wbg_ptr, arg0);\n    }\n}\n\nconst NOOPFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_noop_free(ptr >>> 0, 1));\n/**\n * Performs no operation.\n */\nclass NOOP {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        NOOPFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_noop_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction.\n     */\n    constructor() {\n        const ret = wasm$1.noop_new_typescript();\n        this.__wbg_ptr = ret >>> 0;\n        NOOPFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n}\n\nconst NOTFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_not_free(ptr >>> 0, 1));\n/**\n * Bitwise NOT a register.\n */\nclass NOT {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        NOTFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_not_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} arg\n     */\n    constructor(dst, arg) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(arg, RegId);\n        var ptr1 = arg.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        NOTFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst ORFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_or_free(ptr >>> 0, 1));\n/**\n * Bitwise ORs two registers.\n */\nclass OR {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ORFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_or_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        ORFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst ORIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_ori_free(ptr >>> 0, 1));\n/**\n * Bitwise ORs a register and an immediate value.\n */\nclass ORI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        ORIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_ori_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        ORIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst POPHFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_poph_free(ptr >>> 0, 1));\n/**\n * Pop a bitmask-selected set of registers in range 40..64 to the stack.\n */\nclass POPH {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        POPHFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_poph_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {Imm24} bitmask\n     */\n    constructor(bitmask) {\n        _assertClass(bitmask, Imm24);\n        var ptr0 = bitmask.__destroy_into_raw();\n        const ret = wasm$1.cfei_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        POPHFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the 24-bit immediate value.\n     * @returns {Imm24}\n     */\n    imm24() {\n        const ret = wasm$1.cfei_imm24(this.__wbg_ptr);\n        return Imm24.__wrap(ret);\n    }\n}\n\nconst POPLFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_popl_free(ptr >>> 0, 1));\n/**\n * Pop a bitmask-selected set of registers in range 16..40 to the stack.\n */\nclass POPL {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        POPLFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_popl_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {Imm24} bitmask\n     */\n    constructor(bitmask) {\n        _assertClass(bitmask, Imm24);\n        var ptr0 = bitmask.__destroy_into_raw();\n        const ret = wasm$1.cfei_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        POPLFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the 24-bit immediate value.\n     * @returns {Imm24}\n     */\n    imm24() {\n        const ret = wasm$1.cfei_imm24(this.__wbg_ptr);\n        return Imm24.__wrap(ret);\n    }\n}\n\nconst PSHHFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_pshh_free(ptr >>> 0, 1));\n/**\n * Push a bitmask-selected set of registers in range 40..64 to the stack.\n */\nclass PSHH {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        PSHHFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_pshh_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {Imm24} bitmask\n     */\n    constructor(bitmask) {\n        _assertClass(bitmask, Imm24);\n        var ptr0 = bitmask.__destroy_into_raw();\n        const ret = wasm$1.cfei_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        PSHHFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the 24-bit immediate value.\n     * @returns {Imm24}\n     */\n    imm24() {\n        const ret = wasm$1.cfei_imm24(this.__wbg_ptr);\n        return Imm24.__wrap(ret);\n    }\n}\n\nconst PSHLFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_pshl_free(ptr >>> 0, 1));\n/**\n * Push a bitmask-selected set of registers in range 16..40 to the stack.\n */\nclass PSHL {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        PSHLFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_pshl_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {Imm24} bitmask\n     */\n    constructor(bitmask) {\n        _assertClass(bitmask, Imm24);\n        var ptr0 = bitmask.__destroy_into_raw();\n        const ret = wasm$1.cfei_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        PSHLFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the 24-bit immediate value.\n     * @returns {Imm24}\n     */\n    imm24() {\n        const ret = wasm$1.cfei_imm24(this.__wbg_ptr);\n        return Imm24.__wrap(ret);\n    }\n}\n\nconst PanicInstructionFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_panicinstruction_free(ptr >>> 0, 1));\n/**\n * Describe a panic reason with the instruction that generated it\n */\nclass PanicInstruction {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        PanicInstructionFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_panicinstruction_free(ptr, 0);\n    }\n    /**\n     * Represents an error described by a reason and an instruction.\n     * @param {PanicReason} reason\n     * @param {number} instruction\n     */\n    constructor(reason, instruction) {\n        const ret = wasm$1.panicinstruction_error_typescript(reason, instruction);\n        this.__wbg_ptr = ret >>> 0;\n        PanicInstructionFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Underlying panic reason\n     * @returns {PanicReason}\n     */\n    reason() {\n        const ret = wasm$1.panicinstruction_reason(this.__wbg_ptr);\n        return ret;\n    }\n    /**\n     * Underlying instruction\n     * @returns {number}\n     */\n    instruction() {\n        const ret = wasm$1.panicinstruction_instruction(this.__wbg_ptr);\n        return ret >>> 0;\n    }\n}\n\nconst RETFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_ret_free(ptr >>> 0, 1));\n/**\n * Return from context.\n */\nclass RET {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        RETFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_ret_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} value\n     */\n    constructor(value) {\n        _assertClass(value, RegId);\n        var ptr0 = value.__destroy_into_raw();\n        const ret = wasm$1.aloc_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        RETFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.aloc_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst RETDFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_retd_free(ptr >>> 0, 1));\n/**\n * Return from context with data.\n */\nclass RETD {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        RETDFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_retd_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} addr\n     * @param {RegId} len\n     */\n    constructor(addr, len) {\n        _assertClass(addr, RegId);\n        var ptr0 = addr.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr1 = len.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        RETDFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst RVRTFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_rvrt_free(ptr >>> 0, 1));\n/**\n * Halt execution, reverting state changes and returning a value.\n */\nclass RVRT {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        RVRTFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_rvrt_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} value\n     */\n    constructor(value) {\n        _assertClass(value, RegId);\n        var ptr0 = value.__destroy_into_raw();\n        const ret = wasm$1.aloc_new_typescript(ptr0);\n        this.__wbg_ptr = ret >>> 0;\n        RVRTFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.aloc_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst RegIdFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_regid_free(ptr >>> 0, 1));\n/**\n * Represents a 6-bit register ID, guaranteed to be masked by construction.\n */\nclass RegId {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(RegId.prototype);\n        obj.__wbg_ptr = ptr;\n        RegIdFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        RegIdFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_regid_free(ptr, 0);\n    }\n    /**\n     * Construct a register ID from the given value.\n     *\n     * Returns `None` if the value is outside the 6-bit value range.\n     * @param {number} u\n     * @returns {RegId | undefined}\n     */\n    static new_checked(u) {\n        const ret = wasm$1.regid_new_checked(u);\n        return ret === 0 ? undefined : RegId.__wrap(ret);\n    }\n    /**\n     * Received balance for this context.\n     * @returns {RegId}\n     */\n    static bal() {\n        const ret = wasm$1.regid_bal();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Remaining gas in the context.\n     * @returns {RegId}\n     */\n    static cgas() {\n        const ret = wasm$1.regid_cgas();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Error codes for particular operations.\n     * @returns {RegId}\n     */\n    static err() {\n        const ret = wasm$1.regid_err();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Flags register.\n     * @returns {RegId}\n     */\n    static flag() {\n        const ret = wasm$1.regid_flag();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Frame pointer. Memory address of beginning of current call frame.\n     * @returns {RegId}\n     */\n    static fp() {\n        const ret = wasm$1.regid_fp();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Remaining gas globally.\n     * @returns {RegId}\n     */\n    static ggas() {\n        const ret = wasm$1.regid_ggas();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Heap pointer. Memory address below the current bottom of the heap (points to free\n     * memory).\n     * @returns {RegId}\n     */\n    static hp() {\n        const ret = wasm$1.regid_hp();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Instructions start. Pointer to the start of the currently-executing code.\n     * @returns {RegId}\n     */\n    static is() {\n        const ret = wasm$1.regid_is();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Contains overflow/underflow of addition, subtraction, and multiplication.\n     * @returns {RegId}\n     */\n    static of() {\n        const ret = wasm$1.regid_of();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Contains one (1), for convenience.\n     * @returns {RegId}\n     */\n    static one() {\n        const ret = wasm$1.regid_one();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * The program counter. Memory address of the current instruction.\n     * @returns {RegId}\n     */\n    static pc() {\n        const ret = wasm$1.regid_pc();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Return value or pointer.\n     * @returns {RegId}\n     */\n    static ret() {\n        const ret = wasm$1.regid_ret();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Return value length in bytes.\n     * @returns {RegId}\n     */\n    static retl() {\n        const ret = wasm$1.regid_retl();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Stack pointer. Memory address on top of current writable stack area (points to\n     * free memory).\n     * @returns {RegId}\n     */\n    static sp() {\n        const ret = wasm$1.regid_sp();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Stack start pointer. Memory address of bottom of current writable stack area.\n     * @returns {RegId}\n     */\n    static spp() {\n        const ret = wasm$1.regid_spp();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Smallest writable register.\n     * @returns {RegId}\n     */\n    static writable() {\n        const ret = wasm$1.regid_writable();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Contains zero (0), for convenience.\n     * @returns {RegId}\n     */\n    static zero() {\n        const ret = wasm$1.regid_zero();\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Construct a register ID from the given value.\n     *\n     * The given value will be masked to 6 bits.\n     * @param {number} u\n     */\n    constructor(u) {\n        const ret = wasm$1.regid_new_typescript(u);\n        this.__wbg_ptr = ret >>> 0;\n        RegIdFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * A const alternative to the `Into<u8>` implementation.\n     * @returns {number}\n     */\n    to_u8() {\n        const ptr = this.__destroy_into_raw();\n        const ret = wasm$1.regid_to_u8(ptr);\n        return ret;\n    }\n}\n\nconst S256Finalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_s256_free(ptr >>> 0, 1));\n/**\n * The SHA-2-256 hash of a slice.\n */\nclass S256 {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        S256Finalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_s256_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} src_addr\n     * @param {RegId} len\n     */\n    constructor(dst_addr, src_addr, len) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(src_addr, RegId);\n        var ptr1 = src_addr.__destroy_into_raw();\n        _assertClass(len, RegId);\n        var ptr2 = len.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        S256Finalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst SBFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_sb_free(ptr >>> 0, 1));\n/**\n * Write the least significant byte of a register to memory.\n */\nclass SB {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SBFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_sb_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} addr\n     * @param {RegId} value\n     * @param {Imm12} offset\n     */\n    constructor(addr, value, offset) {\n        _assertClass(addr, RegId);\n        var ptr0 = addr.__destroy_into_raw();\n        _assertClass(value, RegId);\n        var ptr1 = value.__destroy_into_raw();\n        _assertClass(offset, Imm12);\n        var ptr2 = offset.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SBFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst SCWQFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_scwq_free(ptr >>> 0, 1));\n/**\n * Clear a series of slots from contract storage.\n */\nclass SCWQ {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SCWQFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_scwq_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} key_addr\n     * @param {RegId} status\n     * @param {RegId} lenq\n     */\n    constructor(key_addr, status, lenq) {\n        _assertClass(key_addr, RegId);\n        var ptr0 = key_addr.__destroy_into_raw();\n        _assertClass(status, RegId);\n        var ptr1 = status.__destroy_into_raw();\n        _assertClass(lenq, RegId);\n        var ptr2 = lenq.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SCWQFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst SLLFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_sll_free(ptr >>> 0, 1));\n/**\n * Left shifts a register by a register.\n */\nclass SLL {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SLLFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_sll_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SLLFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst SLLIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_slli_free(ptr >>> 0, 1));\n/**\n * Left shifts a register by an immediate value.\n */\nclass SLLI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SLLIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_slli_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SLLIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst SMOFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_smo_free(ptr >>> 0, 1));\n/**\n * Send a message to recipient address with call abi, coins, and output.\n */\nclass SMO {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SMOFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_smo_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} recipient_addr\n     * @param {RegId} data_addr\n     * @param {RegId} data_len\n     * @param {RegId} coins\n     */\n    constructor(recipient_addr, data_addr, data_len, coins) {\n        _assertClass(recipient_addr, RegId);\n        var ptr0 = recipient_addr.__destroy_into_raw();\n        _assertClass(data_addr, RegId);\n        var ptr1 = data_addr.__destroy_into_raw();\n        _assertClass(data_len, RegId);\n        var ptr2 = data_len.__destroy_into_raw();\n        _assertClass(coins, RegId);\n        var ptr3 = coins.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        SMOFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst SRLFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_srl_free(ptr >>> 0, 1));\n/**\n * Right shifts a register by a register.\n */\nclass SRL {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SRLFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_srl_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SRLFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst SRLIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_srli_free(ptr >>> 0, 1));\n/**\n * Right shifts a register by an immediate value.\n */\nclass SRLI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SRLIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_srli_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SRLIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst SRWFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_srw_free(ptr >>> 0, 1));\n/**\n * Load a word from contract storage.\n */\nclass SRW {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SRWFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_srw_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} status\n     * @param {RegId} key_addr\n     */\n    constructor(dst, status, key_addr) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(status, RegId);\n        var ptr1 = status.__destroy_into_raw();\n        _assertClass(key_addr, RegId);\n        var ptr2 = key_addr.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SRWFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst SRWQFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_srwq_free(ptr >>> 0, 1));\n/**\n * Load a series of 32 byte slots from contract storage.\n */\nclass SRWQ {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SRWQFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_srwq_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst_addr\n     * @param {RegId} status\n     * @param {RegId} key_addr\n     * @param {RegId} lenq\n     */\n    constructor(dst_addr, status, key_addr, lenq) {\n        _assertClass(dst_addr, RegId);\n        var ptr0 = dst_addr.__destroy_into_raw();\n        _assertClass(status, RegId);\n        var ptr1 = status.__destroy_into_raw();\n        _assertClass(key_addr, RegId);\n        var ptr2 = key_addr.__destroy_into_raw();\n        _assertClass(lenq, RegId);\n        var ptr3 = lenq.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        SRWQFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst SUBFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_sub_free(ptr >>> 0, 1));\n/**\n * Subtracts two registers.\n */\nclass SUB {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SUBFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_sub_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SUBFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst SUBIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_subi_free(ptr >>> 0, 1));\n/**\n * Subtracts a register and an immediate value.\n */\nclass SUBI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SUBIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_subi_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SUBIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst SWFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_sw_free(ptr >>> 0, 1));\n/**\n * Write a register to memory.\n */\nclass SW {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SWFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_sw_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} addr\n     * @param {RegId} value\n     * @param {Imm12} offset\n     */\n    constructor(addr, value, offset) {\n        _assertClass(addr, RegId);\n        var ptr0 = addr.__destroy_into_raw();\n        _assertClass(value, RegId);\n        var ptr1 = value.__destroy_into_raw();\n        _assertClass(offset, Imm12);\n        var ptr2 = offset.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SWFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nconst SWWFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_sww_free(ptr >>> 0, 1));\n/**\n * Store a word in contract storage.\n */\nclass SWW {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SWWFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_sww_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} key_addr\n     * @param {RegId} status\n     * @param {RegId} value\n     */\n    constructor(key_addr, status, value) {\n        _assertClass(key_addr, RegId);\n        var ptr0 = key_addr.__destroy_into_raw();\n        _assertClass(status, RegId);\n        var ptr1 = status.__destroy_into_raw();\n        _assertClass(value, RegId);\n        var ptr2 = value.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        SWWFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst SWWQFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_swwq_free(ptr >>> 0, 1));\n/**\n * Store a series of 32 byte slots in contract storage.\n */\nclass SWWQ {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        SWWQFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_swwq_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} key_addr\n     * @param {RegId} status\n     * @param {RegId} src_addr\n     * @param {RegId} lenq\n     */\n    constructor(key_addr, status, src_addr, lenq) {\n        _assertClass(key_addr, RegId);\n        var ptr0 = key_addr.__destroy_into_raw();\n        _assertClass(status, RegId);\n        var ptr1 = status.__destroy_into_raw();\n        _assertClass(src_addr, RegId);\n        var ptr2 = src_addr.__destroy_into_raw();\n        _assertClass(lenq, RegId);\n        var ptr3 = lenq.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        SWWQFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst TIMEFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_time_free(ptr >>> 0, 1));\n/**\n * Get timestamp of block at given height.\n */\nclass TIME {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        TIMEFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_time_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} heigth\n     */\n    constructor(dst, heigth) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(heigth, RegId);\n        var ptr1 = heigth.__destroy_into_raw();\n        const ret = wasm$1.bhsh_new_typescript(ptr0, ptr1);\n        this.__wbg_ptr = ret >>> 0;\n        TIMEFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst TRFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_tr_free(ptr >>> 0, 1));\n/**\n * Transfer coins to a contract unconditionally.\n */\nclass TR {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        TRFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_tr_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} contract_id_addr\n     * @param {RegId} amount\n     * @param {RegId} asset_id_addr\n     */\n    constructor(contract_id_addr, amount, asset_id_addr) {\n        _assertClass(contract_id_addr, RegId);\n        var ptr0 = contract_id_addr.__destroy_into_raw();\n        _assertClass(amount, RegId);\n        var ptr1 = amount.__destroy_into_raw();\n        _assertClass(asset_id_addr, RegId);\n        var ptr2 = asset_id_addr.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        TRFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst TROFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_tro_free(ptr >>> 0, 1));\n/**\n * Transfer coins to a variable output.\n */\nclass TRO {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        TROFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_tro_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} contract_id_addr\n     * @param {RegId} output_index\n     * @param {RegId} amount\n     * @param {RegId} asset_id_addr\n     */\n    constructor(contract_id_addr, output_index, amount, asset_id_addr) {\n        _assertClass(contract_id_addr, RegId);\n        var ptr0 = contract_id_addr.__destroy_into_raw();\n        _assertClass(output_index, RegId);\n        var ptr1 = output_index.__destroy_into_raw();\n        _assertClass(amount, RegId);\n        var ptr2 = amount.__destroy_into_raw();\n        _assertClass(asset_id_addr, RegId);\n        var ptr3 = asset_id_addr.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        TROFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst WDAMFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wdam_free(ptr >>> 0, 1));\n/**\n * AddMod 128bit\n */\nclass WDAM {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WDAMFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wdam_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} add_lhs\n     * @param {RegId} add_rhs\n     * @param {RegId} modulo\n     */\n    constructor(dst, add_lhs, add_rhs, modulo) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(add_lhs, RegId);\n        var ptr1 = add_lhs.__destroy_into_raw();\n        _assertClass(add_rhs, RegId);\n        var ptr2 = add_rhs.__destroy_into_raw();\n        _assertClass(modulo, RegId);\n        var ptr3 = modulo.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WDAMFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst WDCMFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wdcm_free(ptr >>> 0, 1));\n/**\n * Compare 128bit integers\n */\nclass WDCM {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(WDCM.prototype);\n        obj.__wbg_ptr = ptr;\n        WDCMFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WDCMFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wdcm_free(ptr, 0);\n    }\n    /**\n     * Construct a `WDCM` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {RegId} rb\n     * @param {RegId} rc\n     * @param {CompareArgs} args\n     * @returns {WDCM}\n     */\n    static from_args(ra, rb, rc, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        _assertClass(rb, RegId);\n        var ptr1 = rb.__destroy_into_raw();\n        _assertClass(rc, RegId);\n        var ptr2 = rc.__destroy_into_raw();\n        _assertClass(args, CompareArgs);\n        var ptr3 = args.__destroy_into_raw();\n        const ret = wasm$1.wdcm_from_args(ptr0, ptr1, ptr2, ptr3);\n        return WDCM.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     * @param {Imm06} flags\n     */\n    constructor(dst, lhs, rhs, flags) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        _assertClass(flags, Imm06);\n        var ptr3 = flags.__destroy_into_raw();\n        const ret = wasm$1.wdcm_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WDCMFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst WDDVFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wddv_free(ptr >>> 0, 1));\n/**\n * Divide 128bit\n */\nclass WDDV {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(WDDV.prototype);\n        obj.__wbg_ptr = ptr;\n        WDDVFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WDDVFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wddv_free(ptr, 0);\n    }\n    /**\n     * Construct a `WDDV` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {RegId} rb\n     * @param {RegId} rc\n     * @param {DivArgs} args\n     * @returns {WDDV}\n     */\n    static from_args(ra, rb, rc, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        _assertClass(rb, RegId);\n        var ptr1 = rb.__destroy_into_raw();\n        _assertClass(rc, RegId);\n        var ptr2 = rc.__destroy_into_raw();\n        _assertClass(args, DivArgs);\n        var ptr3 = args.__destroy_into_raw();\n        const ret = wasm$1.wddv_from_args(ptr0, ptr1, ptr2, ptr3);\n        return WDDV.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     * @param {Imm06} flags\n     */\n    constructor(dst, lhs, rhs, flags) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        _assertClass(flags, Imm06);\n        var ptr3 = flags.__destroy_into_raw();\n        const ret = wasm$1.wdcm_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WDDVFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst WDMDFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wdmd_free(ptr >>> 0, 1));\n/**\n * Fused multiply-divide 128bit\n */\nclass WDMD {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WDMDFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wdmd_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} mul_lhs\n     * @param {RegId} mul_rhs\n     * @param {RegId} divisor\n     */\n    constructor(dst, mul_lhs, mul_rhs, divisor) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(mul_lhs, RegId);\n        var ptr1 = mul_lhs.__destroy_into_raw();\n        _assertClass(mul_rhs, RegId);\n        var ptr2 = mul_rhs.__destroy_into_raw();\n        _assertClass(divisor, RegId);\n        var ptr3 = divisor.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WDMDFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst WDMLFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wdml_free(ptr >>> 0, 1));\n/**\n * Multiply 128bit\n */\nclass WDML {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(WDML.prototype);\n        obj.__wbg_ptr = ptr;\n        WDMLFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WDMLFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wdml_free(ptr, 0);\n    }\n    /**\n     * Construct a `WDML` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {RegId} rb\n     * @param {RegId} rc\n     * @param {MulArgs} args\n     * @returns {WDML}\n     */\n    static from_args(ra, rb, rc, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        _assertClass(rb, RegId);\n        var ptr1 = rb.__destroy_into_raw();\n        _assertClass(rc, RegId);\n        var ptr2 = rc.__destroy_into_raw();\n        _assertClass(args, MulArgs);\n        var ptr3 = args.__destroy_into_raw();\n        const ret = wasm$1.wdml_from_args(ptr0, ptr1, ptr2, ptr3);\n        return WDML.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     * @param {Imm06} flags\n     */\n    constructor(dst, lhs, rhs, flags) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        _assertClass(flags, Imm06);\n        var ptr3 = flags.__destroy_into_raw();\n        const ret = wasm$1.wdcm_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WDMLFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst WDMMFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wdmm_free(ptr >>> 0, 1));\n/**\n * MulMod 128bit\n */\nclass WDMM {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WDMMFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wdmm_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} mul_lhs\n     * @param {RegId} mul_rhs\n     * @param {RegId} modulo\n     */\n    constructor(dst, mul_lhs, mul_rhs, modulo) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(mul_lhs, RegId);\n        var ptr1 = mul_lhs.__destroy_into_raw();\n        _assertClass(mul_rhs, RegId);\n        var ptr2 = mul_rhs.__destroy_into_raw();\n        _assertClass(modulo, RegId);\n        var ptr3 = modulo.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WDMMFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst WDOPFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wdop_free(ptr >>> 0, 1));\n/**\n * Simple 128bit operations\n */\nclass WDOP {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(WDOP.prototype);\n        obj.__wbg_ptr = ptr;\n        WDOPFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WDOPFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wdop_free(ptr, 0);\n    }\n    /**\n     * Construct a `WDOP` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {RegId} rb\n     * @param {RegId} rc\n     * @param {MathArgs} args\n     * @returns {WDOP}\n     */\n    static from_args(ra, rb, rc, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        _assertClass(rb, RegId);\n        var ptr1 = rb.__destroy_into_raw();\n        _assertClass(rc, RegId);\n        var ptr2 = rc.__destroy_into_raw();\n        _assertClass(args, MathArgs);\n        var ptr3 = args.__destroy_into_raw();\n        const ret = wasm$1.wdop_from_args(ptr0, ptr1, ptr2, ptr3);\n        return WDOP.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     * @param {Imm06} flags\n     */\n    constructor(dst, lhs, rhs, flags) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        _assertClass(flags, Imm06);\n        var ptr3 = flags.__destroy_into_raw();\n        const ret = wasm$1.wdcm_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WDOPFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst WQAMFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wqam_free(ptr >>> 0, 1));\n/**\n * AddMod 256bit\n */\nclass WQAM {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WQAMFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wqam_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} add_lhs\n     * @param {RegId} add_rhs\n     * @param {RegId} modulo\n     */\n    constructor(dst, add_lhs, add_rhs, modulo) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(add_lhs, RegId);\n        var ptr1 = add_lhs.__destroy_into_raw();\n        _assertClass(add_rhs, RegId);\n        var ptr2 = add_rhs.__destroy_into_raw();\n        _assertClass(modulo, RegId);\n        var ptr3 = modulo.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WQAMFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst WQCMFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wqcm_free(ptr >>> 0, 1));\n/**\n * Compare 256bit integers\n */\nclass WQCM {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(WQCM.prototype);\n        obj.__wbg_ptr = ptr;\n        WQCMFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WQCMFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wqcm_free(ptr, 0);\n    }\n    /**\n     * Construct a `WQCM` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {RegId} rb\n     * @param {RegId} rc\n     * @param {CompareArgs} args\n     * @returns {WQCM}\n     */\n    static from_args(ra, rb, rc, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        _assertClass(rb, RegId);\n        var ptr1 = rb.__destroy_into_raw();\n        _assertClass(rc, RegId);\n        var ptr2 = rc.__destroy_into_raw();\n        _assertClass(args, CompareArgs);\n        var ptr3 = args.__destroy_into_raw();\n        const ret = wasm$1.wdcm_from_args(ptr0, ptr1, ptr2, ptr3);\n        return WQCM.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     * @param {Imm06} flags\n     */\n    constructor(dst, lhs, rhs, flags) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        _assertClass(flags, Imm06);\n        var ptr3 = flags.__destroy_into_raw();\n        const ret = wasm$1.wdcm_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WQCMFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst WQDVFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wqdv_free(ptr >>> 0, 1));\n/**\n * Divide 256bit\n */\nclass WQDV {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(WQDV.prototype);\n        obj.__wbg_ptr = ptr;\n        WQDVFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WQDVFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wqdv_free(ptr, 0);\n    }\n    /**\n     * Construct a `WQDV` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {RegId} rb\n     * @param {RegId} rc\n     * @param {DivArgs} args\n     * @returns {WQDV}\n     */\n    static from_args(ra, rb, rc, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        _assertClass(rb, RegId);\n        var ptr1 = rb.__destroy_into_raw();\n        _assertClass(rc, RegId);\n        var ptr2 = rc.__destroy_into_raw();\n        _assertClass(args, DivArgs);\n        var ptr3 = args.__destroy_into_raw();\n        const ret = wasm$1.wddv_from_args(ptr0, ptr1, ptr2, ptr3);\n        return WQDV.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     * @param {Imm06} flags\n     */\n    constructor(dst, lhs, rhs, flags) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        _assertClass(flags, Imm06);\n        var ptr3 = flags.__destroy_into_raw();\n        const ret = wasm$1.wdcm_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WQDVFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst WQMDFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wqmd_free(ptr >>> 0, 1));\n/**\n * Fused multiply-divide 256bit\n */\nclass WQMD {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WQMDFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wqmd_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} mul_lhs\n     * @param {RegId} mul_rhs\n     * @param {RegId} divisor\n     */\n    constructor(dst, mul_lhs, mul_rhs, divisor) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(mul_lhs, RegId);\n        var ptr1 = mul_lhs.__destroy_into_raw();\n        _assertClass(mul_rhs, RegId);\n        var ptr2 = mul_rhs.__destroy_into_raw();\n        _assertClass(divisor, RegId);\n        var ptr3 = divisor.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WQMDFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst WQMLFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wqml_free(ptr >>> 0, 1));\n/**\n * Multiply 256bit\n */\nclass WQML {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(WQML.prototype);\n        obj.__wbg_ptr = ptr;\n        WQMLFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WQMLFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wqml_free(ptr, 0);\n    }\n    /**\n     * Construct a `WQML` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {RegId} rb\n     * @param {RegId} rc\n     * @param {MulArgs} args\n     * @returns {WQML}\n     */\n    static from_args(ra, rb, rc, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        _assertClass(rb, RegId);\n        var ptr1 = rb.__destroy_into_raw();\n        _assertClass(rc, RegId);\n        var ptr2 = rc.__destroy_into_raw();\n        _assertClass(args, MulArgs);\n        var ptr3 = args.__destroy_into_raw();\n        const ret = wasm$1.wdml_from_args(ptr0, ptr1, ptr2, ptr3);\n        return WQML.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     * @param {Imm06} flags\n     */\n    constructor(dst, lhs, rhs, flags) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        _assertClass(flags, Imm06);\n        var ptr3 = flags.__destroy_into_raw();\n        const ret = wasm$1.wdcm_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WQMLFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst WQMMFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wqmm_free(ptr >>> 0, 1));\n/**\n * MulMod 256bit\n */\nclass WQMM {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WQMMFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wqmm_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} mul_lhs\n     * @param {RegId} mul_rhs\n     * @param {RegId} modulo\n     */\n    constructor(dst, mul_lhs, mul_rhs, modulo) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(mul_lhs, RegId);\n        var ptr1 = mul_lhs.__destroy_into_raw();\n        _assertClass(mul_rhs, RegId);\n        var ptr2 = mul_rhs.__destroy_into_raw();\n        _assertClass(modulo, RegId);\n        var ptr3 = modulo.__destroy_into_raw();\n        const ret = wasm$1.bldd_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WQMMFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register D.\n     * @returns {RegId}\n     */\n    rd() {\n        const ret = wasm$1.bldd_rd(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst WQOPFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_wqop_free(ptr >>> 0, 1));\n/**\n * Simple 256bit operations\n */\nclass WQOP {\n\n    static __wrap(ptr) {\n        ptr = ptr >>> 0;\n        const obj = Object.create(WQOP.prototype);\n        obj.__wbg_ptr = ptr;\n        WQOPFinalization.register(obj, obj.__wbg_ptr, obj);\n        return obj;\n    }\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        WQOPFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_wqop_free(ptr, 0);\n    }\n    /**\n     * Construct a `WQOP` instruction from its arguments.\n     * @param {RegId} ra\n     * @param {RegId} rb\n     * @param {RegId} rc\n     * @param {MathArgs} args\n     * @returns {WQOP}\n     */\n    static from_args(ra, rb, rc, args) {\n        _assertClass(ra, RegId);\n        var ptr0 = ra.__destroy_into_raw();\n        _assertClass(rb, RegId);\n        var ptr1 = rb.__destroy_into_raw();\n        _assertClass(rc, RegId);\n        var ptr2 = rc.__destroy_into_raw();\n        _assertClass(args, MathArgs);\n        var ptr3 = args.__destroy_into_raw();\n        const ret = wasm$1.wdop_from_args(ptr0, ptr1, ptr2, ptr3);\n        return WQOP.__wrap(ret);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     * @param {Imm06} flags\n     */\n    constructor(dst, lhs, rhs, flags) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        _assertClass(flags, Imm06);\n        var ptr3 = flags.__destroy_into_raw();\n        const ret = wasm$1.wdcm_new_typescript(ptr0, ptr1, ptr2, ptr3);\n        this.__wbg_ptr = ret >>> 0;\n        WQOPFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 6-bit immediate value.\n     * @returns {Imm06}\n     */\n    imm06() {\n        const ret = wasm$1.jneb_imm06(this.__wbg_ptr);\n        return Imm06.__wrap(ret);\n    }\n}\n\nconst XORFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_xor_free(ptr >>> 0, 1));\n/**\n * Bitwise XORs two registers.\n */\nclass XOR {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        XORFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_xor_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {RegId} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, RegId);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.add_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        XORFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register C.\n     * @returns {RegId}\n     */\n    rc() {\n        const ret = wasm$1.add_rc(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n}\n\nconst XORIFinalization = (typeof FinalizationRegistry === 'undefined')\n    ? { register: () => {}, unregister: () => {} }\n    : new FinalizationRegistry(ptr => wasm$1.__wbg_xori_free(ptr >>> 0, 1));\n/**\n * Bitwise XORs a register and an immediate value.\n */\nclass XORI {\n\n    __destroy_into_raw() {\n        const ptr = this.__wbg_ptr;\n        this.__wbg_ptr = 0;\n        XORIFinalization.unregister(this);\n        return ptr;\n    }\n\n    free() {\n        const ptr = this.__destroy_into_raw();\n        wasm$1.__wbg_xori_free(ptr, 0);\n    }\n    /**\n     * Construct the instruction from its parts.\n     * @param {RegId} dst\n     * @param {RegId} lhs\n     * @param {Imm12} rhs\n     */\n    constructor(dst, lhs, rhs) {\n        _assertClass(dst, RegId);\n        var ptr0 = dst.__destroy_into_raw();\n        _assertClass(lhs, RegId);\n        var ptr1 = lhs.__destroy_into_raw();\n        _assertClass(rhs, Imm12);\n        var ptr2 = rhs.__destroy_into_raw();\n        const ret = wasm$1.addi_new_typescript(ptr0, ptr1, ptr2);\n        this.__wbg_ptr = ret >>> 0;\n        XORIFinalization.register(this, this.__wbg_ptr, this);\n        return this;\n    }\n    /**\n     * Access the ID for register A.\n     * @returns {RegId}\n     */\n    ra() {\n        const ret = wasm$1.add_ra(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the ID for register B.\n     * @returns {RegId}\n     */\n    rb() {\n        const ret = wasm$1.add_rb(this.__wbg_ptr);\n        return RegId.__wrap(ret);\n    }\n    /**\n     * Access the 12-bit immediate value.\n     * @returns {Imm12}\n     */\n    imm12() {\n        const ret = wasm$1.addi_imm12(this.__wbg_ptr);\n        return Imm12.__wrap(ret);\n    }\n}\n\nasync function __wbg_load(module, imports) {\n    if (typeof Response === 'function' && module instanceof Response) {\n        if (typeof WebAssembly.instantiateStreaming === 'function') {\n            try {\n                return await WebAssembly.instantiateStreaming(module, imports);\n\n            } catch (e) {\n                if (module.headers.get('Content-Type') != 'application/wasm') {\n                    console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n                } else {\n                    throw e;\n                }\n            }\n        }\n\n        const bytes = await module.arrayBuffer();\n        return await WebAssembly.instantiate(bytes, imports);\n\n    } else {\n        const instance = await WebAssembly.instantiate(module, imports);\n\n        if (instance instanceof WebAssembly.Instance) {\n            return { instance, module };\n\n        } else {\n            return instance;\n        }\n    }\n}\n\nfunction __wbg_get_imports() {\n    const imports = {};\n    imports.wbg = {};\n    imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n        throw new Error(getStringFromWasm0(arg0, arg1));\n    };\n\n    return imports;\n}\n\nfunction __wbg_finalize_init(instance, module) {\n    wasm$1 = instance.exports;\n    __wbg_init.__wbindgen_wasm_module = module;\n    cachedDataViewMemory0 = null;\n    cachedUint8ArrayMemory0 = null;\n\n\n\n    return wasm$1;\n}\n\nfunction initSync(module) {\n    if (wasm$1 !== undefined) return wasm$1;\n\n\n    if (typeof module !== 'undefined') {\n        if (Object.getPrototypeOf(module) === Object.prototype) {\n            ({module} = module);\n        } else {\n            console.warn('using deprecated parameters for `initSync()`; pass a single object instead');\n        }\n    }\n\n    const imports = __wbg_get_imports();\n\n    if (!(module instanceof WebAssembly.Module)) {\n        module = new WebAssembly.Module(module);\n    }\n\n    const instance = new WebAssembly.Instance(module, imports);\n\n    return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n    if (wasm$1 !== undefined) return wasm$1;\n\n\n    if (typeof module_or_path !== 'undefined') {\n        if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n            ({module_or_path} = module_or_path);\n        } else {\n            console.warn('using deprecated parameters for the initialization function; pass a single object instead');\n        }\n    }\n    const imports = __wbg_get_imports();\n\n    const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n    return __wbg_finalize_init(instance, module);\n}\n\nfunction _loadWasmModule (sync, filepath, src, imports) {\n  function _instantiateOrCompile(source, imports, stream) {\n    var instantiateFunc = stream ? WebAssembly.instantiateStreaming : WebAssembly.instantiate;\n    var compileFunc = stream ? WebAssembly.compileStreaming : WebAssembly.compile;\n\n    if (imports) {\n      return instantiateFunc(source, imports)\n    } else {\n      return compileFunc(source)\n    }\n  }\n\n  \nvar buf = null;\nvar isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\nif (isNode) {\n  \nbuf = Buffer.from(src, 'base64');\n\n} else {\n  \nvar raw = globalThis.atob(src);\nvar rawLength = raw.length;\nbuf = new Uint8Array(new ArrayBuffer(rawLength));\nfor(var i = 0; i < rawLength; i++) {\n   buf[i] = raw.charCodeAt(i);\n}\n\n}\n\n\n  if(sync) {\n    var mod = new WebAssembly.Module(buf);\n    return imports ? new WebAssembly.Instance(mod, imports) : mod\n  } else {\n    return _instantiateOrCompile(buf, imports, false)\n  }\n}\n\nfunction wasm(imports){return _loadWasmModule(1, null, 'AGFzbQEAAAABRwxgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38Bf2ACf38AYAABf2ABfwBgBX9/f39/AX9gA39/fwBgAn5/AX9gBH9/f38AYAAAAhgBA3diZxBfX3diaW5kZ2VuX3Rocm93AAQDigKIAgEDCQEEBAQEBAEEAQQEAQMKAQEEAQQBAQEDAQQEAQEEAQEEAgEBBAICAgICAgQEBAMDAwMDAwMDAgEBBAQABAICAwAAAwMDAwMDAwMDAwABAQQEBAEBAQEBAQECAQYBAQEEBgYBAQEEBAICAQUAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEDAAEHAgIGBAQAAgAGCAMBAwELAwMDBAEBBAYBBQQFBQUFBQUFBQUFBQUFBQUFBQUEBwcCAgMCBwcAAAgAAwQFAXABCAgFAwEAEQYJAX8BQYCAwAALB8FN3QUGbWVtb3J5AgAWX193YmdfY29tcGFyZWFyZ3NfZnJlZQAUGl9fd2JnX2dldF9jb21wYXJlYXJnc19tb2RlAFAaX193Ymdfc2V0X2NvbXBhcmVhcmdzX21vZGUAPCJfX3diZ19nZXRfY29tcGFyZWFyZ3NfaW5kaXJlY3RfcmhzAFEiX193Ymdfc2V0X2NvbXBhcmVhcmdzX2luZGlyZWN0X3JocwBTEmNvbXBhcmVhcmdzX3RvX2ltbQBfFGNvbXBhcmVhcmdzX2Zyb21faW1tABUVX193YmdfZ2V0X21hdGhhcmdzX29wAFAVX193Ymdfc2V0X21hdGhhcmdzX29wAD0SX193YmdfbXVsYXJnc19mcmVlABYeX193YmdfZ2V0X211bGFyZ3NfaW5kaXJlY3RfcmhzAFAeX193Ymdfc2V0X211bGFyZ3NfaW5kaXJlY3RfcmhzAFQSX193YmdfZGl2YXJnc19mcmVlACceX193YmdfZ2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzAMABHl9fd2JnX3NldF9kaXZhcmdzX2luZGlyZWN0X3JocwBpG19fd2JnX3BhbmljaW5zdHJ1Y3Rpb25fZnJlZQAcIXBhbmljaW5zdHJ1Y3Rpb25fZXJyb3JfdHlwZXNjcmlwdABCF3BhbmljaW5zdHJ1Y3Rpb25fcmVhc29uAGAccGFuaWNpbnN0cnVjdGlvbl9pbnN0cnVjdGlvbgBhDGdtX2Zyb21fYXJncwDbAQ1ndGZfZnJvbV9hcmdzANQBB2dtX2FyZ3MAjwEIZ3RmX2FyZ3MAbg53ZGNtX2Zyb21fYXJncwBADndkb3BfZnJvbV9hcmdzAEAOd2RtbF9mcm9tX2FyZ3MAQQ53ZGR2X2Zyb21fYXJncwDPAQl3ZGNtX2FyZ3MAKAl3cWNtX2FyZ3MAKQl3ZG9wX2FyZ3MAKgl3cW9wX2FyZ3MAKwl3ZG1sX2FyZ3MALAl3cW1sX2FyZ3MALQl3ZGR2X2FyZ3MAagl3cWR2X2FyZ3MAaxBfX3diZ19pbW0wNl9mcmVlAC4QX193YmdfaW1tMTJfZnJlZQAvEF9fd2JnX2ltbTE4X2ZyZWUAMA5fX3diZ19hZGRfZnJlZQAdD19fd2JnX25vb3BfZnJlZQAJEmFkZF9uZXdfdHlwZXNjcmlwdABDBmFkZF9yYQA6BmFkZF9yYgAXBmFkZF9yYwAeA2FkZADMAQNhbmQAkQEDZGl2AJIBAmVxAJMBA2V4cACUAQJndACVAQJsdACWAQRtbG9nAJcBBG1yb28AmAEEbW9kXwCZAQVtb3ZlXwBFA211bACaAQNub3QARgJvcgCbAQNzbGwAnAEDc3JsAJ0BA3N1YgCeAQN4b3IAnwEEbWxkdgBvA3JldADBAQRyZXRkAEcTYWxvY19uZXdfdHlwZXNjcmlwdABdB2Fsb2NfcmEAJQRhbG9jAMIBA21jbABIA21jcACgAQNtZXEAcBNiaHNoX25ld190eXBlc2NyaXB0ABoEYmhzaAAxBGJoZWkAwwEEYnVybgBJBGNhbGwAcQNjY3AAcgRjcm9vAEoEY3NpegBLAmNiAMQBA2xkYwBzA2xvZwB0BGxvZ2QAdQRtaW50AEwEcnZydADFAQRzY3dxAKEBA3NydwCiAQRzcndxAHYDc3d3AKMBBHN3d3EAdwJ0cgCkAQN0cm8AeARlY2sxAKUBBGVjcjEApgEEZWQxOQB5BGsyNTYApwEEczI1NgCoAQR0aW1lAE0Tbm9vcF9uZXdfdHlwZXNjcmlwdABtBG5vb3AA5wEEZmxhZwDGAQNiYWwAqQEDam1wAMcBA2puZQCqAQNzbW8AehNhZGRpX25ld190eXBlc2NyaXB0AEQKYWRkaV9pbW0xMgAKBGFkZGkAqwEEYW5kaQCsAQRkaXZpAK0BBGV4cGkArgEEbW9kaQCvAQRtdWxpALABA29yaQCxAQRzbGxpALIBBHNybGkAswEEc3ViaQC0AQR4b3JpALUBBGpuZWkAtgECbGIAtwECbHcAuAECc2IAuQECc3cAugEEbWNwaQC7ARJndGZfbmV3X3R5cGVzY3JpcHQA1gEDZ3RmALwBBG1jbGkAMhFnbV9uZXdfdHlwZXNjcmlwdABOCGdtX2ltbTE4AA8CZ20AMwRtb3ZpADQEam56aQA1BGptcGYANhNqbXBiX25ld190eXBlc2NyaXB0ABAEam1wYgA3BGpuemYAvQEEam56YgC+AQRqbmVmAHsKam5lYl9pbW0wNgA7BGpuZWIAfAJqaQBVE2NmZWlfbmV3X3R5cGVzY3JpcHQAJgpjZmVpX2ltbTI0AAwEY2ZlaQBWBGNmc2kAVwNjZmUAyAEDY2ZzAMkBBHBzaGwAWARwc2hoAFkEcG9wbABaBHBvcGgAWxN3ZGNtX25ld190eXBlc2NyaXB0ANABBHdkY20AfQR3cWNtAH4Ed2RvcAB/BHdxb3AAgAEEd2RtbACBAQR3cW1sAIIBBHdkZHYAgwEEd3FkdgCEAQR3ZG1kAIUBBHdxbWQAhgEEd2RhbQCHAQR3cWFtAIgBBHdkbW0AiQEEd3FtbQCKAQRlY2FsAIsBBGJzaXoAOBNibGRkX25ld190eXBlc2NyaXB0ADkHYmxkZF9yZAA7BGJsZGQAjAEEZWNvcACNAQRlcGFyAI4BFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUADhRpbnN0cnVjdGlvbl90b19ieXRlcwAIEGluc3RydWN0aW9uX3NpemUA+gERcmVnaWRfbmV3X2NoZWNrZWQAvwEJcmVnaWRfYmFsAOkBCnJlZ2lkX2NnYXMA6gEJcmVnaWRfZXJyAOsBCnJlZ2lkX2ZsYWcA7AEIcmVnaWRfZnAA7QEKcmVnaWRfZ2dhcwDuAQhyZWdpZF9ocADvAQhyZWdpZF9pcwDwAQhyZWdpZF9vZgDxAQlyZWdpZF9vbmUA8gEIcmVnaWRfcGMA8wEJcmVnaWRfcmV0APQBCnJlZ2lkX3JldGwA9QEIcmVnaWRfc3AA9gEJcmVnaWRfc3BwAPcBDnJlZ2lkX3dyaXRhYmxlAPgBCnJlZ2lkX3plcm8A+QEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA4gELcmVnaWRfdG9fdTgA4wESYW5kX25ld190eXBlc2NyaXB0AEMSZGl2X25ld190eXBlc2NyaXB0AEMRZXFfbmV3X3R5cGVzY3JpcHQAQxJleHBfbmV3X3R5cGVzY3JpcHQAQxFndF9uZXdfdHlwZXNjcmlwdABDEWx0X25ld190eXBlc2NyaXB0AEMTbWxvZ19uZXdfdHlwZXNjcmlwdABDE21yb29fbmV3X3R5cGVzY3JpcHQAQxJtb2RfbmV3X3R5cGVzY3JpcHQAQxJtdWxfbmV3X3R5cGVzY3JpcHQAQxFvcl9uZXdfdHlwZXNjcmlwdABDEnNsbF9uZXdfdHlwZXNjcmlwdABDEnNybF9uZXdfdHlwZXNjcmlwdABDEnN1Yl9uZXdfdHlwZXNjcmlwdABDEnhvcl9uZXdfdHlwZXNjcmlwdABDEm1jcF9uZXdfdHlwZXNjcmlwdABDE3Njd3FfbmV3X3R5cGVzY3JpcHQAQxJzcndfbmV3X3R5cGVzY3JpcHQAQxJzd3dfbmV3X3R5cGVzY3JpcHQAQxF0cl9uZXdfdHlwZXNjcmlwdABDE2VjazFfbmV3X3R5cGVzY3JpcHQAQxNlY3IxX25ld190eXBlc2NyaXB0AEMTazI1Nl9uZXdfdHlwZXNjcmlwdABDE3MyNTZfbmV3X3R5cGVzY3JpcHQAQxJiYWxfbmV3X3R5cGVzY3JpcHQAQxJqbmVfbmV3X3R5cGVzY3JpcHQAQxNhbmRpX25ld190eXBlc2NyaXB0AEQTZGl2aV9uZXdfdHlwZXNjcmlwdABEE2V4cGlfbmV3X3R5cGVzY3JpcHQARBNtb2RpX25ld190eXBlc2NyaXB0AEQTbXVsaV9uZXdfdHlwZXNjcmlwdABEEm9yaV9uZXdfdHlwZXNjcmlwdABEE3NsbGlfbmV3X3R5cGVzY3JpcHQARBNzcmxpX25ld190eXBlc2NyaXB0AEQTc3ViaV9uZXdfdHlwZXNjcmlwdABEE3hvcmlfbmV3X3R5cGVzY3JpcHQARBNqbmVpX25ld190eXBlc2NyaXB0AEQRbGJfbmV3X3R5cGVzY3JpcHQARBFsd19uZXdfdHlwZXNjcmlwdABEEXNiX25ld190eXBlc2NyaXB0AEQRc3dfbmV3X3R5cGVzY3JpcHQARBNtY3BpX25ld190eXBlc2NyaXB0AEQTam56Zl9uZXdfdHlwZXNjcmlwdABEE2puemJfbmV3X3R5cGVzY3JpcHQARBFqaV9uZXdfdHlwZXNjcmlwdAAmE2Nmc2lfbmV3X3R5cGVzY3JpcHQAJhNwc2hsX25ld190eXBlc2NyaXB0ACYTcHNoaF9uZXdfdHlwZXNjcmlwdAAmE3BvcGxfbmV3X3R5cGVzY3JpcHQAJhNwb3BoX25ld190eXBlc2NyaXB0ACYSbm90X25ld190eXBlc2NyaXB0ABoTcmV0ZF9uZXdfdHlwZXNjcmlwdAAaE21vdmVfbmV3X3R5cGVzY3JpcHQAGhJtY2xfbmV3X3R5cGVzY3JpcHQAGhNidXJuX25ld190eXBlc2NyaXB0ABoTY3Jvb19uZXdfdHlwZXNjcmlwdAAaE2NzaXpfbmV3X3R5cGVzY3JpcHQAGhNtaW50X25ld190eXBlc2NyaXB0ABoTdGltZV9uZXdfdHlwZXNjcmlwdAAaE2JzaXpfbmV3X3R5cGVzY3JpcHQAGhJyZXRfbmV3X3R5cGVzY3JpcHQAXRNiaGVpX25ld190eXBlc2NyaXB0AF0RY2JfbmV3X3R5cGVzY3JpcHQAXRNydnJ0X25ld190eXBlc2NyaXB0AF0TZmxhZ19uZXdfdHlwZXNjcmlwdABdEmptcF9uZXdfdHlwZXNjcmlwdABdEmNmZV9uZXdfdHlwZXNjcmlwdABdEmNmc19uZXdfdHlwZXNjcmlwdABdE21sZHZfbmV3X3R5cGVzY3JpcHQAORJtZXFfbmV3X3R5cGVzY3JpcHQAORJjY3BfbmV3X3R5cGVzY3JpcHQAORJsb2dfbmV3X3R5cGVzY3JpcHQAORNsb2dkX25ld190eXBlc2NyaXB0ADkTc3J3cV9uZXdfdHlwZXNjcmlwdAA5E3N3d3FfbmV3X3R5cGVzY3JpcHQAORJ0cm9fbmV3X3R5cGVzY3JpcHQAORNlZDE5X25ld190eXBlc2NyaXB0ADkSc21vX25ld190eXBlc2NyaXB0ADkSbGRjX25ld190eXBlc2NyaXB0ADkTam5lZl9uZXdfdHlwZXNjcmlwdAA5E3dkbWRfbmV3X3R5cGVzY3JpcHQAORN3cW1kX25ld190eXBlc2NyaXB0ADkTd2RhbV9uZXdfdHlwZXNjcmlwdAA5E3dxYW1fbmV3X3R5cGVzY3JpcHQAORN3ZG1tX25ld190eXBlc2NyaXB0ADkTd3FtbV9uZXdfdHlwZXNjcmlwdAA5E2VjYWxfbmV3X3R5cGVzY3JpcHQAORNjYWxsX25ld190eXBlc2NyaXB0ADkTZWNvcF9uZXdfdHlwZXNjcmlwdAA5E2VwYXJfbmV3X3R5cGVzY3JpcHQAOQZyZXRfcmEAJQdiaGVpX3JhACUFY2JfcmEAJQdydnJ0X3JhACUHZmxhZ19yYQAlBmptcF9yYQAlCGppX2ltbTI0AAwKY2ZzaV9pbW0yNAAMBmNmZV9yYQAlBmNmc19yYQAlCnBzaGxfaW1tMjQADApwc2hoX2ltbTI0AAwKcG9wbF9pbW0yNAAMCnBvcGhfaW1tMjQADBNtb3ZpX25ld190eXBlc2NyaXB0ABATbWNsaV9uZXdfdHlwZXNjcmlwdAAQE2puemlfbmV3X3R5cGVzY3JpcHQAEBNqbXBmX25ld190eXBlc2NyaXB0ABATX193YmdfbWF0aGFyZ3NfZnJlZQAUH19fd2JnX3NldF9tYXRoYXJnc19pbmRpcmVjdF9yaHMAUx5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9saHMAUx9fX3diZ19nZXRfbWF0aGFyZ3NfaW5kaXJlY3RfcmhzAFEeX193YmdfZ2V0X211bGFyZ3NfaW5kaXJlY3RfbGhzAFEPX193YmdfZXhwaV9mcmVlAB0PX193YmdfYmhlaV9mcmVlAB0PX193Ymdfd2RtbF9mcmVlAB0PX193YmdfcHNobF9mcmVlAB0OX193YmdfbG9nX2ZyZWUAHQ5fX3diZ19jY3BfZnJlZQAdD19fd2JnX2VjazFfZnJlZQAdD19fd2JnX2VjcjFfZnJlZQAdDl9fd2JnX3Ntb19mcmVlAB0OX193Ymdfb3JpX2ZyZWUAHQ5fX3diZ190cm9fZnJlZQAdDl9fd2JnX21lcV9mcmVlAB0OX193YmdfY2ZzX2ZyZWUAHQ5fX3diZ19kaXZfZnJlZQAdDV9fd2JnX2x0X2ZyZWUAHQ9fX3diZ19iaHNoX2ZyZWUAHQ1fX3diZ19zYl9mcmVlAB0PX193Ymdfd2RtZF9mcmVlAB0NX193YmdfdHJfZnJlZQAdDl9fd2JnX3hvcl9mcmVlAB0PX193Ymdfam5lYl9mcmVlAB0PX193Ymdfam5lZl9mcmVlAB0PX193YmdfY3Npel9mcmVlAB0PX193YmdfY3Jvb19mcmVlAB0PX193YmdfZGl2aV9mcmVlAB0NX193YmdfZ21fZnJlZQAdD19fd2JnX21vZGlfZnJlZQAdD19fd2JnX3hvcmlfZnJlZQAdDV9fd2JnX2NiX2ZyZWUAHQ9fX3diZ193ZGNtX2ZyZWUAHQ5fX3diZ19qbXBfZnJlZQAdD19fd2JnX3dxYW1fZnJlZQAdDl9fd2JnX2xkY19mcmVlAB0PX193YmdfZWQxOV9mcmVlAB0NX193Ymdfc3dfZnJlZQAdD19fd2JnX3RpbWVfZnJlZQAdD19fd2JnX2Vjb3BfZnJlZQAdD19fd2JnX3Njd3FfZnJlZQAdD19fd2JnX3dxbW1fZnJlZQAdD19fd2JnX3dkYW1fZnJlZQAdDV9fd2JnX2xiX2ZyZWUAHQ1fX3diZ19qaV9mcmVlAB0PX193YmdfazI1Nl9mcmVlAB0PX193YmdfYW5kaV9mcmVlAB0PX193Ymdfam56aV9mcmVlAB0PX193Ymdfc3J3cV9mcmVlAB0OX193Ymdfbm90X2ZyZWUAHQ5fX3diZ19jZmVfZnJlZQAdD19fd2JnX2xvZ2RfZnJlZQAdDl9fd2JnX3Nyd19mcmVlAB0PX193YmdfcnZydF9mcmVlAB0PX193YmdfcHNoaF9mcmVlAB0OX193Ymdfc3JsX2ZyZWUAHQ5fX3diZ19tdWxfZnJlZQAdD19fd2JnX2ZsYWdfZnJlZQAdD19fd2JnX21jcGlfZnJlZQAdDl9fd2JnX21vZF9mcmVlAB0PX193YmdfbW92aV9mcmVlAB0OX193YmdfcmV0X2ZyZWUAHQ9fX3diZ19tcm9vX2ZyZWUAHQ9fX3diZ193cWR2X2ZyZWUAHQ1fX3diZ19sd19mcmVlAB0PX193Ymdfd3FtZF9mcmVlAB0OX193Ymdfc3d3X2ZyZWUAHQ5fX3diZ19ndGZfZnJlZQAdD19fd2JnX3BvcGhfZnJlZQAdDV9fd2JnX29yX2ZyZWUAHQ9fX3diZ19tb3ZlX2ZyZWUAHQ9fX3diZ193ZGR2X2ZyZWUAHQ9fX3diZ19yZXRkX2ZyZWUAHQ5fX3diZ19iYWxfZnJlZQAdD19fd2JnX2FkZGlfZnJlZQAdDl9fd2JnX2FuZF9mcmVlAB0PX193YmdfbWNsaV9mcmVlAB0PX193Ymdfd3FtbF9mcmVlAB0PX193Ymdfc2xsaV9mcmVlAB0PX193Ymdfd2RvcF9mcmVlAB0OX193Ymdfc2xsX2ZyZWUAHQ9fX3diZ19lY2FsX2ZyZWUAHQ9fX3diZ193cWNtX2ZyZWUAHQ9fX3diZ19zd3dxX2ZyZWUAHQ9fX3diZ19tbGR2X2ZyZWUAHQ1fX3diZ19ndF9mcmVlAB0NX193YmdfZXFfZnJlZQAdDl9fd2JnX2puZV9mcmVlAB0PX193Ymdfam5laV9mcmVlAB0PX193Ymdfam1wZl9mcmVlAB0OX193YmdfZXhwX2ZyZWUAHQ9fX3diZ19zMjU2X2ZyZWUAHQ5fX3diZ19zdWJfZnJlZQAdDl9fd2JnX21jcF9mcmVlAB0PX193YmdfZXBhcl9mcmVlAB0PX193YmdfY2ZlaV9mcmVlAB0PX193YmdfY2ZzaV9mcmVlAB0PX193Ymdfam56Zl9mcmVlAB0PX193YmdfbWludF9mcmVlAB0PX193YmdfYnNpel9mcmVlAB0PX193YmdfYnVybl9mcmVlAB0PX193Ymdfd2RtbV9mcmVlAB0PX193Ymdfam1wYl9mcmVlAB0PX193Ymdfc3JsaV9mcmVlAB0PX193Ymdfc3ViaV9mcmVlAB0PX193Ymdfam56Yl9mcmVlAB0PX193YmdfbXVsaV9mcmVlAB0PX193Ymdfd3FvcF9mcmVlAB0PX193YmdfcG9wbF9mcmVlAB0OX193YmdfbWNsX2ZyZWUAHQ9fX3diZ19jYWxsX2ZyZWUAHQ9fX3diZ19tbG9nX2ZyZWUAHQ9fX3diZ19ibGRkX2ZyZWUAHQ9fX3diZ19hbG9jX2ZyZWUAHRN3cWR2X25ld190eXBlc2NyaXB0ANABE3dxbWxfbmV3X3R5cGVzY3JpcHQA0AETd2RtbF9uZXdfdHlwZXNjcmlwdADQARN3cW9wX25ld190eXBlc2NyaXB0ANABE3dkb3BfbmV3X3R5cGVzY3JpcHQA0AETd3FjbV9uZXdfdHlwZXNjcmlwdADQARN3ZGR2X25ld190eXBlc2NyaXB0ANABDndxY21fZnJvbV9hcmdzAEAKd3Fkdl9pbW0wNgA7CndxbWxfaW1tMDYAOwp3ZG1sX2ltbTA2ADsKd3FvcF9pbW0wNgA7Cndkb3BfaW1tMDYAOwp3cWNtX2ltbTA2ADsKd2Rkdl9pbW0wNgA7CndkY21faW1tMDYAOwpqbmVmX2ltbTA2ADsJbGRjX2ltbTA2ADsOd3Fkdl9mcm9tX2FyZ3MAzwEOd3FtbF9mcm9tX2FyZ3MAQQ53cW9wX2Zyb21fYXJncwBABWdtX3JhADoFZ3RfcmMAHgVndF9yYgAXBWd0X3JhADoFbGJfcmIAFwVsYl9yYQA6BWx0X3JjAB4FbHRfcmIAFwVsdF9yYQA6CGx3X2ltbTEyAAoFbHdfcmIAFwVsd19yYQA6BW9yX3JjAB4Fb3JfcmIAFwVvcl9yYQA6CHNiX2ltbTEyAAoFc2JfcmIAFwVzYl9yYQA6CHN3X2ltbTEyAAoFc3dfcmIAFwVzd19yYQA6BXRyX3JjAB4FdHJfcmIAFwV0cl9yYQA6BWVxX3JjAB4FZXFfcmIAFwVlcV9yYQA6BmFuZF9yYwAeBmFuZF9yYgAXBmFuZF9yYQA6BmJhbF9yYwAeBmJhbF9yYgAXBmJhbF9yYQA6BmNjcF9yYwAeBmNjcF9yYgAXBmNjcF9yYQA6BmRpdl9yYwAeBmRpdl9yYgAXBmRpdl9yYQA6BmV4cF9yYwAeBmV4cF9yYgAXBmV4cF9yYQA6CGxiX2ltbTEyAAoGZ3RmX3JiABcGZ3RmX3JhADoGam5lX3JjAB4Gam5lX3JiABcGam5lX3JhADoGbGRjX3JjAB4GbGRjX3JiABcGbGRjX3JhADoGbG9nX3JkADsGbG9nX3JjAB4GbG9nX3JiABcGbG9nX3JhADoGbWNsX3JiABcGbWNsX3JhADoGbWNwX3JjAB4GbWNwX3JiABcGbWNwX3JhADoGbWVxX3JkADsGbWVxX3JjAB4GbWVxX3JiABcGbWVxX3JhADoGbW9kX3JjAB4GbW9kX3JiABcGbW9kX3JhADoGbXVsX3JjAB4GbXVsX3JiABcGbXVsX3JhADoGbm90X3JiABcGbm90X3JhADoJb3JpX2ltbTEyAAoGb3JpX3JiABcGb3JpX3JhADoGc2xsX3JjAB4Gc2xsX3JiABcGc2xsX3JhADoGc21vX3JkADsGc21vX3JjAB4Gc21vX3JiABcGc21vX3JhADoGc3JsX3JjAB4Gc3JsX3JiABcGc3JsX3JhADoGc3J3X3JjAB4Gc3J3X3JiABcGc3J3X3JhADoGc3ViX3JjAB4Gc3ViX3JiABcGc3ViX3JhADoGc3d3X3JjAB4Gc3d3X3JiABcGc3d3X3JhADoGdHJvX3JkADsGdHJvX3JjAB4GdHJvX3JiABcGdHJvX3JhADoGeG9yX3JjAB4GeG9yX3JiABcGeG9yX3JhADoJZ3RmX2ltbTEyAAoHYWRkaV9yYgAXB2FkZGlfcmEAOgphbmRpX2ltbTEyAAoHYW5kaV9yYgAXB2FuZGlfcmEAOgdiaHNoX3JiABcHYmhzaF9yYQA6BmNjcF9yZAA7B2JsZGRfcmMAHgdibGRkX3JiABcHYmxkZF9yYQA6B2JzaXpfcmIAFwdic2l6X3JhADoHYnVybl9yYgAXB2J1cm5fcmEAOgdjYWxsX3JkADsHY2FsbF9yYwAeB2NhbGxfcmIAFwdjYWxsX3JhADoHY3Jvb19yYgAXB2Nyb29fcmEAOgdjc2l6X3JiABcHY3Npel9yYQA6CmRpdmlfaW1tMTIACgdkaXZpX3JiABcHZGl2aV9yYQA6B2VjYWxfcmQAOwdlY2FsX3JjAB4HZWNhbF9yYgAXB2VjYWxfcmEAOgdlY2sxX3JjAB4HZWNrMV9yYgAXB2VjazFfcmEAOgdlY29wX3JkADsHZWNvcF9yYwAeB2Vjb3BfcmIAFwdlY29wX3JhADoHZWNyMV9yYwAeB2VjcjFfcmIAFwdlY3IxX3JhADoHZWQxOV9yZAA7B2VkMTlfcmMAHgdlZDE5X3JiABcHZWQxOV9yYQA6B2VwYXJfcmQAOwdlcGFyX3JjAB4HZXBhcl9yYgAXB2VwYXJfcmEAOgpleHBpX2ltbTEyAAoHZXhwaV9yYgAXB2V4cGlfcmEAOgpqbXBiX2ltbTE4AA8Ham1wYl9yYQA6CmptcGZfaW1tMTgADwdqbXBmX3JhADoHam5lYl9yYwAeB2puZWJfcmIAFwdqbmViX3JhADoHam5lZl9yYwAeB2puZWZfcmIAFwdqbmVmX3JhADoKam5laV9pbW0xMgAKB2puZWlfcmIAFwdqbmVpX3JhADoKam56Yl9pbW0xMgAKB2puemJfcmIAFwdqbnpiX3JhADoKam56Zl9pbW0xMgAKB2puemZfcmIAFwdqbnpmX3JhADoKam56aV9pbW0xOAAPB2puemlfcmEAOgdrMjU2X3JjAB4HazI1Nl9yYgAXB2syNTZfcmEAOgdsb2dkX3JkADsHbG9nZF9yYwAeB2xvZ2RfcmIAFwdsb2dkX3JhADoKbWNsaV9pbW0xOAAPB21jbGlfcmEAOgptY3BpX2ltbTEyAAoHbWNwaV9yYgAXB21jcGlfcmEAOgdtaW50X3JiABcHbWludF9yYQA6B21sZHZfcmQAOwdtbGR2X3JjAB4HbWxkdl9yYgAXB21sZHZfcmEAOgdtbG9nX3JjAB4HbWxvZ19yYgAXB21sb2dfcmEAOgptb2RpX2ltbTEyAAoHbW9kaV9yYgAXB21vZGlfcmEAOgdtb3ZlX3JiABcHbW92ZV9yYQA6Cm1vdmlfaW1tMTgADwdtb3ZpX3JhADoHbXJvb19yYwAeB21yb29fcmIAFwdtcm9vX3JhADoKbXVsaV9pbW0xMgAKB211bGlfcmIAFwdtdWxpX3JhADoHcmV0ZF9yYgAXB3JldGRfcmEAOgdzMjU2X3JjAB4HczI1Nl9yYgAXB3MyNTZfcmEAOgdzY3dxX3JjAB4Hc2N3cV9yYgAXB3Njd3FfcmEAOgpzbGxpX2ltbTEyAAoHc2xsaV9yYgAXB3NsbGlfcmEAOgpzcmxpX2ltbTEyAAoHc3JsaV9yYgAXB3NybGlfcmEAOgdzcndxX3JkADsHc3J3cV9yYwAeB3Nyd3FfcmIAFwdzcndxX3JhADoKc3ViaV9pbW0xMgAKB3N1YmlfcmIAFwdzdWJpX3JhADoHc3d3cV9yZAA7B3N3d3FfcmMAHgdzd3dxX3JiABcHc3d3cV9yYQA6B3RpbWVfcmIAFwd0aW1lX3JhADoHd2RhbV9yZAA7B3dkYW1fcmMAHgd3ZGFtX3JiABcHd2RhbV9yYQA6B3dkY21fcmMAHgd3ZGNtX3JiABcHd2RjbV9yYQA6B3dkZHZfcmMAHgd3ZGR2X3JiABcHd2Rkdl9yYQA6B3dkbWRfcmQAOwd3ZG1kX3JjAB4Hd2RtZF9yYgAXB3dkbWRfcmEAOgd3ZG1sX3JjAB4Hd2RtbF9yYgAXB3dkbWxfcmEAOgd3ZG1tX3JkADsHd2RtbV9yYwAeB3dkbW1fcmIAFwd3ZG1tX3Jh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QQh2QYD+A3EgAUGA/gNxQQh0ckEIdnILTwECfyAAENcBIABBCGsiASABKAIAQQFqIgI2AgACQCACBEAgACgCAEF/Rg0BIAAvAAQgAEEGai0AAEEQdHIQ2gEgARBjEGcPCwALEN0BAAtVAQF/IAAQIiEAQQRBEBDZASIBRQRAAAsgAUKBgICAEDcCACABIABBEHRBgID8B3EgAEEIdkGA/gNxIABBgP4DcUEIdHJBCHZyrUIghjcCCCABQQhqC04BAX8gAUUEQCAAEBsaDwsgABDXASAAQQhrIgEgASgCAEEBayICNgIAAkAgAg0AIABBBGsiACAAKAIAQQFrIgA2AgAgAA0AIAFBEBAjCwsQACAAIAEgAiADQd4AEIICCxAAIAAgASACIANB3wAQggILEAAgACABIAIgA0HgABCCAgsQACAAIAEgAiADQeEAEIICCxAAIAAgASACIANB4gAQgwILEAAgACABIAIgA0HjABCDAgtOAQF/IAFFBEAgABAfGg8LIAAQ1wEgAEEIayIBIAEoAgBBAWsiAjYCAAJAIAINACAAQQRrIgAgACgCAEEBayIANgIAIAANACABQRAQIwsLTgEBfyABRQRAIAAQIRoPCyAAENcBIABBCGsiASABKAIAQQFrIgI2AgACQCACDQAgAEEEayIAIAAoAgBBAWsiADYCACAADQAgAUEQECMLC04BAX8gAUUEQCAAECIaDwsgABDXASAAQQhrIgEgASgCAEEBayICNgIAAkAgAg0AIABBBGsiACAAKAIAQQFrIgA2AgAgAA0AIAFBEBAjCwsPACAAIAFBgICAyAEQhAILDAAgACABQcsAEIUCCwwAIAAgAUHMABCFAgsMACAAIAFBzQAQhQILDAAgACABQc4AEIUCCwwAIAAgAUHPABCFAgsMACAAIAFB0AAQhQILDwAgACABQYCAgOgGEIQCC1MBAX8gABAfIQQgARAfIQEgAhAfIQIgAxAfIQNBBEEQENkBIgBFBEAACyAAQoGAgIAQNwIAIAAgBCABIAIgAxAkrUL///8Hg0IghjcCCCAAQQhqC0UBAX8jAEEQayIBJAAgAUEEaiAAECAgASgCBCIALwAAIABBAmotAABBEHRyENoBIAEoAgggASgCDBDSARBnIAFBEGokAAtLAQF/IwBBEGsiASQAIAFBBGogABAgIAEoAgQi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AUKBgICAEDcCACABIACtQv///weDQiCGNwIIIAFBCGoLMAEBf0EEQRAQ2QEiAUUEQAALIAEgADYCDCABQQA2AgggAUKBgICAEDcCACABQQhqCzABAX9BBEEQENkBIgFFBEAACyABIAA6AAwgAUEANgIIIAFCgYCAgBA3AgAgAUEIagsoACABKAIARQRAIAFBfzYCACAAIAE2AgQgACABQQRqNgIADwsQ3QEACyQAIAAQ1wEgACgCAARAEN0BAAsgAEEANgIAIAAgAUEARzoABAsoACADEBshAyAAEM0BIAEQzQEgAhDNASADENUBQQh0QeQAchDKARBmCygAIAMQGyEDIAAQzQEgARDNASACEM0BIAMQ1QFBCHRB5QByEMoBEGYLIAAgAEEBayIAQQZNBEAgAEEBag8LQeCCwABBGRDhAQALKQEBf0EEQRAQ2QEiAEUEQAALIABCADcCCCAAQoGAgIAQNwIAIABBCGoLIgAgAhAEIQIgABDNASABEM0BIAIQT0EIdEHKAHIQygEQZgsPACAAIAEgAiADQRIQ/AELDwAgACABIAIgA0EYEPwBCw8AIAAgASACIANBHBD8AQsPACAAIAEgAiADQR0Q/AELDwAgACABIAIgA0EhEP0BCw8AIAAgASACIANBIhD8AQsPACAAIAEgAiADQSMQ/AELDwAgACABIAIgA0EoEPwBCw8AIAAgASACIANBKhD8AQsPACAAIAEgAiADQSwQ/AELDwAgACABIAIgA0EvEPwBCw8AIAAgASACIANBOBD8AQsQACAAIAEgAiADQdMAEP0BCxAAIAAgASACIANB1AAQ/QELEAAgACABIAIgA0HeABD9AQsQACAAIAEgAiADQd8AEP0BCxAAIAAgASACIANB4AAQ/QELEAAgACABIAIgA0HhABD9AQsQACAAIAEgAiADQeIAEP0BCxAAIAAgASACIANB4wAQ/QELEAAgACABIAIgA0HkABD9AQsQACAAIAEgAiADQeUAEP0BCxAAIAAgASACIANB5gAQ/AELEAAgACABIAIgA0HnABD8AQsQACAAIAEgAiADQegAEPwBCxAAIAAgASACIANB6QAQ/AELEAAgACABIAIgA0HqABD8AQsQACAAIAEgAiADQesAEPwBCxAAIAAgASACIANB7AAQ/AELEAAgACABIAIgA0HuABD8AQsQACAAIAEgAiADQe8AEPwBCxAAIAAgASACIANB8AAQ/AELHgAgARBsIQEgABDNASABEMsBQQh0QcwAchDKARBmCxkAIAAgASACQSBBACAEG0EQQQAgAxtyECQLDQAgACABIAJBARD+AQsNACAAIAEgAkECEP4BCw0AIAAgASACQQMQ/gELDQAgACABIAJBBBD+AQsNACAAIAEgAkEFEP4BCw0AIAAgASACQQYQ/gELDQAgACABIAJBBxD+AQsNACAAIAEgAkEIEP4BCw0AIAAgASACQQkQ/gELDQAgACABIAJBCxD+AQsNACAAIAEgAkENEP4BCw0AIAAgASACQQ4Q/gELDQAgACABIAJBDxD+AQsNACAAIAEgAkEQEP4BCw0AIAAgASACQREQ/gELDQAgACABIAJBFxD+AQsNACAAIAEgAkEmEP4BCw0AIAAgASACQScQ/gELDQAgACABIAJBKRD+AQsNACAAIAEgAkErEP4BCw0AIAAgASACQS0Q/gELDQAgACABIAJBLhD+AQsNACAAIAEgAkEwEP4BCw0AIAAgASACQTEQ/gELDQAgACABIAJBNRD+AQsNACAAIAEgAkE3EP4BCw0AIAAgASACQTkQ/wELDQAgACABIAJBOhD/AQsNACAAIAEgAkE7EP8BCw0AIAAgASACQTwQ/wELDQAgACABIAJBPRD/AQsNACAAIAEgAkE+EP8BCw0AIAAgASACQT8Q/wELDgAgACABIAJBwAAQ/wELDgAgACABIAJBwQAQ/wELDgAgACABIAJBwgAQ/wELDgAgACABIAJBwwAQ/wELDgAgACABIAJBxAAQ/wELDgAgACABIAJBxQAQ/wELDgAgACABIAJBxgAQ/wELDgAgACABIAJBxwAQ/wELDgAgACABIAJByAAQ/wELDgAgACABIAJByQAQ/wELDgAgACABIAJBygAQ/wELDgAgACABIAJB0QAQ/wELDgAgACABIAJB0gAQ/wELFwEBfyAAQf8BcUE/TQR/IAAQZwVBAAsLGwAgABDXASAAKAIAQX9GBEAQ3QEACyAALQAECwkAIABBExCAAgsJACAAQRUQgAILCQAgAEEaEIACCwkAIABBIBCAAgsJACAAQSUQgAILCQAgAEE0EIACCwkAIABBNhCAAgsKACAAQdgAEIACCwoAIABB2QAQgAILGwEBf0EBQQQQ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', imports)}\n\nasync function initWasm () {\n  return await __wbg_init({ module_or_path: wasm() });\n}\n\n/**\n * calling it right away for pre-caching\n * the wasm async initialization at startup\n */\ninitWasm();\n\nexport { ADD, ADDI, ALOC, AND, ANDI, BAL, BHEI, BHSH, BLDD, BSIZ, BURN, CALL, CB, CCP, CFE, CFEI, CFS, CFSI, CROO, CSIZ, CompareArgs, CompareMode, DIV, DIVI, DivArgs, ECAL, ECK1, ECOP, ECR1, ED19, EPAR, EQ, EXP, EXPI, FLAG, GM, GMArgs, GT, GTF, GTFArgs, Imm06, Imm12, Imm18, Imm24, Instruction, JI, JMP, JMPB, JMPF, JNE, JNEB, JNEF, JNEI, JNZB, JNZF, JNZI, K256, LB, LDC, LOG, LOGD, LT, LW, MCL, MCLI, MCP, MCPI, MEQ, MINT, MLDV, MLOG, MOD, MODI, MOVE, MOVI, MROO, MUL, MULI, MathArgs, MathOp, MulArgs, NOOP, NOT, OR, ORI, POPH, POPL, PSHH, PSHL, PanicInstruction, PanicReason, RET, RETD, RVRT, RegId, S256, SB, SCWQ, SLL, SLLI, SMO, SRL, SRLI, SRW, SRWQ, SUB, SUBI, SW, SWW, SWWQ, TIME, TR, TRO, WDAM, WDCM, WDDV, WDMD, WDML, WDMM, WDOP, WQAM, WQCM, WQDV, WQMD, WQML, WQMM, WQOP, XOR, XORI, add, addi, aloc, and, andi, bal, bhei, bhsh, bldd, bsiz, burn, call, cb, ccp, cfe, cfei, cfs, cfsi, croo, csiz, div, divi, ecal, eck1, ecop, ecr1, ed19, epar, eq, exp, expi, flag, gm, gm_args, gt, gtf, gtf_args, initSync, initWasm, ji, jmp, jmpb, jmpf, jne, jneb, jnef, jnei, jnzb, jnzf, jnzi, k256, lb, ldc, log, logd, lt, lw, mcl, mcli, mcp, mcpi, meq, mint, mldv, mlog, mod_, modi, move_, movi, mroo, mul, muli, noop, not, or, ori, poph, popl, pshh, pshl, ret, retd, rvrt, s256, sb, scwq, sll, slli, smo, srl, srli, srw, srwq, sub, subi, sw, sww, swwq, time, tr, tro, wdam, wdcm, wdcm_args, wddv, wddv_args, wdmd, wdml, wdml_args, wdmm, wdop, wdop_args, wqam, wqcm, wqcm_args, wqdv, wqdv_args, wqmd, wqml, wqml_args, wqmm, wqop, wqop_args, xor, xori };\n","import type { UserFuelsConfig } from '../types';\n\nexport function createConfig(config: UserFuelsConfig) {\n  return config;\n}\n","import type { JsonAbi } from '@fuel-ts/abi-coder';\nimport type { DeployContractOptions } from '@fuel-ts/contract';\n\nexport enum Commands {\n  build = 'build',\n  deploy = 'deploy',\n  dev = 'dev',\n  init = 'init',\n  versions = 'versions',\n  node = 'node',\n}\n\nexport type CommandEvent =\n  | {\n      type: Commands.build;\n      data: void;\n    }\n  | {\n      type: Commands.deploy;\n      data: DeployedData;\n    }\n  | {\n      type: Commands.dev;\n      data: void;\n    }\n  | {\n      type: Commands.init;\n      data: void;\n    }\n  | {\n      type: Commands.versions;\n      data: void;\n    }\n  | {\n      type: Commands.node;\n      data: void;\n    };\n\nexport type DeployedContract = {\n  name: string;\n  contractId: string;\n};\n\nexport type DeployedScript = {\n  path: string;\n  loaderBytecode: Uint8Array;\n  abi: JsonAbi;\n};\n\nexport type DeployedPredicate = DeployedScript & {\n  predicateRoot: string;\n};\n\nexport type DeployedData = {\n  contracts?: DeployedContract[];\n  scripts?: DeployedScript[];\n  predicates?: DeployedPredicate[];\n};\n\nexport type ContractDeployOptions = {\n  contracts: DeployedContract[];\n  contractName: string;\n  contractPath: string;\n};\n\nexport type OptionsFunction = (\n  options: ContractDeployOptions\n) => DeployContractOptions | Promise<DeployContractOptions>;\n\nexport type FuelsEventListener<CType extends Commands> = (\n  config: FuelsConfig,\n  data: Extract<CommandEvent, { type: CType }>['data']\n) => void | Promise<void>;\n\nexport type UserFuelsConfig = {\n  /** Relative directory path to Forc workspace */\n  workspace?: string;\n  /** List of relative directory paths to Sway contracts */\n  contracts?: string[];\n  /** List of relative directory paths to Sway predicates */\n  predicates?: string[];\n  /** List of relative directory paths to Sway scripts */\n  scripts?: string[];\n  /** Relative directory path for generating Typescript definitions */\n  output: string;\n\n  /**\n   * Wallet private key, used when deploying contracts.\n   * Should ideally come from env — `process.env.MY_PRIVATE_KEY`\n   */\n  privateKey?: string;\n\n  /**\n   * Contracts will be deployed using this provider.\n   * Default: http://localhost:4000/v1/graphql\n   */\n  providerUrl?: string;\n\n  /**\n   * Relative path to directory containing custom configurations for `fuel-core`, such as:\n   * - chainConfig.json\n   * - metadata.json\n   * - stateConfig.json\n   */\n  snapshotDir?: string;\n\n  /** Static of dyanmic deploy configs to be used when deploying contracts */\n  deployConfig?: DeployContractOptions | OptionsFunction;\n\n  /** If set to false, you will need to spin up a Fuel core node by yourself */\n  autoStartFuelCore?: boolean;\n\n  /** If set, will use absolute path to forc binary  */\n  forcPath?: string;\n\n  /** If set, will use absolute path to forc binary  */\n  fuelCorePath?: string;\n\n  /**\n   * Port to use when starting a `fuel-core` node\n   * Default: first free port, starting from 4000\n   */\n  fuelCorePort?: number;\n\n  /**\n   * Aditional forc build flags to be used when compiling contracts.\n   * Default: []\n   * Example:\n   *  forcBuildFlags: ['--release'];\n   */\n  forcBuildFlags?: string[];\n\n  /**\n   * Function callback, will be called after a successful build operation\n   *\n   * @param config - The loaded `fuels.config.ts`\n   */\n  onBuild?: FuelsEventListener<Commands.build>;\n\n  /**\n   * Function callback, will be called after a successful deploy operation\n   *\n   * @param config - The loaded `fuels.config.ts`\n   * @param data - the deployed contracts\n   */\n  onDeploy?: FuelsEventListener<Commands.deploy>;\n\n  /**\n   * Function callback, will be called after a successful dev operation\n   *\n   * @param config - The loaded `fuels.config.ts`\n   */\n  onDev?: FuelsEventListener<Commands.dev>;\n\n  /**\n   * Function callback, will be called after a successful Node refresh operation\n   *\n   * @param config - The loaded `fuels.config.ts`\n   */\n  onNode?: FuelsEventListener<Commands.node>;\n\n  /**\n   * Function callback, will be called in case of errors\n   * @param config - Configuration in use\n   * @param error - Original error object\n   */\n  onFailure?: (config: FuelsConfig, error: Error) => void | Promise<void>;\n};\n\nexport type FuelsConfig = UserFuelsConfig &\n  Required<\n    Pick<\n      UserFuelsConfig,\n      | 'contracts'\n      | 'predicates'\n      | 'scripts'\n      | 'deployConfig'\n      | 'autoStartFuelCore'\n      | 'forcPath'\n      | 'fuelCorePath'\n      | 'providerUrl'\n      | 'forcBuildFlags'\n    >\n  > & {\n    basePath: string;\n    configPath: string;\n    buildMode: 'debug' | 'release';\n  };\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/lib/getBuiltinVersions.ts\nfunction getBuiltinVersions() {\n  return {\n    FUEL_CORE: \"0.43.1\",\n    FORC: \"0.68.7\",\n    FUELS: \"0.101.2\"\n  };\n}\n__name(getBuiltinVersions, \"getBuiltinVersions\");\n\n// src/lib/semver.ts\nfunction parseVersion(version) {\n  const [major, minor, patch] = version.split(\".\").map((v) => parseInt(v, 10));\n  return { major, minor, patch };\n}\n__name(parseVersion, \"parseVersion\");\nfunction versionDiffs(version1, version2) {\n  const semver1 = parseVersion(version1);\n  const semver2 = parseVersion(version2);\n  const major = semver1.major - semver2.major;\n  const minor = semver1.minor - semver2.minor;\n  const patch = semver1.patch - semver2.patch;\n  return {\n    major,\n    minor,\n    patch,\n    fullVersionDiff: major || minor || patch\n  };\n}\n__name(versionDiffs, \"versionDiffs\");\nfunction gt(version1, version2) {\n  const { fullVersionDiff } = versionDiffs(version1, version2);\n  return fullVersionDiff > 0;\n}\n__name(gt, \"gt\");\nfunction eq(version1, version2) {\n  const { fullVersionDiff } = versionDiffs(version1, version2);\n  return fullVersionDiff === 0;\n}\n__name(eq, \"eq\");\nfunction gte(version1, version2) {\n  const { fullVersionDiff } = versionDiffs(version1, version2);\n  return fullVersionDiff >= 0;\n}\n__name(gte, \"gte\");\nfunction majorEq(version1, version2) {\n  const { major } = versionDiffs(version1, version2);\n  return major === 0;\n}\n__name(majorEq, \"majorEq\");\nfunction minorEq(version1, version2) {\n  const { minor } = versionDiffs(version1, version2);\n  return minor === 0;\n}\n__name(minorEq, \"minorEq\");\nfunction patchEq(version1, version2) {\n  const { patch } = versionDiffs(version1, version2);\n  return patch === 0;\n}\n__name(patchEq, \"patchEq\");\n\n// src/lib/checkFuelCoreVersionCompatibility.ts\nfunction checkFuelCoreVersionCompatibility(networkVersion) {\n  const { FUEL_CORE: supportedVersion } = getBuiltinVersions();\n  if (/^\\d+\\.\\d+\\.\\d+\\D+/m.test(networkVersion)) {\n    console.warn(`You're running against an unreleased fuel-core version: ${networkVersion}. Things may work as expected, but it's not guaranteed. Please use a released version.      \nThis unreleased fuel-core build may include features and updates not yet supported by this version of the TS-SDK.`);\n  }\n  return {\n    supportedVersion,\n    isMajorSupported: majorEq(networkVersion, supportedVersion),\n    isMinorSupported: minorEq(networkVersion, supportedVersion),\n    isPatchSupported: patchEq(networkVersion, supportedVersion)\n  };\n}\n__name(checkFuelCoreVersionCompatibility, \"checkFuelCoreVersionCompatibility\");\n\n// src/index.ts\nvar versions = getBuiltinVersions();\nexport {\n  checkFuelCoreVersionCompatibility,\n  eq,\n  gt,\n  gte,\n  majorEq,\n  minorEq,\n  patchEq,\n  versions\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/error-codes.ts\nvar ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {\n  ErrorCode2[\"NO_ABIS_FOUND\"] = \"no-abis-found\";\n  ErrorCode2[\"ABI_TYPES_AND_VALUES_MISMATCH\"] = \"abi-types-and-values-mismatch\";\n  ErrorCode2[\"ABI_MAIN_METHOD_MISSING\"] = \"abi-main-method-missing\";\n  ErrorCode2[\"INVALID_COMPONENT\"] = \"invalid-component\";\n  ErrorCode2[\"CONFIGURABLE_NOT_FOUND\"] = \"configurable-not-found\";\n  ErrorCode2[\"TYPE_NOT_FOUND\"] = \"type-not-found\";\n  ErrorCode2[\"LOG_TYPE_NOT_FOUND\"] = \"log-type-not-found\";\n  ErrorCode2[\"TYPE_NOT_SUPPORTED\"] = \"type-not-supported\";\n  ErrorCode2[\"INVALID_DECODE_VALUE\"] = \"invalid-decode-value\";\n  ErrorCode2[\"JSON_ABI_ERROR\"] = \"json-abi-error\";\n  ErrorCode2[\"TYPE_ID_NOT_FOUND\"] = \"type-id-not-found\";\n  ErrorCode2[\"BIN_FILE_NOT_FOUND\"] = \"bin-file-not-found\";\n  ErrorCode2[\"CODER_NOT_FOUND\"] = \"coder-not-found\";\n  ErrorCode2[\"INVALID_DATA\"] = \"invalid-data\";\n  ErrorCode2[\"FUNCTION_NOT_FOUND\"] = \"function-not-found\";\n  ErrorCode2[\"UNSUPPORTED_ENCODING_VERSION\"] = \"unsupported-encoding-version\";\n  ErrorCode2[\"TIMEOUT_EXCEEDED\"] = \"timeout-exceeded\";\n  ErrorCode2[\"CONFIG_FILE_NOT_FOUND\"] = \"config-file-not-found\";\n  ErrorCode2[\"CONFIG_FILE_ALREADY_EXISTS\"] = \"config-file-already-exists\";\n  ErrorCode2[\"WORKSPACE_NOT_DETECTED\"] = \"workspace-not-detected\";\n  ErrorCode2[\"INVALID_ADDRESS\"] = \"invalid-address\";\n  ErrorCode2[\"INVALID_EVM_ADDRESS\"] = \"invalid-evm-address\";\n  ErrorCode2[\"INVALID_B256_ADDRESS\"] = \"invalid-b256-address\";\n  ErrorCode2[\"CHAIN_INFO_CACHE_EMPTY\"] = \"chain-info-cache-empty\";\n  ErrorCode2[\"NODE_INFO_CACHE_EMPTY\"] = \"node-info-cache-empty\";\n  ErrorCode2[\"MISSING_PROVIDER\"] = \"missing-provider\";\n  ErrorCode2[\"INVALID_PROVIDER\"] = \"invalid-provider\";\n  ErrorCode2[\"CONNECTION_REFUSED\"] = \"connection-refused\";\n  ErrorCode2[\"INVALID_URL\"] = \"invalid-url\";\n  ErrorCode2[\"UNSUPPORTED_FEATURE\"] = \"unsupported-feature\";\n  ErrorCode2[\"INVALID_PUBLIC_KEY\"] = \"invalid-public-key\";\n  ErrorCode2[\"WALLET_MANAGER_ERROR\"] = \"wallet-manager-error\";\n  ErrorCode2[\"HD_WALLET_ERROR\"] = \"hd-wallet-error\";\n  ErrorCode2[\"MISSING_CONNECTOR\"] = \"missing-connector\";\n  ErrorCode2[\"PARSE_FAILED\"] = \"parse-failed\";\n  ErrorCode2[\"ENCODE_ERROR\"] = \"encode-error\";\n  ErrorCode2[\"DECODE_ERROR\"] = \"decode-error\";\n  ErrorCode2[\"ENV_DEPENDENCY_MISSING\"] = \"env-dependency-missing\";\n  ErrorCode2[\"INVALID_TTL\"] = \"invalid-ttl\";\n  ErrorCode2[\"INVALID_INPUT_PARAMETERS\"] = \"invalid-input-parameters\";\n  ErrorCode2[\"NOT_IMPLEMENTED\"] = \"not-implemented\";\n  ErrorCode2[\"NOT_SUPPORTED\"] = \"not-supported\";\n  ErrorCode2[\"CONVERTING_FAILED\"] = \"converting-error\";\n  ErrorCode2[\"ELEMENT_NOT_FOUND\"] = \"element-not-found\";\n  ErrorCode2[\"MISSING_REQUIRED_PARAMETER\"] = \"missing-required-parameter\";\n  ErrorCode2[\"INVALID_REQUEST\"] = \"invalid-request\";\n  ErrorCode2[\"INVALID_TRANSFER_AMOUNT\"] = \"invalid-transfer-amount\";\n  ErrorCode2[\"INSUFFICIENT_FUNDS_OR_MAX_COINS\"] = \"not-enough-funds-or-max-coins-reached\";\n  ErrorCode2[\"INVALID_CREDENTIALS\"] = \"invalid-credentials\";\n  ErrorCode2[\"HASHER_LOCKED\"] = \"hasher-locked\";\n  ErrorCode2[\"GAS_PRICE_TOO_LOW\"] = \"gas-price-too-low\";\n  ErrorCode2[\"GAS_LIMIT_TOO_LOW\"] = \"gas-limit-too-low\";\n  ErrorCode2[\"MAX_FEE_TOO_LOW\"] = \"max-fee-too-low\";\n  ErrorCode2[\"TRANSACTION_NOT_FOUND\"] = \"transaction-not-found\";\n  ErrorCode2[\"TRANSACTION_FAILED\"] = \"transaction-failed\";\n  ErrorCode2[\"INVALID_CONFIGURABLE_CONSTANTS\"] = \"invalid-configurable-constants\";\n  ErrorCode2[\"INVALID_TRANSACTION_INPUT\"] = \"invalid-transaction-input\";\n  ErrorCode2[\"INVALID_TRANSACTION_OUTPUT\"] = \"invalid-transaction-output\";\n  ErrorCode2[\"INVALID_TRANSACTION_STATUS\"] = \"invalid-transaction-status\";\n  ErrorCode2[\"UNSUPPORTED_TRANSACTION_TYPE\"] = \"unsupported-transaction-type\";\n  ErrorCode2[\"TRANSACTION_ERROR\"] = \"transaction-error\";\n  ErrorCode2[\"INVALID_POLICY_TYPE\"] = \"invalid-policy-type\";\n  ErrorCode2[\"DUPLICATED_POLICY\"] = \"duplicated-policy\";\n  ErrorCode2[\"TRANSACTION_SQUEEZED_OUT\"] = \"transaction-squeezed-out\";\n  ErrorCode2[\"CONTRACT_SIZE_EXCEEDS_LIMIT\"] = \"contract-size-exceeds-limit\";\n  ErrorCode2[\"INVALID_CHUNK_SIZE_MULTIPLIER\"] = \"invalid-chunk-size-multiplier\";\n  ErrorCode2[\"MAX_INPUTS_EXCEEDED\"] = \"max-inputs-exceeded\";\n  ErrorCode2[\"FUNDS_TOO_LOW\"] = \"funds-too-low\";\n  ErrorCode2[\"MAX_OUTPUTS_EXCEEDED\"] = \"max-outputs-exceeded\";\n  ErrorCode2[\"ASSET_BURN_DETECTED\"] = \"asset-burn-detected\";\n  ErrorCode2[\"CHANGE_OUTPUT_COLLISION\"] = \"change-output-collision\";\n  ErrorCode2[\"DUPLICATE_CHANGE_OUTPUT_ACCOUNT\"] = \"duplicate-change-output-account\";\n  ErrorCode2[\"INVALID_RECEIPT_TYPE\"] = \"invalid-receipt-type\";\n  ErrorCode2[\"INVALID_WORD_LIST\"] = \"invalid-word-list\";\n  ErrorCode2[\"INVALID_MNEMONIC\"] = \"invalid-mnemonic\";\n  ErrorCode2[\"INVALID_ENTROPY\"] = \"invalid-entropy\";\n  ErrorCode2[\"INVALID_SEED\"] = \"invalid-seed\";\n  ErrorCode2[\"INVALID_CHECKSUM\"] = \"invalid-checksum\";\n  ErrorCode2[\"INVALID_PASSWORD\"] = \"invalid-password\";\n  ErrorCode2[\"ACCOUNT_REQUIRED\"] = \"account-required\";\n  ErrorCode2[\"UNLOCKED_WALLET_REQUIRED\"] = \"unlocked-wallet-required\";\n  ErrorCode2[\"NO_COINS_TO_CONSOLIDATE\"] = \"no-coins-to-consolidate\";\n  ErrorCode2[\"COINS_ASSET_ID_MISMATCH\"] = \"coins-asset-id-mismatch\";\n  ErrorCode2[\"ASSET_NOT_FOUND\"] = \"asset-not-found\";\n  ErrorCode2[\"NUMBER_TOO_BIG\"] = \"number-too-big\";\n  ErrorCode2[\"ERROR_BUILDING_BLOCK_EXPLORER_URL\"] = \"error-building-block-explorer-url\";\n  ErrorCode2[\"RPC_CONSISTENCY\"] = \"rpc-consistency\";\n  ErrorCode2[\"VITEPRESS_PLUGIN_ERROR\"] = \"vitepress-plugin-error\";\n  ErrorCode2[\"SCRIPT_REVERTED\"] = \"script-reverted\";\n  ErrorCode2[\"SCRIPT_RETURN_INVALID_TYPE\"] = \"script-return-invalid-type\";\n  ErrorCode2[\"STREAM_PARSING_ERROR\"] = \"stream-parsing-error\";\n  ErrorCode2[\"NODE_LAUNCH_FAILED\"] = \"node-launch-failed\";\n  ErrorCode2[\"UNKNOWN\"] = \"unknown\";\n  return ErrorCode2;\n})(ErrorCode || {});\n\n// src/fuel-error.ts\nimport { versions } from \"@fuel-ts/versions\";\nvar FuelError = class _FuelError extends Error {\n  static {\n    __name(this, \"FuelError\");\n  }\n  static CODES = ErrorCode;\n  VERSIONS = versions;\n  metadata;\n  rawError;\n  static parse(e) {\n    const error = e;\n    if (error.code === void 0) {\n      throw new _FuelError(\n        \"parse-failed\" /* PARSE_FAILED */,\n        \"Failed to parse the error object. The required 'code' property is missing.\"\n      );\n    }\n    const enumValues = Object.values(ErrorCode);\n    const codeIsKnown = enumValues.includes(error.code);\n    if (!codeIsKnown) {\n      throw new _FuelError(\n        \"parse-failed\" /* PARSE_FAILED */,\n        `Unknown error code: ${error.code}. Accepted codes: ${enumValues.join(\", \")}.`\n      );\n    }\n    return new _FuelError(error.code, error.message);\n  }\n  code;\n  constructor(code, message, metadata = {}, rawError = null) {\n    super(message);\n    this.code = code;\n    this.name = \"FuelError\";\n    this.metadata = metadata;\n    this.rawError = rawError;\n  }\n  toObject() {\n    const { code, name, message, metadata, VERSIONS, rawError } = this;\n    return { code, name, message, metadata, VERSIONS, rawError };\n  }\n};\nexport {\n  ErrorCode,\n  FuelError\n};\n//# sourceMappingURL=index.mjs.map","export default {}","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [number & 0x3ffffff];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [0];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this._strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // '0' - '9'\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    // 'A' - 'F'\n    } else if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    } else {\n      assert(false, 'Invalid character in ' + string);\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this._strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var b = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        b = c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        b = c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        b = c;\n      }\n      assert(c >= 0 && b < mul, 'Invalid character');\n      r += b;\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [0];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this._strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  function move (dest, src) {\n    dest.words = src.words;\n    dest.length = src.length;\n    dest.negative = src.negative;\n    dest.red = src.red;\n  }\n\n  BN.prototype._move = function _move (dest) {\n    move(dest, this);\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype._strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  // Check Symbol.for because not everywhere where Symbol defined\n  // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n  if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n    try {\n      BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n    } catch (e) {\n      BN.prototype.inspect = inspect;\n    }\n  } else {\n    BN.prototype.inspect = inspect;\n  }\n\n  function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  }\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modrn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16, 2);\n  };\n\n  if (Buffer) {\n    BN.prototype.toBuffer = function toBuffer (endian, length) {\n      return this.toArrayLike(Buffer, endian, length);\n    };\n  }\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  var allocate = function allocate (ArrayType, size) {\n    if (ArrayType.allocUnsafe) {\n      return ArrayType.allocUnsafe(size);\n    }\n    return new ArrayType(size);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    this._strip();\n\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    var res = allocate(ArrayType, reqLength);\n    var postfix = endian === 'le' ? 'LE' : 'BE';\n    this['_toArrayLike' + postfix](res, byteLength);\n    return res;\n  };\n\n  BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n    var position = 0;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position++] = word & 0xff;\n      if (position < res.length) {\n        res[position++] = (word >> 8) & 0xff;\n      }\n      if (position < res.length) {\n        res[position++] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position < res.length) {\n          res[position++] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position < res.length) {\n      res[position++] = carry;\n\n      while (position < res.length) {\n        res[position++] = 0;\n      }\n    }\n  };\n\n  BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n    var position = res.length - 1;\n    var carry = 0;\n\n    for (var i = 0, shift = 0; i < this.length; i++) {\n      var word = (this.words[i] << shift) | carry;\n\n      res[position--] = word & 0xff;\n      if (position >= 0) {\n        res[position--] = (word >> 8) & 0xff;\n      }\n      if (position >= 0) {\n        res[position--] = (word >> 16) & 0xff;\n      }\n\n      if (shift === 6) {\n        if (position >= 0) {\n          res[position--] = (word >> 24) & 0xff;\n        }\n        carry = 0;\n        shift = 0;\n      } else {\n        carry = word >>> 24;\n        shift += 2;\n      }\n    }\n\n    if (position >= 0) {\n      res[position--] = carry;\n\n      while (position >= 0) {\n        res[position--] = 0;\n      }\n    }\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] >>> wbit) & 0x01;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this._strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this._strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this._strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this._strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out._strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n    // var fftm = new FFTM();\n    // return fftm.mulp(self, num, out);\n    return bigMulTo(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out._strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this._strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) <= num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this._strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this._strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this._strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q._strip();\n    }\n    a._strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modrn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modrn = function modrn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return isNegNum ? -acc : acc;\n  };\n\n  // WARNING: DEPRECATED\n  BN.prototype.modn = function modn (num) {\n    return this.modrn(num);\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    var isNegNum = num < 0;\n    if (isNegNum) num = -num;\n\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    this._strip();\n    return isNegNum ? this.ineg() : this;\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this._strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is a BN v4 instance\n        r.strip();\n      } else {\n        // r is a BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n    move(a, a.umod(this.m)._forceRed(this));\n    return a;\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/bn.ts\nimport { ErrorCode, FuelError } from \"@fuel-ts/errors\";\nimport BnJs from \"bn.js\";\n\n// src/configs.ts\nvar DEFAULT_PRECISION = 9;\nvar DEFAULT_MIN_PRECISION = 3;\nvar DEFAULT_DECIMAL_UNITS = 9;\n\n// src/bn.ts\nvar BN = class _BN extends BnJs {\n  static {\n    __name(this, \"BN\");\n  }\n  MAX_U64 = \"0xFFFFFFFFFFFFFFFF\";\n  constructor(value, base, endian) {\n    let bnValue = value;\n    let bnBase = base;\n    if (_BN.isBN(value)) {\n      bnValue = value.toArray();\n    } else if (typeof value === \"string\" && value.slice(0, 2) === \"0x\") {\n      bnValue = value.substring(2);\n      bnBase = base || \"hex\";\n    }\n    if (typeof bnValue === \"number\" && bnValue > Number.MAX_SAFE_INTEGER) {\n      throw new FuelError(\n        ErrorCode.NUMBER_TOO_BIG,\n        `Value ${bnValue} is too large to be represented as a number, use string instead.`\n      );\n    }\n    super(bnValue == null ? 0 : bnValue, bnBase, endian);\n  }\n  // ANCHOR: HELPERS\n  // make sure we always include `0x` in hex strings\n  toString(base, length) {\n    const output = super.toString(base, length);\n    if (base === 16 || base === \"hex\") {\n      return `0x${output}`;\n    }\n    return output;\n  }\n  toHex(bytesPadding) {\n    const bytes = bytesPadding || 0;\n    const bytesLength = bytes * 2;\n    if (this.isNeg()) {\n      throw new FuelError(ErrorCode.CONVERTING_FAILED, \"Cannot convert negative value to hex.\");\n    }\n    if (bytesPadding && this.byteLength() > bytesPadding) {\n      throw new FuelError(\n        ErrorCode.CONVERTING_FAILED,\n        `Provided value ${this} is too large. It should fit within ${bytesPadding} bytes.`\n      );\n    }\n    return this.toString(16, bytesLength);\n  }\n  toBytes(bytesPadding) {\n    if (this.isNeg()) {\n      throw new FuelError(ErrorCode.CONVERTING_FAILED, \"Cannot convert negative value to bytes.\");\n    }\n    return Uint8Array.from(this.toArray(void 0, bytesPadding));\n  }\n  toJSON() {\n    return this.toString(16);\n  }\n  valueOf() {\n    return this.toString();\n  }\n  format(options) {\n    const {\n      units = DEFAULT_DECIMAL_UNITS,\n      precision: initialPrecision = DEFAULT_PRECISION,\n      minPrecision: initialMinPrecision = DEFAULT_MIN_PRECISION\n    } = options || {};\n    if (units === 0) {\n      return this.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n    }\n    const minPrecision = initialMinPrecision > initialPrecision ? initialPrecision : initialMinPrecision;\n    const precision = initialPrecision > initialMinPrecision ? initialPrecision : initialMinPrecision;\n    const formattedUnits = this.formatUnits(units);\n    const [integerPart, fractionalPart = \"\"] = formattedUnits.split(\".\");\n    const formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n    if (precision === 0) {\n      return formattedInteger;\n    }\n    let formattedFractional = fractionalPart.replace(/0+$/, \"\");\n    if (formattedFractional.length > precision) {\n      if (integerPart === \"0\") {\n        const firstNonZeroIndex = formattedFractional.search(/[1-9]/);\n        if (firstNonZeroIndex >= 0 && firstNonZeroIndex < precision) {\n          formattedFractional = formattedFractional.slice(0, precision);\n        } else {\n          formattedFractional = formattedFractional.slice(0, firstNonZeroIndex + 1);\n        }\n      } else {\n        formattedFractional = formattedFractional.slice(0, precision);\n      }\n    } else {\n      formattedFractional = formattedFractional.slice(0, precision);\n    }\n    if (formattedFractional.length < minPrecision) {\n      formattedFractional = formattedFractional.padEnd(minPrecision, \"0\");\n    }\n    if (formattedFractional === \"\" && minPrecision === 0) {\n      return formattedInteger;\n    }\n    return formattedFractional ? `${formattedInteger}.${formattedFractional}` : formattedInteger;\n  }\n  formatUnits(units = DEFAULT_DECIMAL_UNITS) {\n    const valueString = this.toString();\n    const valueLength = valueString.length;\n    if (valueLength <= units) {\n      const paddedZeros = \"0\".repeat(units - valueLength);\n      return `0.${paddedZeros}${valueString}`;\n    }\n    const integerPart = valueString.slice(0, valueLength - units);\n    const fractionalPart = valueString.slice(valueLength - units);\n    return `${integerPart}.${fractionalPart}`;\n  }\n  // END ANCHOR: HELPERS\n  // ANCHOR: OVERRIDES to accept better inputs\n  add(v) {\n    return this.caller(v, \"add\");\n  }\n  pow(v) {\n    return this.caller(v, \"pow\");\n  }\n  sub(v) {\n    return this.caller(v, \"sub\");\n  }\n  div(v) {\n    return this.caller(v, \"div\");\n  }\n  mul(v) {\n    return this.caller(v, \"mul\");\n  }\n  mod(v) {\n    return this.caller(v, \"mod\");\n  }\n  divRound(v) {\n    return this.caller(v, \"divRound\");\n  }\n  lt(v) {\n    return this.caller(v, \"lt\");\n  }\n  lte(v) {\n    return this.caller(v, \"lte\");\n  }\n  gt(v) {\n    return this.caller(v, \"gt\");\n  }\n  gte(v) {\n    return this.caller(v, \"gte\");\n  }\n  eq(v) {\n    return this.caller(v, \"eq\");\n  }\n  cmp(v) {\n    return this.caller(v, \"cmp\");\n  }\n  // END ANCHOR: OVERRIDES to accept better inputs\n  // ANCHOR: OVERRIDES to output our BN type\n  sqr() {\n    return new _BN(super.sqr().toArray());\n  }\n  neg() {\n    return new _BN(super.neg().toArray());\n  }\n  abs() {\n    return new _BN(super.abs().toArray());\n  }\n  toTwos(width) {\n    return new _BN(super.toTwos(width).toArray());\n  }\n  fromTwos(width) {\n    return new _BN(super.fromTwos(width).toArray());\n  }\n  // END ANCHOR: OVERRIDES to output our BN type\n  // ANCHOR: OVERRIDES to avoid losing references\n  caller(v, methodName) {\n    const output = super[methodName](new _BN(v));\n    if (_BN.isBN(output)) {\n      return new _BN(output.toArray());\n    }\n    if (typeof output === \"boolean\") {\n      return output;\n    }\n    return output;\n  }\n  clone() {\n    return new _BN(this.toArray());\n  }\n  mulTo(num, out) {\n    const output = new BnJs(this.toArray()).mulTo(num, out);\n    return new _BN(output.toArray());\n  }\n  egcd(p) {\n    const { a, b, gcd } = new BnJs(this.toArray()).egcd(p);\n    return {\n      a: new _BN(a.toArray()),\n      b: new _BN(b.toArray()),\n      gcd: new _BN(gcd.toArray())\n    };\n  }\n  divmod(num, mode, positive) {\n    const { div, mod } = new BnJs(this.toArray()).divmod(new _BN(num), mode, positive);\n    return {\n      div: new _BN(div?.toArray()),\n      mod: new _BN(mod?.toArray())\n    };\n  }\n  maxU64() {\n    return this.gte(this.MAX_U64) ? new _BN(this.MAX_U64) : this;\n  }\n  max(num) {\n    return this.gte(num) ? new _BN(num) : this;\n  }\n  normalizeZeroToOne() {\n    return this.isZero() ? new _BN(1) : this;\n  }\n  // END ANCHOR: OVERRIDES to avoid losing references\n};\nvar bn = /* @__PURE__ */ __name((value, base, endian) => new BN(value, base, endian), \"bn\");\nbn.parseUnits = (value, units = DEFAULT_DECIMAL_UNITS) => {\n  const valueToParse = value === \".\" ? \"0.\" : value;\n  const [valueUnits = \"0\", valueDecimals = \"0\"] = valueToParse.split(\".\");\n  const length = valueDecimals.length;\n  if (units === 0) {\n    const valueWithoutDecimals = valueToParse.replace(\",\", \"\").split(\".\")[0];\n    return bn(valueWithoutDecimals);\n  }\n  if (length > units) {\n    throw new FuelError(\n      ErrorCode.CONVERTING_FAILED,\n      `Decimal can't have more than ${units} digits.`\n    );\n  }\n  const decimals = Array.from({ length: units }).fill(\"0\");\n  decimals.splice(0, length, valueDecimals);\n  const amount = `${valueUnits.replaceAll(\",\", \"\")}${decimals.join(\"\")}`;\n  return bn(amount);\n};\n\n// src/decimal.ts\nfunction toFixed(value, options) {\n  const { precision = DEFAULT_PRECISION, minPrecision = DEFAULT_MIN_PRECISION } = options || {};\n  const [valueUnits = \"0\", valueDecimals = \"0\"] = String(value || \"0.0\").split(\".\");\n  const groupRegex = /(\\d)(?=(\\d{3})+\\b)/g;\n  const units = valueUnits.replace(groupRegex, \"$1,\");\n  let decimals = valueDecimals.slice(0, precision);\n  if (minPrecision < precision) {\n    const trimmedDecimal = decimals.match(/.*[1-9]{1}/);\n    const lastNonZeroIndex = trimmedDecimal?.[0].length || 0;\n    const keepChars = Math.max(minPrecision, lastNonZeroIndex);\n    decimals = decimals.slice(0, keepChars);\n  }\n  const decimalPortion = decimals ? `.${decimals}` : \"\";\n  return `${units}${decimalPortion}`;\n}\n__name(toFixed, \"toFixed\");\n\n// src/functional.ts\nfunction toNumber(value) {\n  return bn(value).toNumber();\n}\n__name(toNumber, \"toNumber\");\nfunction toHex(value, bytesPadding) {\n  return bn(value).toHex(bytesPadding);\n}\n__name(toHex, \"toHex\");\nfunction toBytes(value, bytesPadding) {\n  return bn(value).toBytes(bytesPadding);\n}\n__name(toBytes, \"toBytes\");\nfunction formatUnits(value, units) {\n  return bn(value).formatUnits(units);\n}\n__name(formatUnits, \"formatUnits\");\nfunction format(value, options) {\n  return bn(value).format(options);\n}\n__name(format, \"format\");\n\n// src/math.ts\nfunction max(...numbers) {\n  return numbers.reduce((prev, cur) => bn(cur).gt(prev) ? bn(cur) : prev, bn(0));\n}\n__name(max, \"max\");\nfunction multiply(...numbers) {\n  return bn(Math.ceil(numbers.reduce((a, b) => bn(a).mul(b), bn(1)).toNumber()));\n}\n__name(multiply, \"multiply\");\nexport {\n  BN,\n  bn,\n  format,\n  formatUnits,\n  max,\n  multiply,\n  toBytes,\n  toFixed,\n  toHex,\n  toNumber\n};\n//# sourceMappingURL=index.mjs.map","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n    var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n        c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n    ], { type: 'text/javascript' }))));\n    w.onmessage = function (e) {\n        var d = e.data, ed = d.$e$;\n        if (ed) {\n            var err = new Error(ed[0]);\n            err['code'] = ed[1];\n            err.stack = ed[2];\n            cb(err, null);\n        }\n        else\n            cb(null, d);\n    };\n    w.postMessage(msg, transfer);\n    return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n    var b = new u16(31);\n    for (var i = 0; i < 31; ++i) {\n        b[i] = start += 1 << eb[i - 1];\n    }\n    // numbers here are at max 18 bits\n    var r = new i32(b[30]);\n    for (var i = 1; i < 30; ++i) {\n        for (var j = b[i]; j < b[i + 1]; ++j) {\n            r[j] = ((j - b[i]) << 5) | i;\n        }\n    }\n    return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n    // reverse table algorithm from SO\n    var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n    x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n    x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n    rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n    var s = cd.length;\n    // index\n    var i = 0;\n    // u16 \"map\": index -> # of codes with bit length = index\n    var l = new u16(mb);\n    // length of cd must be 288 (total # of codes)\n    for (; i < s; ++i) {\n        if (cd[i])\n            ++l[cd[i] - 1];\n    }\n    // u16 \"map\": index -> minimum code for bit length = index\n    var le = new u16(mb);\n    for (i = 1; i < mb; ++i) {\n        le[i] = (le[i - 1] + l[i - 1]) << 1;\n    }\n    var co;\n    if (r) {\n        // u16 \"map\": index -> number of actual bits, symbol for code\n        co = new u16(1 << mb);\n        // bits to remove for reverser\n        var rvb = 15 - mb;\n        for (i = 0; i < s; ++i) {\n            // ignore 0 lengths\n            if (cd[i]) {\n                // num encoding both symbol and bits read\n                var sv = (i << 4) | cd[i];\n                // free bits\n                var r_1 = mb - cd[i];\n                // start value\n                var v = le[cd[i] - 1]++ << r_1;\n                // m is end value\n                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n                    // every 16 bit value starting with the code yields the same result\n                    co[rev[v] >> rvb] = sv;\n                }\n            }\n        }\n    }\n    else {\n        co = new u16(s);\n        for (i = 0; i < s; ++i) {\n            if (cd[i]) {\n                co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n            }\n        }\n    }\n    return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n    flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n    flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n    flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n    flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n    fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n    var m = a[0];\n    for (var i = 1; i < a.length; ++i) {\n        if (a[i] > m)\n            m = a[i];\n    }\n    return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n    if (s == null || s < 0)\n        s = 0;\n    if (e == null || e > v.length)\n        e = v.length;\n    // can't use .constructor in case user-supplied\n    return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n    UnexpectedEOF: 0,\n    InvalidBlockType: 1,\n    InvalidLengthLiteral: 2,\n    InvalidDistance: 3,\n    StreamFinished: 4,\n    NoStreamHandler: 5,\n    InvalidHeader: 6,\n    NoCallback: 7,\n    InvalidUTF8: 8,\n    ExtraFieldTooLong: 9,\n    InvalidDate: 10,\n    FilenameTooLong: 11,\n    StreamFinishing: 12,\n    InvalidZipData: 13,\n    UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n    'unexpected EOF',\n    'invalid block type',\n    'invalid length/literal',\n    'invalid distance',\n    'stream finished',\n    'no stream handler',\n    ,\n    'no callback',\n    'invalid UTF-8 data',\n    'extra field too long',\n    'date not in range 1980-2099',\n    'filename too long',\n    'stream finishing',\n    'invalid zip data'\n    // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n    var e = new Error(msg || ec[ind]);\n    e.code = ind;\n    if (Error.captureStackTrace)\n        Error.captureStackTrace(e, err);\n    if (!nt)\n        throw e;\n    return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n    // source length       dict length\n    var sl = dat.length, dl = dict ? dict.length : 0;\n    if (!sl || st.f && !st.l)\n        return buf || new u8(0);\n    var noBuf = !buf;\n    // have to estimate size\n    var resize = noBuf || st.i != 2;\n    // no state\n    var noSt = st.i;\n    // Assumes roughly 33% compression ratio average\n    if (noBuf)\n        buf = new u8(sl * 3);\n    // ensure buffer can fit at least l elements\n    var cbuf = function (l) {\n        var bl = buf.length;\n        // need to increase size to fit\n        if (l > bl) {\n            // Double or set to necessary, whichever is greater\n            var nbuf = new u8(Math.max(bl * 2, l));\n            nbuf.set(buf);\n            buf = nbuf;\n        }\n    };\n    //  last chunk         bitpos           bytes\n    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n    // total bits\n    var tbts = sl * 8;\n    do {\n        if (!lm) {\n            // BFINAL - this is only 1 when last chunk is next\n            final = bits(dat, pos, 1);\n            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n            var type = bits(dat, pos + 1, 3);\n            pos += 3;\n            if (!type) {\n                // go to end of byte boundary\n                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n                if (t > sl) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                // ensure size\n                if (resize)\n                    cbuf(bt + l);\n                // Copy over uncompressed data\n                buf.set(dat.subarray(s, t), bt);\n                // Get new bitpos, update byte count\n                st.b = bt += l, st.p = pos = t * 8, st.f = final;\n                continue;\n            }\n            else if (type == 1)\n                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n            else if (type == 2) {\n                //  literal                            lengths\n                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n                var tl = hLit + bits(dat, pos + 5, 31) + 1;\n                pos += 14;\n                // length+distance tree\n                var ldt = new u8(tl);\n                // code length tree\n                var clt = new u8(19);\n                for (var i = 0; i < hcLen; ++i) {\n                    // use index map to get real code\n                    clt[clim[i]] = bits(dat, pos + i * 3, 7);\n                }\n                pos += hcLen * 3;\n                // code lengths bits\n                var clb = max(clt), clbmsk = (1 << clb) - 1;\n                // code lengths map\n                var clm = hMap(clt, clb, 1);\n                for (var i = 0; i < tl;) {\n                    var r = clm[bits(dat, pos, clbmsk)];\n                    // bits read\n                    pos += r & 15;\n                    // symbol\n                    var s = r >> 4;\n                    // code length to copy\n                    if (s < 16) {\n                        ldt[i++] = s;\n                    }\n                    else {\n                        //  copy   count\n                        var c = 0, n = 0;\n                        if (s == 16)\n                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n                        else if (s == 17)\n                            n = 3 + bits(dat, pos, 7), pos += 3;\n                        else if (s == 18)\n                            n = 11 + bits(dat, pos, 127), pos += 7;\n                        while (n--)\n                            ldt[i++] = c;\n                    }\n                }\n                //    length tree                 distance tree\n                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n                // max length bits\n                lbt = max(lt);\n                // max dist bits\n                dbt = max(dt);\n                lm = hMap(lt, lbt, 1);\n                dm = hMap(dt, dbt, 1);\n            }\n            else\n                err(1);\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n        }\n        // Make sure the buffer can hold this + the largest possible addition\n        // Maximum chunk size (practically, theoretically infinite) is 2^17\n        if (resize)\n            cbuf(bt + 131072);\n        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n        var lpos = pos;\n        for (;; lpos = pos) {\n            // bits read, code\n            var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n            pos += c & 15;\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n            if (!c)\n                err(2);\n            if (sym < 256)\n                buf[bt++] = sym;\n            else if (sym == 256) {\n                lpos = pos, lm = null;\n                break;\n            }\n            else {\n                var add = sym - 254;\n                // no extra bits needed if less\n                if (sym > 264) {\n                    // index\n                    var i = sym - 257, b = fleb[i];\n                    add = bits(dat, pos, (1 << b) - 1) + fl[i];\n                    pos += b;\n                }\n                // dist\n                var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n                if (!d)\n                    err(3);\n                pos += d & 15;\n                var dt = fd[dsym];\n                if (dsym > 3) {\n                    var b = fdeb[dsym];\n                    dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n                }\n                if (pos > tbts) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                if (resize)\n                    cbuf(bt + 131072);\n                var end = bt + add;\n                if (bt < dt) {\n                    var shift = dl - dt, dend = Math.min(dt, end);\n                    if (shift + bt < 0)\n                        err(3);\n                    for (; bt < dend; ++bt)\n                        buf[bt] = dict[shift + bt];\n                }\n                for (; bt < end; ++bt)\n                    buf[bt] = buf[bt - dt];\n            }\n        }\n        st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n        if (lm)\n            final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n    } while (!final);\n    // don't reallocate for streams or user buffers\n    return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >> 8;\n    d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n    // Need extra info to make a tree\n    var t = [];\n    for (var i = 0; i < d.length; ++i) {\n        if (d[i])\n            t.push({ s: i, f: d[i] });\n    }\n    var s = t.length;\n    var t2 = t.slice();\n    if (!s)\n        return { t: et, l: 0 };\n    if (s == 1) {\n        var v = new u8(t[0].s + 1);\n        v[t[0].s] = 1;\n        return { t: v, l: 1 };\n    }\n    t.sort(function (a, b) { return a.f - b.f; });\n    // after i2 reaches last ind, will be stopped\n    // freq must be greater than largest possible number of symbols\n    t.push({ s: -1, f: 25001 });\n    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n    // efficient algorithm from UZIP.js\n    // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n    // symbols that combined have high freq, will start processing i2 (high-freq,\n    // non-composite) symbols instead\n    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n    while (i1 != s - 1) {\n        l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n    }\n    var maxSym = t2[0].s;\n    for (var i = 1; i < s; ++i) {\n        if (t2[i].s > maxSym)\n            maxSym = t2[i].s;\n    }\n    // code lengths\n    var tr = new u16(maxSym + 1);\n    // max bits in tree\n    var mbt = ln(t[i1 - 1], tr, 0);\n    if (mbt > mb) {\n        // more algorithms from UZIP.js\n        // TODO: find out how this code works (debt)\n        //  ind    debt\n        var i = 0, dt = 0;\n        //    left            cost\n        var lft = mbt - mb, cst = 1 << lft;\n        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n        for (; i < s; ++i) {\n            var i2_1 = t2[i].s;\n            if (tr[i2_1] > mb) {\n                dt += cst - (1 << (mbt - tr[i2_1]));\n                tr[i2_1] = mb;\n            }\n            else\n                break;\n        }\n        dt >>= lft;\n        while (dt > 0) {\n            var i2_2 = t2[i].s;\n            if (tr[i2_2] < mb)\n                dt -= 1 << (mb - tr[i2_2]++ - 1);\n            else\n                ++i;\n        }\n        for (; i >= 0 && dt; --i) {\n            var i2_3 = t2[i].s;\n            if (tr[i2_3] == mb) {\n                --tr[i2_3];\n                ++dt;\n            }\n        }\n        mbt = mb;\n    }\n    return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n    return n.s == -1\n        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n        : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n    var s = c.length;\n    // Note that the semicolon was intentional\n    while (s && !c[--s])\n        ;\n    var cl = new u16(++s);\n    //  ind      num         streak\n    var cli = 0, cln = c[0], cls = 1;\n    var w = function (v) { cl[cli++] = v; };\n    for (var i = 1; i <= s; ++i) {\n        if (c[i] == cln && i != s)\n            ++cls;\n        else {\n            if (!cln && cls > 2) {\n                for (; cls > 138; cls -= 138)\n                    w(32754);\n                if (cls > 2) {\n                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n                    cls = 0;\n                }\n            }\n            else if (cls > 3) {\n                w(cln), --cls;\n                for (; cls > 6; cls -= 6)\n                    w(8304);\n                if (cls > 2)\n                    w(((cls - 3) << 5) | 8208), cls = 0;\n            }\n            while (cls--)\n                w(cln);\n            cls = 1;\n            cln = c[i];\n        }\n    }\n    return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n    var l = 0;\n    for (var i = 0; i < cl.length; ++i)\n        l += cf[i] * cl[i];\n    return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n    // no need to write 00 as type: TypedArray defaults to 0\n    var s = dat.length;\n    var o = shft(pos + 2);\n    out[o] = s & 255;\n    out[o + 1] = s >> 8;\n    out[o + 2] = out[o] ^ 255;\n    out[o + 3] = out[o + 1] ^ 255;\n    for (var i = 0; i < s; ++i)\n        out[o + i + 4] = dat[i];\n    return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n    wbits(out, p++, final);\n    ++lf[256];\n    var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n    var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n    var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n    var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n    var lcfreq = new u16(19);\n    for (var i = 0; i < lclt.length; ++i)\n        ++lcfreq[lclt[i] & 31];\n    for (var i = 0; i < lcdt.length; ++i)\n        ++lcfreq[lcdt[i] & 31];\n    var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n    var nlcc = 19;\n    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n        ;\n    var flen = (bl + 5) << 3;\n    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n    if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n        return wfblk(out, p, dat.subarray(bs, bs + bl));\n    var lm, ll, dm, dl;\n    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n    if (dtlen < ftlen) {\n        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n        var llm = hMap(lct, mlcb, 0);\n        wbits(out, p, nlc - 257);\n        wbits(out, p + 5, ndc - 1);\n        wbits(out, p + 10, nlcc - 4);\n        p += 14;\n        for (var i = 0; i < nlcc; ++i)\n            wbits(out, p + 3 * i, lct[clim[i]]);\n        p += 3 * nlcc;\n        var lcts = [lclt, lcdt];\n        for (var it = 0; it < 2; ++it) {\n            var clct = lcts[it];\n            for (var i = 0; i < clct.length; ++i) {\n                var len = clct[i] & 31;\n                wbits(out, p, llm[len]), p += lct[len];\n                if (len > 15)\n                    wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n            }\n        }\n    }\n    else {\n        lm = flm, ll = flt, dm = fdm, dl = fdt;\n    }\n    for (var i = 0; i < li; ++i) {\n        var sym = syms[i];\n        if (sym > 255) {\n            var len = (sym >> 18) & 31;\n            wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n            if (len > 7)\n                wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n            var dst = sym & 31;\n            wbits16(out, p, dm[dst]), p += dl[dst];\n            if (dst > 3)\n                wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n        }\n        else {\n            wbits16(out, p, lm[sym]), p += ll[sym];\n        }\n    }\n    wbits16(out, p, lm[256]);\n    return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n    var s = st.z || dat.length;\n    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n    // writing to this writes to the output buffer\n    var w = o.subarray(pre, o.length - post);\n    var lst = st.l;\n    var pos = (st.r || 0) & 7;\n    if (lvl) {\n        if (pos)\n            w[0] = st.r >> 3;\n        var opt = deo[lvl - 1];\n        var n = opt >> 13, c = opt & 8191;\n        var msk_1 = (1 << plvl) - 1;\n        //    prev 2-byte val map    curr 2-byte val map\n        var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n        // 24576 is an arbitrary number of maximum symbols per block\n        // 424 buffer for last block\n        var syms = new i32(25000);\n        // length/literal freq   distance freq\n        var lf = new u16(288), df = new u16(32);\n        //  l/lcnt  exbits  index          l/lind  waitdx          blkpos\n        var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n        for (; i + 2 < s; ++i) {\n            // hash value\n            var hv = hsh(i);\n            // index mod 32768    previous index mod\n            var imod = i & 32767, pimod = head[hv];\n            prev[imod] = pimod;\n            head[hv] = imod;\n            // We always should modify head and prev, but only add symbols if\n            // this data is not yet processed (\"wait\" for wait index)\n            if (wi <= i) {\n                // bytes remaining\n                var rem = s - i;\n                if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n                    li = lc_1 = eb = 0, bs = i;\n                    for (var j = 0; j < 286; ++j)\n                        lf[j] = 0;\n                    for (var j = 0; j < 30; ++j)\n                        df[j] = 0;\n                }\n                //  len    dist   chain\n                var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n                if (rem > 2 && hv == hsh(i - dif)) {\n                    var maxn = Math.min(n, rem) - 1;\n                    var maxd = Math.min(32767, i);\n                    // max possible length\n                    // not capped at dif because decompressors implement \"rolling\" index population\n                    var ml = Math.min(258, rem);\n                    while (dif <= maxd && --ch_1 && imod != pimod) {\n                        if (dat[i + l] == dat[i + l - dif]) {\n                            var nl = 0;\n                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n                                ;\n                            if (nl > l) {\n                                l = nl, d = dif;\n                                // break out early when we reach \"nice\" (we are satisfied enough)\n                                if (nl > maxn)\n                                    break;\n                                // now, find the rarest 2-byte sequence within this\n                                // length of literals and search for that instead.\n                                // Much faster than just using the start\n                                var mmd = Math.min(dif, nl - 2);\n                                var md = 0;\n                                for (var j = 0; j < mmd; ++j) {\n                                    var ti = i - dif + j & 32767;\n                                    var pti = prev[ti];\n                                    var cd = ti - pti & 32767;\n                                    if (cd > md)\n                                        md = cd, pimod = ti;\n                                }\n                            }\n                        }\n                        // check the previous match\n                        imod = pimod, pimod = prev[imod];\n                        dif += imod - pimod & 32767;\n                    }\n                }\n                // d will be nonzero only when a match was found\n                if (d) {\n                    // store both dist and len data in one int32\n                    // Make sure this is recognized as a len/dist with 28th bit (2^28)\n                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n                    var lin = revfl[l] & 31, din = revfd[d] & 31;\n                    eb += fleb[lin] + fdeb[din];\n                    ++lf[257 + lin];\n                    ++df[din];\n                    wi = i + l;\n                    ++lc_1;\n                }\n                else {\n                    syms[li++] = dat[i];\n                    ++lf[dat[i]];\n                }\n            }\n        }\n        for (i = Math.max(i, wi); i < s; ++i) {\n            syms[li++] = dat[i];\n            ++lf[dat[i]];\n        }\n        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n        if (!lst) {\n            st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n            // shft(pos) now 1 less if pos & 7 != 0\n            pos -= 7;\n            st.h = head, st.p = prev, st.i = i, st.w = wi;\n        }\n    }\n    else {\n        for (var i = st.w || 0; i < s + lst; i += 65535) {\n            // end\n            var e = i + 65535;\n            if (e >= s) {\n                // write final block\n                w[(pos / 8) | 0] = lst;\n                e = s;\n            }\n            pos = wfblk(w, pos + 1, dat.subarray(i, e));\n        }\n        st.i = s;\n    }\n    return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n    var t = new Int32Array(256);\n    for (var i = 0; i < 256; ++i) {\n        var c = i, k = 9;\n        while (--k)\n            c = ((c & 1) && -306674912) ^ (c >>> 1);\n        t[i] = c;\n    }\n    return t;\n})();\n// CRC32\nvar crc = function () {\n    var c = -1;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var cr = c;\n            for (var i = 0; i < d.length; ++i)\n                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n            c = cr;\n        },\n        d: function () { return ~c; }\n    };\n};\n// Adler32\nvar adler = function () {\n    var a = 1, b = 0;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var n = a, m = b;\n            var l = d.length | 0;\n            for (var i = 0; i != l;) {\n                var e = Math.min(i + 2655, l);\n                for (; i < e; ++i)\n                    m += n += d[i];\n                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n            }\n            a = n, b = m;\n        },\n        d: function () {\n            a %= 65521, b %= 65521;\n            return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n        }\n    };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n    if (!st) {\n        st = { l: 1 };\n        if (opt.dictionary) {\n            var dict = opt.dictionary.subarray(-32768);\n            var newDat = new u8(dict.length + dat.length);\n            newDat.set(dict);\n            newDat.set(dat, dict.length);\n            dat = newDat;\n            st.w = dict.length;\n        }\n    }\n    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n    var o = {};\n    for (var k in a)\n        o[k] = a[k];\n    for (var k in b)\n        o[k] = b[k];\n    return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n    var dt = fn();\n    var st = fn.toString();\n    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n    for (var i = 0; i < dt.length; ++i) {\n        var v = dt[i], k = ks[i];\n        if (typeof v == 'function') {\n            fnStr += ';' + k + '=';\n            var st_1 = v.toString();\n            if (v.prototype) {\n                // for global objects\n                if (st_1.indexOf('[native code]') != -1) {\n                    var spInd = st_1.indexOf(' ', 8) + 1;\n                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n                }\n                else {\n                    fnStr += st_1;\n                    for (var t in v.prototype)\n                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n                }\n            }\n            else\n                fnStr += st_1;\n        }\n        else\n            td[k] = v;\n    }\n    return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n    var tl = [];\n    for (var k in v) {\n        if (v[k].buffer) {\n            tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n        }\n    }\n    return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n    if (!ch[id]) {\n        var fnStr = '', td_1 = {}, m = fns.length - 1;\n        for (var i = 0; i < m; ++i)\n            fnStr = wcln(fns[i], fnStr, td_1);\n        ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n    }\n    var td = mrg({}, ch[id].e);\n    return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n    out: o.size && new u8(o.size),\n    dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n    var w = wrkr(fns, init, id, function (err, dat) {\n        w.terminate();\n        cb(err, dat);\n    });\n    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n    return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n    return function (ev) {\n        if (ev.data.length) {\n            strm.push(ev.data[0], ev.data[1]);\n            postMessage([ev.data[0].length]);\n        }\n        else\n            strm.flush();\n    };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n    var t;\n    var w = wrkr(fns, init, id, function (err, dat) {\n        if (err)\n            w.terminate(), strm.ondata.call(strm, err);\n        else if (!Array.isArray(dat))\n            ext(dat);\n        else if (dat.length == 1) {\n            strm.queuedSize -= dat[0];\n            if (strm.ondrain)\n                strm.ondrain(dat[0]);\n        }\n        else {\n            if (dat[1])\n                w.terminate();\n            strm.ondata.call(strm, err, dat[0], dat[1]);\n        }\n    });\n    w.postMessage(opts);\n    strm.queuedSize = 0;\n    strm.push = function (d, f) {\n        if (!strm.ondata)\n            err(5);\n        if (t)\n            strm.ondata(err(4, 0, 1), null, !!f);\n        strm.queuedSize += d.length;\n        w.postMessage([d, t = f], [d.buffer]);\n    };\n    strm.terminate = function () { w.terminate(); };\n    if (flush) {\n        strm.flush = function () { w.postMessage([]); };\n    }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n    for (; v; ++b)\n        d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n    var fn = o.filename;\n    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n    if (o.mtime != 0)\n        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n    if (fn) {\n        c[3] = 8;\n        for (var i = 0; i <= fn.length; ++i)\n            c[i + 10] = fn.charCodeAt(i);\n    }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n    if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n        err(6, 'invalid gzip data');\n    var flg = d[3];\n    var st = 10;\n    if (flg & 4)\n        st += (d[10] | d[11] << 8) + 2;\n    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n        ;\n    return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n    var l = d.length;\n    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n    c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n    c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n    if (o.dictionary) {\n        var h = adler();\n        h.p(o.dictionary);\n        wbytes(c, 2, h.d());\n    }\n};\n// zlib start\nvar zls = function (d, dict) {\n    if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n        err(6, 'invalid zlib data');\n    if ((d[1] >> 5 & 1) == +!dict)\n        err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n    return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n    if (typeof opts == 'function')\n        cb = opts, opts = {};\n    this.ondata = cb;\n    return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n    function Deflate(opts, cb) {\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        this.o = opts || {};\n        this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n        // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n        // 98304 = 32768 (lookback) + 65536 (common chunk size)\n        this.b = new u8(98304);\n        if (this.o.dictionary) {\n            var dict = this.o.dictionary.subarray(-32768);\n            this.b.set(dict, 32768 - dict.length);\n            this.s.i = 32768 - dict.length;\n        }\n    }\n    Deflate.prototype.p = function (c, f) {\n        this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Deflate.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        var endLen = chunk.length + this.s.z;\n        if (endLen > this.b.length) {\n            if (endLen > 2 * this.b.length - 32768) {\n                var newBuf = new u8(endLen & -32768);\n                newBuf.set(this.b.subarray(0, this.s.z));\n                this.b = newBuf;\n            }\n            var split = this.b.length - this.s.z;\n            this.b.set(chunk.subarray(0, split), this.s.z);\n            this.s.z = this.b.length;\n            this.p(this.b, false);\n            this.b.set(this.b.subarray(-32768));\n            this.b.set(chunk.subarray(split), 32768);\n            this.s.z = chunk.length - split + 32768;\n            this.s.i = 32766, this.s.w = 32768;\n        }\n        else {\n            this.b.set(chunk, this.s.z);\n            this.s.z += chunk.length;\n        }\n        this.s.l = final & 1;\n        if (this.s.z > this.s.w + 8191 || final) {\n            this.p(this.b, final || false);\n            this.s.w = this.s.i, this.s.i -= 2;\n        }\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * deflated output for small inputs.\n     */\n    Deflate.prototype.flush = function () {\n        if (!this.ondata)\n            err(5);\n        if (this.s.l)\n            err(4);\n        this.p(this.b, false);\n        this.s.w = this.s.i, this.s.i -= 2;\n    };\n    return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n    function AsyncDeflate(opts, cb) {\n        astrmify([\n            bDflt,\n            function () { return [astrm, Deflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Deflate(ev.data);\n            onmessage = astrm(strm);\n        }, 6, 1);\n    }\n    return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n    return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n    function Inflate(opts, cb) {\n        // no StrmOpt here to avoid adding to workerizer\n        if (typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n        this.s = { i: 0, b: dict ? dict.length : 0 };\n        this.o = new u8(32768);\n        this.p = new u8(0);\n        if (dict)\n            this.o.set(dict);\n    }\n    Inflate.prototype.e = function (c) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        if (!this.p.length)\n            this.p = c;\n        else if (c.length) {\n            var n = new u8(this.p.length + c.length);\n            n.set(this.p), n.set(c, this.p.length), this.p = n;\n        }\n    };\n    Inflate.prototype.c = function (final) {\n        this.s.i = +(this.d = final || false);\n        var bts = this.s.b;\n        var dt = inflt(this.p, this.s, this.o);\n        this.ondata(slc(dt, bts, this.s.b), this.d);\n        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n    };\n    /**\n     * Pushes a chunk to be inflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the final chunk\n     */\n    Inflate.prototype.push = function (chunk, final) {\n        this.e(chunk), this.c(final);\n    };\n    return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n    function AsyncInflate(opts, cb) {\n        astrmify([\n            bInflt,\n            function () { return [astrm, Inflate]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Inflate(ev.data);\n            onmessage = astrm(strm);\n        }, 7, 0);\n    }\n    return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt\n    ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n    return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n    function Gzip(opts, cb) {\n        this.c = crc();\n        this.l = 0;\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gzip.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        this.l += chunk.length;\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Gzip.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n        if (this.v)\n            gzh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * GZIPped output for small inputs.\n     */\n    Gzip.prototype.flush = function () {\n        Deflate.prototype.flush.call(this);\n    };\n    return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n    function AsyncGzip(opts, cb) {\n        astrmify([\n            bDflt,\n            gze,\n            function () { return [astrm, Deflate, Gzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gzip(ev.data);\n            onmessage = astrm(strm);\n        }, 8, 1);\n    }\n    return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        gze,\n        function () { return [gzipSync]; }\n    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var c = crc(), l = data.length;\n    c.p(data);\n    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n    function Gunzip(opts, cb) {\n        this.v = 1;\n        this.r = 0;\n        Inflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GUNZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gunzip.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        this.r += chunk.length;\n        if (this.v) {\n            var p = this.p.subarray(this.v - 1);\n            var s = p.length > 3 ? gzs(p) : 4;\n            if (s > p.length) {\n                if (!final)\n                    return;\n            }\n            else if (this.v > 1 && this.onmember) {\n                this.onmember(this.r - p.length);\n            }\n            this.p = p.subarray(s), this.v = 0;\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n        // process concatenated GZIP\n        if (this.s.f && !this.s.l && !final) {\n            this.v = shft(this.s.p) + 9;\n            this.s = { i: 0 };\n            this.o = new u8(0);\n            this.push(new u8(0), final);\n        }\n    };\n    return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n    function AsyncGunzip(opts, cb) {\n        var _this = this;\n        astrmify([\n            bInflt,\n            guze,\n            function () { return [astrm, Inflate, Gunzip]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Gunzip(ev.data);\n            strm.onmember = function (offset) { return postMessage(offset); };\n            onmessage = astrm(strm);\n        }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n    }\n    return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        guze,\n        function () { return [gunzipSync]; }\n    ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n    var st = gzs(data);\n    if (st + 8 > data.length)\n        err(6, 'invalid gzip data');\n    return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n    function Zlib(opts, cb) {\n        this.c = adler();\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be zlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Zlib.prototype.push = function (chunk, final) {\n        this.c.p(chunk);\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Zlib.prototype.p = function (c, f) {\n        var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n        if (this.v)\n            zlh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 4, this.c.d());\n        this.ondata(raw, f);\n    };\n    /**\n     * Flushes buffered uncompressed data. Useful to immediately retrieve the\n     * zlibbed output for small inputs.\n     */\n    Zlib.prototype.flush = function () {\n        Deflate.prototype.flush.call(this);\n    };\n    return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n    function AsyncZlib(opts, cb) {\n        astrmify([\n            bDflt,\n            zle,\n            function () { return [astrm, Deflate, Zlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Zlib(ev.data);\n            onmessage = astrm(strm);\n        }, 10, 1);\n    }\n    return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        zle,\n        function () { return [zlibSync]; }\n    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var a = adler();\n    a.p(data);\n    var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n    function Unzlib(opts, cb) {\n        Inflate.call(this, opts, cb);\n        this.v = opts && opts.dictionary ? 2 : 1;\n    }\n    /**\n     * Pushes a chunk to be unzlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzlib.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        if (this.v) {\n            if (this.p.length < 6 && !final)\n                return;\n            this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n        }\n        if (final) {\n            if (this.p.length < 4)\n                err(6, 'invalid zlib data');\n            this.p = this.p.subarray(0, -4);\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n    };\n    return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n    function AsyncUnzlib(opts, cb) {\n        astrmify([\n            bInflt,\n            zule,\n            function () { return [astrm, Inflate, Unzlib]; }\n        ], this, StrmOpt.call(this, opts, cb), function (ev) {\n            var strm = new Unzlib(ev.data);\n            onmessage = astrm(strm);\n        }, 11, 0);\n    }\n    return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        zule,\n        function () { return [unzlibSync]; }\n    ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n    return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n    function Decompress(opts, cb) {\n        this.o = StrmOpt.call(this, opts, cb) || {};\n        this.G = Gunzip;\n        this.I = Inflate;\n        this.Z = Unzlib;\n    }\n    // init substream\n    // overriden by AsyncDecompress\n    Decompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (dat, final) {\n            _this.ondata(dat, final);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Decompress.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (!this.s) {\n            if (this.p && this.p.length) {\n                var n = new u8(this.p.length + chunk.length);\n                n.set(this.p), n.set(chunk, this.p.length);\n            }\n            else\n                this.p = chunk;\n            if (this.p.length > 2) {\n                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n                    ? new this.G(this.o)\n                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n                        ? new this.I(this.o)\n                        : new this.Z(this.o);\n                this.i();\n                this.s.push(this.p, final);\n                this.p = null;\n            }\n        }\n        else\n            this.s.push(chunk, final);\n    };\n    return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n    function AsyncDecompress(opts, cb) {\n        Decompress.call(this, opts, cb);\n        this.queuedSize = 0;\n        this.G = AsyncGunzip;\n        this.I = AsyncInflate;\n        this.Z = AsyncUnzlib;\n    }\n    AsyncDecompress.prototype.i = function () {\n        var _this = this;\n        this.s.ondata = function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        };\n        this.s.ondrain = function (size) {\n            _this.queuedSize -= size;\n            if (_this.ondrain)\n                _this.ondrain(size);\n        };\n    };\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncDecompress.prototype.push = function (chunk, final) {\n        this.queuedSize += chunk.length;\n        Decompress.prototype.push.call(this, chunk, final);\n    };\n    return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzip(data, opts, cb)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflate(data, opts, cb)\n            : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzipSync(data, opts)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflateSync(data, opts)\n            : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n    for (var k in d) {\n        var val = d[k], n = p + k, op = o;\n        if (Array.isArray(val))\n            op = mrg(o, val[1]), val = val[0];\n        if (val instanceof u8)\n            t[n] = [val, op];\n        else {\n            t[n += '/'] = [new u8(0), op];\n            fltn(val, n, t, o);\n        }\n    }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n    td.decode(et, { stream: true });\n    tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n    for (var r = '', i = 0;;) {\n        var c = d[i++];\n        var eb = (c > 127) + (c > 223) + (c > 239);\n        if (i + eb > d.length)\n            return { s: r, r: slc(d, i - 1) };\n        if (!eb)\n            r += String.fromCharCode(c);\n        else if (eb == 3) {\n            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n        }\n        else if (eb & 1)\n            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n        else\n            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n    }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is decoded\n     */\n    function DecodeUTF8(cb) {\n        this.ondata = cb;\n        if (tds)\n            this.t = new TextDecoder();\n        else\n            this.p = et;\n    }\n    /**\n     * Pushes a chunk to be decoded from UTF-8 binary\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    DecodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        final = !!final;\n        if (this.t) {\n            this.ondata(this.t.decode(chunk, { stream: true }), final);\n            if (final) {\n                if (this.t.decode().length)\n                    err(8);\n                this.t = null;\n            }\n            return;\n        }\n        if (!this.p)\n            err(4);\n        var dat = new u8(this.p.length + chunk.length);\n        dat.set(this.p);\n        dat.set(chunk, this.p.length);\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (final) {\n            if (r.length)\n                err(8);\n            this.p = null;\n        }\n        else\n            this.p = r;\n        this.ondata(s, final);\n    };\n    return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is encoded\n     */\n    function EncodeUTF8(cb) {\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be encoded to UTF-8\n     * @param chunk The string data to push\n     * @param final Whether this is the last chunk\n     */\n    EncodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        this.ondata(strToU8(chunk), this.d = final || false);\n    };\n    return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n    if (latin1) {\n        var ar_1 = new u8(str.length);\n        for (var i = 0; i < str.length; ++i)\n            ar_1[i] = str.charCodeAt(i);\n        return ar_1;\n    }\n    if (te)\n        return te.encode(str);\n    var l = str.length;\n    var ar = new u8(str.length + (str.length >> 1));\n    var ai = 0;\n    var w = function (v) { ar[ai++] = v; };\n    for (var i = 0; i < l; ++i) {\n        if (ai + 5 > ar.length) {\n            var n = new u8(ai + 8 + ((l - i) << 1));\n            n.set(ar);\n            ar = n;\n        }\n        var c = str.charCodeAt(i);\n        if (c < 128 || latin1)\n            w(c);\n        else if (c < 2048)\n            w(192 | (c >> 6)), w(128 | (c & 63));\n        else if (c > 55295 && c < 57344)\n            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n        else\n            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n    }\n    return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n    if (latin1) {\n        var r = '';\n        for (var i = 0; i < dat.length; i += 16384)\n            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n        return r;\n    }\n    else if (td) {\n        return td.decode(dat);\n    }\n    else {\n        var _a = dutf8(dat), s = _a.s, r = _a.r;\n        if (r.length)\n            err(8);\n        return s;\n    }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n        ;\n    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n    var le = 0;\n    if (ex) {\n        for (var k in ex) {\n            var l = ex[k].length;\n            if (l > 65535)\n                err(9);\n            le += l + 4;\n        }\n    }\n    return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n    var fl = fn.length, ex = f.extra, col = co && co.length;\n    var exl = exfl(ex);\n    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n    if (ce != null)\n        d[b++] = 20, d[b++] = f.os;\n    d[b] = 20, b += 2; // spec compliance? what's that?\n    d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n    if (y < 0 || y > 119)\n        err(10);\n    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n    if (c != -1) {\n        wbytes(d, b, f.crc);\n        wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n        wbytes(d, b + 8, f.size);\n    }\n    wbytes(d, b + 12, fl);\n    wbytes(d, b + 14, exl), b += 16;\n    if (ce != null) {\n        wbytes(d, b, col);\n        wbytes(d, b + 6, f.attrs);\n        wbytes(d, b + 10, ce), b += 14;\n    }\n    d.set(fn, b);\n    b += fl;\n    if (exl) {\n        for (var k in ex) {\n            var exf = ex[k], l = exf.length;\n            wbytes(d, b, +k);\n            wbytes(d, b + 2, l);\n            d.set(exf, b + 4), b += 4 + l;\n        }\n    }\n    if (col)\n        d.set(co, b), b += col;\n    return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n    wbytes(o, b, 0x6054B50); // skip disk\n    wbytes(o, b + 8, c);\n    wbytes(o, b + 10, c);\n    wbytes(o, b + 12, d);\n    wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n    /**\n     * Creates a pass-through stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     */\n    function ZipPassThrough(filename) {\n        this.filename = filename;\n        this.c = crc();\n        this.size = 0;\n        this.compression = 0;\n    }\n    /**\n     * Processes a chunk and pushes to the output stream. You can override this\n     * method in a subclass for custom behavior, but by default this passes\n     * the data through. You must call this.ondata(err, chunk, final) at some\n     * point in this method.\n     * @param chunk The chunk to process\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.process = function (chunk, final) {\n        this.ondata(null, chunk, final);\n    };\n    /**\n     * Pushes a chunk to be added. If you are subclassing this with a custom\n     * compression algorithm, note that you must push data from the source\n     * file only, pre-compression.\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        this.c.p(chunk);\n        this.size += chunk.length;\n        if (final)\n            this.crc = this.c.d();\n        this.process(chunk, final || false);\n    };\n    return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function ZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new Deflate(opts, function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n    }\n    ZipDeflate.prototype.process = function (chunk, final) {\n        try {\n            this.d.push(chunk, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function AsyncZipDeflate(filename, opts) {\n        var _this = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new AsyncDeflate(opts, function (err, dat, final) {\n            _this.ondata(err, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n        this.terminate = this.d.terminate;\n    }\n    AsyncZipDeflate.prototype.process = function (chunk, final) {\n        this.d.push(chunk, final);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n    /**\n     * Creates an empty ZIP archive to which files can be added\n     * @param cb The callback to call whenever data for the generated ZIP archive\n     *           is available\n     */\n    function Zip(cb) {\n        this.ondata = cb;\n        this.u = [];\n        this.d = 1;\n    }\n    /**\n     * Adds a file to the ZIP archive\n     * @param file The file stream to add\n     */\n    Zip.prototype.add = function (file) {\n        var _this = this;\n        if (!this.ondata)\n            err(5);\n        // finishing or finished\n        if (this.d & 2)\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n        else {\n            var f = strToU8(file.filename), fl_1 = f.length;\n            var com = file.comment, o = com && strToU8(com);\n            var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n            var hl_1 = fl_1 + exfl(file.extra) + 30;\n            if (fl_1 > 65535)\n                this.ondata(err(11, 0, 1), null, false);\n            var header = new u8(hl_1);\n            wzh(header, 0, file, f, u, -1);\n            var chks_1 = [header];\n            var pAll_1 = function () {\n                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n                    var chk = chks_2[_i];\n                    _this.ondata(null, chk, false);\n                }\n                chks_1 = [];\n            };\n            var tr_1 = this.d;\n            this.d = 0;\n            var ind_1 = this.u.length;\n            var uf_1 = mrg(file, {\n                f: f,\n                u: u,\n                o: o,\n                t: function () {\n                    if (file.terminate)\n                        file.terminate();\n                },\n                r: function () {\n                    pAll_1();\n                    if (tr_1) {\n                        var nxt = _this.u[ind_1 + 1];\n                        if (nxt)\n                            nxt.r();\n                        else\n                            _this.d = 1;\n                    }\n                    tr_1 = 1;\n                }\n            });\n            var cl_1 = 0;\n            file.ondata = function (err, dat, final) {\n                if (err) {\n                    _this.ondata(err, dat, final);\n                    _this.terminate();\n                }\n                else {\n                    cl_1 += dat.length;\n                    chks_1.push(dat);\n                    if (final) {\n                        var dd = new u8(16);\n                        wbytes(dd, 0, 0x8074B50);\n                        wbytes(dd, 4, file.crc);\n                        wbytes(dd, 8, cl_1);\n                        wbytes(dd, 12, file.size);\n                        chks_1.push(dd);\n                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n                        if (tr_1)\n                            uf_1.r();\n                        tr_1 = 1;\n                    }\n                    else if (tr_1)\n                        pAll_1();\n                }\n            };\n            this.u.push(uf_1);\n        }\n    };\n    /**\n     * Ends the process of adding files and prepares to emit the final chunks.\n     * This *must* be called after adding all desired files for the resulting\n     * ZIP file to work properly.\n     */\n    Zip.prototype.end = function () {\n        var _this = this;\n        if (this.d & 2) {\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n            return;\n        }\n        if (this.d)\n            this.e();\n        else\n            this.u.push({\n                r: function () {\n                    if (!(_this.d & 1))\n                        return;\n                    _this.u.splice(-1, 1);\n                    _this.e();\n                },\n                t: function () { }\n            });\n        this.d = 3;\n    };\n    Zip.prototype.e = function () {\n        var bt = 0, l = 0, tl = 0;\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n        }\n        var out = new u8(tl + 22);\n        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n            var f = _c[_b];\n            wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n        }\n        wzf(out, bt, this.u.length, tl, l);\n        this.ondata(null, out, true);\n        this.d = 2;\n    };\n    /**\n     * A method to terminate any internal workers used by the stream. Subsequent\n     * calls to add() will fail.\n     */\n    Zip.prototype.terminate = function () {\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            f.t();\n        }\n        this.d = 2;\n    };\n    return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var r = {};\n    fltn(data, '', r, opts);\n    var k = Object.keys(r);\n    var lft = k.length, o = 0, tot = 0;\n    var slft = lft, files = new Array(lft);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var cbf = function () {\n        var out = new u8(tot + 22), oe = o, cdl = tot - o;\n        tot = 0;\n        for (var i = 0; i < slft; ++i) {\n            var f = files[i];\n            try {\n                var l = f.c.length;\n                wzh(out, tot, f, f.f, f.u, l);\n                var badd = 30 + f.f.length + exfl(f.extra);\n                var loc = tot + badd;\n                out.set(f.c, loc);\n                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n            }\n            catch (e) {\n                return cbd(e, null);\n            }\n        }\n        wzf(out, o, files.length, cdl, oe);\n        cbd(null, out);\n    };\n    if (!lft)\n        cbf();\n    var _loop_1 = function (i) {\n        var fn = k[i];\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var c = crc(), size = file.length;\n        c.p(file);\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        var compression = p.level == 0 ? 0 : 8;\n        var cbl = function (e, d) {\n            if (e) {\n                tAll();\n                cbd(e, null);\n            }\n            else {\n                var l = d.length;\n                files[i] = mrg(p, {\n                    size: size,\n                    crc: c.d(),\n                    c: d,\n                    f: f,\n                    m: m,\n                    u: s != fn.length || (m && (com.length != ms)),\n                    compression: compression\n                });\n                o += 30 + s + exl + l;\n                tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n                if (!--lft)\n                    cbf();\n            }\n        };\n        if (s > 65535)\n            cbl(err(11, 0, 1), null);\n        if (!compression)\n            cbl(null, file);\n        else if (size < 160000) {\n            try {\n                cbl(null, deflateSync(file, p));\n            }\n            catch (e) {\n                cbl(e, null);\n            }\n        }\n        else\n            term.push(deflate(file, p, cbl));\n    };\n    // Cannot use lft because it can decrease\n    for (var i = 0; i < slft; ++i) {\n        _loop_1(i);\n    }\n    return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var r = {};\n    var files = [];\n    fltn(data, '', r, opts);\n    var o = 0;\n    var tot = 0;\n    for (var fn in r) {\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var compression = p.level == 0 ? 0 : 8;\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        if (s > 65535)\n            err(11);\n        var d = compression ? deflateSync(file, p) : file, l = d.length;\n        var c = crc();\n        c.p(file);\n        files.push(mrg(p, {\n            size: file.length,\n            crc: c.d(),\n            c: d,\n            f: f,\n            m: m,\n            u: s != fn.length || (m && (com.length != ms)),\n            o: o,\n            compression: compression\n        }));\n        o += 30 + s + exl + l;\n        tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n    }\n    var out = new u8(tot + 22), oe = o, cdl = tot - o;\n    for (var i = 0; i < files.length; ++i) {\n        var f = files[i];\n        wzh(out, f.o, f, f.f, f.u, f.c.length);\n        var badd = 30 + f.f.length + exfl(f.extra);\n        out.set(f.c, f.o + badd);\n        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n    }\n    wzf(out, o, files.length, cdl, oe);\n    return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n    function UnzipPassThrough() {\n    }\n    UnzipPassThrough.prototype.push = function (data, final) {\n        this.ondata(null, data, final);\n    };\n    UnzipPassThrough.compression = 0;\n    return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function UnzipInflate() {\n        var _this = this;\n        this.i = new Inflate(function (dat, final) {\n            _this.ondata(null, dat, final);\n        });\n    }\n    UnzipInflate.prototype.push = function (data, final) {\n        try {\n            this.i.push(data, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    UnzipInflate.compression = 8;\n    return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function AsyncUnzipInflate(_, sz) {\n        var _this = this;\n        if (sz < 320000) {\n            this.i = new Inflate(function (dat, final) {\n                _this.ondata(null, dat, final);\n            });\n        }\n        else {\n            this.i = new AsyncInflate(function (err, dat, final) {\n                _this.ondata(err, dat, final);\n            });\n            this.terminate = this.i.terminate;\n        }\n    }\n    AsyncUnzipInflate.prototype.push = function (data, final) {\n        if (this.i.terminate)\n            data = slc(data, 0);\n        this.i.push(data, final);\n    };\n    AsyncUnzipInflate.compression = 8;\n    return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates a ZIP decompression stream\n     * @param cb The callback to call whenever a file in the ZIP archive is found\n     */\n    function Unzip(cb) {\n        this.onfile = cb;\n        this.k = [];\n        this.o = {\n            0: UnzipPassThrough\n        };\n        this.p = et;\n    }\n    /**\n     * Pushes a chunk to be unzipped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzip.prototype.push = function (chunk, final) {\n        var _this = this;\n        if (!this.onfile)\n            err(5);\n        if (!this.p)\n            err(4);\n        if (this.c > 0) {\n            var len = Math.min(this.c, chunk.length);\n            var toAdd = chunk.subarray(0, len);\n            this.c -= len;\n            if (this.d)\n                this.d.push(toAdd, !this.c);\n            else\n                this.k[0].push(toAdd);\n            chunk = chunk.subarray(len);\n            if (chunk.length)\n                return this.push(chunk, final);\n        }\n        else {\n            var f = 0, i = 0, is = void 0, buf = void 0;\n            if (!this.p.length)\n                buf = chunk;\n            else if (!chunk.length)\n                buf = this.p;\n            else {\n                buf = new u8(this.p.length + chunk.length);\n                buf.set(this.p), buf.set(chunk, this.p.length);\n            }\n            var l = buf.length, oc = this.c, add = oc && this.d;\n            var _loop_2 = function () {\n                var _a;\n                var sig = b4(buf, i);\n                if (sig == 0x4034B50) {\n                    f = 1, is = i;\n                    this_1.d = null;\n                    this_1.c = 0;\n                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n                    if (l > i + 30 + fnl + es) {\n                        var chks_3 = [];\n                        this_1.k.unshift(chks_3);\n                        f = 2;\n                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n                        if (sc_1 == 4294967295) {\n                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n                        }\n                        else if (dd)\n                            sc_1 = -1;\n                        i += es;\n                        this_1.c = sc_1;\n                        var d_1;\n                        var file_1 = {\n                            name: fn_1,\n                            compression: cmp_1,\n                            start: function () {\n                                if (!file_1.ondata)\n                                    err(5);\n                                if (!sc_1)\n                                    file_1.ondata(null, et, true);\n                                else {\n                                    var ctr = _this.o[cmp_1];\n                                    if (!ctr)\n                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n                                        var dat = chks_4[_i];\n                                        d_1.push(dat, false);\n                                    }\n                                    if (_this.k[0] == chks_3 && _this.c)\n                                        _this.d = d_1;\n                                    else\n                                        d_1.push(et, true);\n                                }\n                            },\n                            terminate: function () {\n                                if (d_1 && d_1.terminate)\n                                    d_1.terminate();\n                            }\n                        };\n                        if (sc_1 >= 0)\n                            file_1.size = sc_1, file_1.originalSize = su_1;\n                        this_1.onfile(file_1);\n                    }\n                    return \"break\";\n                }\n                else if (oc) {\n                    if (sig == 0x8074B50) {\n                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                    else if (sig == 0x2014B50) {\n                        is = i -= 4, f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                }\n            };\n            var this_1 = this;\n            for (; i < l - 4; ++i) {\n                var state_1 = _loop_2();\n                if (state_1 === \"break\")\n                    break;\n            }\n            this.p = et;\n            if (oc < 0) {\n                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n                if (add)\n                    add.push(dat, !!f);\n                else\n                    this.k[+(f == 2)].push(dat);\n            }\n            if (f & 2)\n                return this.push(buf.subarray(i), final);\n            this.p = buf.subarray(i);\n        }\n        if (final) {\n            if (this.c)\n                err(13);\n            this.p = null;\n        }\n    };\n    /**\n     * Registers a decoder with the stream, allowing for files compressed with\n     * the compression type provided to be expanded correctly\n     * @param decoder The decoder constructor\n     */\n    Unzip.prototype.register = function (decoder) {\n        this.o[decoder.compression] = decoder;\n    };\n    return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var files = {};\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558) {\n            cbd(err(13, 0, 1), null);\n            return tAll;\n        }\n    }\n    ;\n    var lft = b2(data, e + 8);\n    if (lft) {\n        var c = lft;\n        var o = b4(data, e + 16);\n        var z = o == 4294967295 || c == 65535;\n        if (z) {\n            var ze = b4(data, e - 12);\n            z = b4(data, ze) == 0x6064B50;\n            if (z) {\n                c = lft = b4(data, ze + 32);\n                o = b4(data, ze + 48);\n            }\n        }\n        var fltr = opts && opts.filter;\n        var _loop_3 = function (i) {\n            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n            o = no;\n            var cbl = function (e, d) {\n                if (e) {\n                    tAll();\n                    cbd(e, null);\n                }\n                else {\n                    if (d)\n                        files[fn] = d;\n                    if (!--lft)\n                        cbd(null, files);\n                }\n            };\n            if (!fltr || fltr({\n                name: fn,\n                size: sc,\n                originalSize: su,\n                compression: c_1\n            })) {\n                if (!c_1)\n                    cbl(null, slc(data, b, b + sc));\n                else if (c_1 == 8) {\n                    var infl = data.subarray(b, b + sc);\n                    // Synchronously decompress under 512KB, or barely-compressed data\n                    if (su < 524288 || sc > 0.8 * su) {\n                        try {\n                            cbl(null, inflateSync(infl, { out: new u8(su) }));\n                        }\n                        catch (e) {\n                            cbl(e, null);\n                        }\n                    }\n                    else\n                        term.push(inflate(infl, { size: su }, cbl));\n                }\n                else\n                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n            }\n            else\n                cbl(null, null);\n        };\n        for (var i = 0; i < c; ++i) {\n            _loop_3(i);\n        }\n    }\n    else\n        cbd(null, {});\n    return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n    var files = {};\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558)\n            err(13);\n    }\n    ;\n    var c = b2(data, e + 8);\n    if (!c)\n        return {};\n    var o = b4(data, e + 16);\n    var z = o == 4294967295 || c == 65535;\n    if (z) {\n        var ze = b4(data, e - 12);\n        z = b4(data, ze) == 0x6064B50;\n        if (z) {\n            c = b4(data, ze + 32);\n            o = b4(data, ze + 48);\n        }\n    }\n    var fltr = opts && opts.filter;\n    for (var i = 0; i < c; ++i) {\n        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n        o = no;\n        if (!fltr || fltr({\n            name: fn,\n            size: sc,\n            originalSize: su,\n            compression: c_2\n        })) {\n            if (!c_2)\n                files[fn] = slc(data, b, b + sc);\n            else if (c_2 == 8)\n                files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n            else\n                err(14, 'unknown compression type ' + c_2);\n        }\n    }\n    return files;\n}\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/utils/capitalizeString.ts\nvar capitalizeString = /* @__PURE__ */ __name((str) => {\n  if (!str.length) {\n    return str;\n  }\n  return str[0].toUpperCase() + str.slice(1);\n}, \"capitalizeString\");\n\n// src/utils/chunkAndPadBytes.ts\nvar chunkAndPadBytes = /* @__PURE__ */ __name((bytes, chunkSize) => {\n  const chunks = [];\n  for (let offset = 0; offset < bytes.length; offset += chunkSize) {\n    const chunk = new Uint8Array(chunkSize);\n    chunk.set(bytes.slice(offset, offset + chunkSize));\n    chunks.push(chunk);\n  }\n  const lastChunk = chunks[chunks.length - 1];\n  const remainingBytes = bytes.length % chunkSize;\n  const paddedChunkLength = remainingBytes + (8 - remainingBytes % 8) % 8;\n  const newChunk = lastChunk.slice(0, paddedChunkLength);\n  chunks[chunks.length - 1] = newChunk;\n  return chunks;\n}, \"chunkAndPadBytes\");\n\n// src/utils/arrayify.ts\nimport { FuelError, ErrorCode } from \"@fuel-ts/errors\";\nvar arrayify = /* @__PURE__ */ __name((value, name, copy = true) => {\n  if (value instanceof Uint8Array) {\n    if (copy) {\n      return new Uint8Array(value);\n    }\n    return value;\n  }\n  if (typeof value === \"string\" && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n    const result = new Uint8Array((value.length - 2) / 2);\n    let offset = 2;\n    for (let i = 0; i < result.length; i++) {\n      result[i] = parseInt(value.substring(offset, offset + 2), 16);\n      offset += 2;\n    }\n    return result;\n  }\n  const nameMessage = name ? ` ${name} -` : \"\";\n  const message = `invalid data:${nameMessage} ${value}\nIf you are attempting to transform a hex value, please make sure it is being passed as a string and wrapped in quotes.`;\n  throw new FuelError(ErrorCode.INVALID_DATA, message);\n}, \"arrayify\");\n\n// src/utils/concat.ts\nvar concatBytes = /* @__PURE__ */ __name((arrays) => {\n  const byteArrays = arrays.map((array) => {\n    if (array instanceof Uint8Array) {\n      return array;\n    }\n    return Uint8Array.from(array);\n  });\n  const totalSize = byteArrays.reduce((accum, item) => accum + item.length, 0);\n  const concatenated = new Uint8Array(totalSize);\n  byteArrays.reduce((offset, object) => {\n    concatenated.set(object, offset);\n    return offset + object.length;\n  }, 0);\n  return concatenated;\n}, \"concatBytes\");\nvar concat = /* @__PURE__ */ __name((arrays) => {\n  const bytes = arrays.map((v) => arrayify(v));\n  return concatBytes(bytes);\n}, \"concat\");\n\n// src/utils/hexlify.ts\nvar HexCharacters = \"0123456789abcdef\";\nfunction hexlify(data) {\n  const bytes = arrayify(data);\n  let result = \"0x\";\n  for (let i = 0; i < bytes.length; i++) {\n    const v = bytes[i];\n    result += HexCharacters[(v & 240) >> 4] + HexCharacters[v & 15];\n  }\n  return result;\n}\n__name(hexlify, \"hexlify\");\n\n// src/utils/normalizeString.ts\nimport { ErrorCode as ErrorCode2, FuelError as FuelError2 } from \"@fuel-ts/errors\";\nvar normalizeString = /* @__PURE__ */ __name((str) => {\n  const transformations = [\n    (s) => s.replace(/\\s+/g, \"-\"),\n    // spaces to -\n    (s) => s.replace(/\\./g, \"-\"),\n    // dots to -\n    (s) => s.replace(/_/g, \"-\"),\n    // underscore to -\n    (s) => s.replace(/-[a-z]/g, (match) => match.slice(-1).toUpperCase()),\n    // delete '-' and capitalize the letter after them\n    (s) => s.replace(/-/g, \"\"),\n    // delete any '-' left\n    (s) => s.replace(/^\\d+/, \"\"),\n    // removes leading digits\n    (s) => s[0].toUpperCase() + s.slice(1)\n    // capitalize first letter\n  ];\n  const output = transformations.reduce((s, t) => t(s), str);\n  if (output === \"\") {\n    const errMsg = `The provided string '${str}' results in an empty output after`.concat(\n      ` normalization, therefore, it can't normalize string.`\n    );\n    throw new FuelError2(ErrorCode2.PARSE_FAILED, errMsg);\n  }\n  return output;\n}, \"normalizeString\");\n\n// src/utils/date-time.ts\nvar TAI64_LEAP_SECONDS = 37;\nvar TAI64_UNIX_OFFSET = BigInt(2 ** 62) + BigInt(TAI64_LEAP_SECONDS);\nvar msToSeconds = /* @__PURE__ */ __name((ms) => Math.floor(ms / 1e3), \"msToSeconds\");\nvar secondsToMs = /* @__PURE__ */ __name((seconds) => seconds * 1e3, \"secondsToMs\");\nvar tai64ToUnixSeconds = /* @__PURE__ */ __name((tai64) => Number(BigInt(tai64) - TAI64_UNIX_OFFSET), \"tai64ToUnixSeconds\");\nvar unixSecondsToTai64 = /* @__PURE__ */ __name((unixSeconds) => String(BigInt(unixSeconds) + TAI64_UNIX_OFFSET), \"unixSecondsToTai64\");\nvar tai64ToUnixMilliseconds = /* @__PURE__ */ __name((tai64) => secondsToMs(tai64ToUnixSeconds(tai64)), \"tai64ToUnixMilliseconds\");\nvar DateTime = class _DateTime extends Date {\n  static {\n    __name(this, \"DateTime\");\n  }\n  static TAI64_NULL = \"\";\n  /**\n   * Generates a new DateTime instance from a Tai64 timestamp.\n   *\n   * @param tai64 - Tai64 timestamp\n   * @returns a new DateTime instance\n   */\n  static fromTai64(tai64) {\n    return new _DateTime(tai64ToUnixMilliseconds(tai64));\n  }\n  /**\n   * @param unixMilliseconds - unix milliseconds timestamp\n   * @returns a new DateTime instance\n   */\n  static fromUnixMilliseconds(unixMilliseconds) {\n    return new _DateTime(unixMilliseconds);\n  }\n  /**\n   * @param unixSeconds - unix seconds timestamp\n   * @returns a new DateTime instance\n   */\n  static fromUnixSeconds(unixSeconds) {\n    return new _DateTime(secondsToMs(unixSeconds));\n  }\n  /**\n   * Hide the constructor to prevent direct instantiation.\n   */\n  constructor(date) {\n    super(date);\n  }\n  /**\n   * Returns the Tai64 timestamp.\n   *\n   * @returns the Tai64 timestamp\n   */\n  toTai64() {\n    return unixSecondsToTai64(this.toUnixSeconds());\n  }\n  /**\n   * @returns the unix milliseconds timestamp\n   */\n  toUnixMilliseconds() {\n    return this.getTime();\n  }\n  /**\n   * @returns the unix seconds timestamp\n   */\n  toUnixSeconds() {\n    return msToSeconds(this.getTime());\n  }\n};\n\n// src/utils/sleep.ts\nfunction sleep(time) {\n  return new Promise((resolve) => {\n    setTimeout(() => {\n      resolve(true);\n    }, time);\n  });\n}\n__name(sleep, \"sleep\");\n\n// src/utils/defaultSnapshots/chainConfig.json\nvar chainConfig_default = {\n  chain_name: \"local_testnet\",\n  consensus_parameters: {\n    V2: {\n      tx_params: {\n        V1: {\n          max_inputs: 255,\n          max_outputs: 255,\n          max_witnesses: 255,\n          max_gas_per_tx: 3e7,\n          max_size: 112640,\n          max_bytecode_subsections: 256\n        }\n      },\n      predicate_params: {\n        V1: {\n          max_predicate_length: 24576,\n          max_predicate_data_length: 24576,\n          max_message_data_length: 102400,\n          max_gas_per_predicate: 1e6\n        }\n      },\n      script_params: {\n        V1: {\n          max_script_length: 102400,\n          max_script_data_length: 102400\n        }\n      },\n      contract_params: {\n        V1: {\n          contract_max_size: 112640,\n          max_storage_slots: 1760\n        }\n      },\n      fee_params: {\n        V1: {\n          gas_price_factor: 115e4,\n          gas_per_byte: 63\n        }\n      },\n      chain_id: 0,\n      gas_costs: {\n        V4: {\n          add: 2,\n          addi: 2,\n          and: 2,\n          andi: 2,\n          bal: 274,\n          bhei: 2,\n          bhsh: 2,\n          burn: 7566,\n          cb: 2,\n          cfsi: 2,\n          div: 2,\n          divi: 2,\n          eck1: 1489,\n          ecr1: 20513,\n          eq: 2,\n          exp: 2,\n          expi: 2,\n          flag: 2,\n          gm: 2,\n          gt: 2,\n          gtf: 3,\n          ji: 2,\n          jmp: 2,\n          jne: 2,\n          jnei: 2,\n          jnzi: 2,\n          jmpf: 2,\n          jmpb: 2,\n          jnzf: 2,\n          jnzb: 2,\n          jnef: 2,\n          jneb: 2,\n          lb: 2,\n          log: 80,\n          lt: 2,\n          lw: 2,\n          mint: 6566,\n          mlog: 2,\n          mod: 2,\n          modi: 2,\n          move: 2,\n          movi: 1,\n          mroo: 3,\n          mul: 2,\n          muli: 2,\n          mldv: 3,\n          noop: 1,\n          not: 2,\n          or: 1,\n          ori: 2,\n          poph: 2,\n          popl: 2,\n          pshh: 5,\n          pshl: 5,\n          ret_contract: 43,\n          rvrt_contract: 39,\n          sb: 2,\n          sll: 2,\n          slli: 2,\n          srl: 2,\n          srli: 2,\n          srw: 237,\n          sub: 2,\n          subi: 2,\n          sw: 2,\n          sww: 5708,\n          time: 106,\n          tr: 9253,\n          tro: 7199,\n          wdcm: 2,\n          wqcm: 2,\n          wdop: 2,\n          wqop: 3,\n          wdml: 3,\n          wqml: 3,\n          wddv: 3,\n          wqdv: 4,\n          wdmd: 6,\n          wqmd: 9,\n          wdam: 6,\n          wqam: 6,\n          wdmm: 6,\n          wqmm: 6,\n          xor: 2,\n          xori: 2,\n          ecop: 2,\n          aloc: {\n            LightOperation: {\n              base: 2,\n              units_per_gas: 35\n            }\n          },\n          bsiz: {\n            LightOperation: {\n              base: 25,\n              units_per_gas: 564\n            }\n          },\n          bldd: {\n            LightOperation: {\n              base: 33,\n              units_per_gas: 130\n            }\n          },\n          cfe: {\n            LightOperation: {\n              base: 10,\n              units_per_gas: 62\n            }\n          },\n          cfei: {\n            LightOperation: {\n              base: 10,\n              units_per_gas: 66\n            }\n          },\n          call: {\n            LightOperation: {\n              base: 6934,\n              units_per_gas: 14\n            }\n          },\n          ccp: {\n            LightOperation: {\n              base: 21,\n              units_per_gas: 155\n            }\n          },\n          croo: {\n            LightOperation: {\n              base: 69,\n              units_per_gas: 4\n            }\n          },\n          csiz: {\n            LightOperation: {\n              base: 25,\n              units_per_gas: 580\n            }\n          },\n          ed19: {\n            LightOperation: {\n              base: 3232,\n              units_per_gas: 7\n            }\n          },\n          k256: {\n            LightOperation: {\n              base: 21,\n              units_per_gas: 6\n            }\n          },\n          ldc: {\n            LightOperation: {\n              base: 84,\n              units_per_gas: 113\n            }\n          },\n          logd: {\n            LightOperation: {\n              base: 278,\n              units_per_gas: 5\n            }\n          },\n          mcl: {\n            LightOperation: {\n              base: 2,\n              units_per_gas: 1282\n            }\n          },\n          mcli: {\n            LightOperation: {\n              base: 2,\n              units_per_gas: 1250\n            }\n          },\n          mcp: {\n            LightOperation: {\n              base: 3,\n              units_per_gas: 385\n            }\n          },\n          mcpi: {\n            LightOperation: {\n              base: 7,\n              units_per_gas: 585\n            }\n          },\n          meq: {\n            LightOperation: {\n              base: 2,\n              units_per_gas: 1234\n            }\n          },\n          retd_contract: {\n            LightOperation: {\n              base: 227,\n              units_per_gas: 5\n            }\n          },\n          s256: {\n            LightOperation: {\n              base: 25,\n              units_per_gas: 5\n            }\n          },\n          scwq: {\n            HeavyOperation: {\n              base: 5666,\n              gas_per_unit: 6628\n            }\n          },\n          smo: {\n            LightOperation: {\n              base: 14635,\n              units_per_gas: 3\n            }\n          },\n          srwq: {\n            HeavyOperation: {\n              base: 245,\n              gas_per_unit: 243\n            }\n          },\n          swwq: {\n            HeavyOperation: {\n              base: 5661,\n              gas_per_unit: 5776\n            }\n          },\n          epar: {\n            HeavyOperation: {\n              base: 5661,\n              gas_per_unit: 5776\n            }\n          },\n          contract_root: {\n            LightOperation: {\n              base: 24,\n              units_per_gas: 3\n            }\n          },\n          state_root: {\n            HeavyOperation: {\n              base: 189,\n              gas_per_unit: 96\n            }\n          },\n          new_storage_per_byte: 63,\n          vm_initialization: {\n            LightOperation: {\n              base: 3127,\n              units_per_gas: 61\n            }\n          }\n        }\n      },\n      base_asset_id: \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\",\n      block_gas_limit: 3e7,\n      block_transaction_size_limit: 260096,\n      privileged_address: \"0000000000000000000000000000000000000000000000000000000000000000\"\n    }\n  },\n  consensus: {\n    PoA: {\n      signing_key: \"0x94ffcc53b892684acefaebc8a3d4a595e528a8cf664eeb3ef36f1020b0809d0d\"\n    }\n  }\n};\n\n// src/utils/defaultSnapshots/metadata.json\nvar metadata_default = {\n  chain_config: \"chainConfig.json\",\n  table_encoding: {\n    Json: {\n      filepath: \"stateConfig.json\"\n    }\n  }\n};\n\n// src/utils/defaultSnapshots/stateConfig.json\nvar stateConfig_default = {\n  coins: [],\n  messages: [],\n  contracts: [],\n  blobs: [],\n  block_height: 0,\n  da_block_height: 0\n};\n\n// src/utils/defaultSnapshotConfigs.ts\nvar defaultSnapshotConfigs = {\n  chainConfig: chainConfig_default,\n  metadata: metadata_default,\n  stateConfig: stateConfig_default\n};\nvar defaultConsensusKey = \"0xa449b1ffee0e2205fa924c6740cc48b3b473aa28587df6dab12abc245d1f5298\";\n\n// src/utils/isDefined.ts\nfunction isDefined(value) {\n  return value !== void 0;\n}\n__name(isDefined, \"isDefined\");\n\n// src/utils/base58.ts\nimport { ErrorCode as ErrorCode3, FuelError as FuelError3 } from \"@fuel-ts/errors\";\nimport { bn } from \"@fuel-ts/math\";\nvar BN_0 = bn(0);\nvar BN_58 = bn(58);\nvar Alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nvar Lookup = null;\nfunction getAlpha(letter) {\n  if (Lookup == null) {\n    Lookup = {};\n    for (let i = 0; i < Alphabet.length; i++) {\n      Lookup[Alphabet[i]] = bn(i);\n    }\n  }\n  const result = Lookup[letter];\n  if (result == null) {\n    throw new FuelError3(ErrorCode3.INVALID_DATA, `invalid base58 value ${letter}`);\n  }\n  return bn(result);\n}\n__name(getAlpha, \"getAlpha\");\nfunction encodeBase58(_value) {\n  const bytes = arrayify(_value);\n  let value = bn(bytes);\n  let result = \"\";\n  while (value.gt(BN_0)) {\n    result = Alphabet[Number(value.mod(BN_58))] + result;\n    value = value.div(BN_58);\n  }\n  for (let i = 0; i < bytes.length; i++) {\n    if (bytes[i]) {\n      break;\n    }\n    result = Alphabet[0] + result;\n  }\n  return result;\n}\n__name(encodeBase58, \"encodeBase58\");\nfunction decodeBase58(value) {\n  let result = BN_0;\n  for (let i = 0; i < value.length; i++) {\n    result = result.mul(BN_58);\n    result = result.add(getAlpha(value[i].toString()));\n  }\n  return result;\n}\n__name(decodeBase58, \"decodeBase58\");\n\n// src/utils/dataSlice.ts\nimport { ErrorCode as ErrorCode4, FuelError as FuelError4 } from \"@fuel-ts/errors\";\nfunction dataSlice(data, start, end) {\n  const bytes = arrayify(data);\n  if (end != null && end > bytes.length) {\n    throw new FuelError4(ErrorCode4.INVALID_DATA, \"cannot slice beyond data bounds\");\n  }\n  return hexlify(bytes.slice(start == null ? 0 : start, end == null ? bytes.length : end));\n}\n__name(dataSlice, \"dataSlice\");\n\n// src/utils/toUtf8Bytes.ts\nimport { FuelError as FuelError5, ErrorCode as ErrorCode5 } from \"@fuel-ts/errors\";\nfunction toUtf8Bytes(stri, form = true) {\n  let str = stri;\n  if (form) {\n    str = stri.normalize(\"NFC\");\n  }\n  const result = [];\n  for (let i = 0; i < str.length; i += 1) {\n    const c = str.charCodeAt(i);\n    if (c < 128) {\n      result.push(c);\n    } else if (c < 2048) {\n      result.push(c >> 6 | 192);\n      result.push(c & 63 | 128);\n    } else if ((c & 64512) === 55296) {\n      i += 1;\n      const c2 = str.charCodeAt(i);\n      if (i >= str.length || (c2 & 64512) !== 56320) {\n        throw new FuelError5(\n          ErrorCode5.INVALID_INPUT_PARAMETERS,\n          \"Invalid UTF-8 in the input string.\"\n        );\n      }\n      const pair = 65536 + ((c & 1023) << 10) + (c2 & 1023);\n      result.push(pair >> 18 | 240);\n      result.push(pair >> 12 & 63 | 128);\n      result.push(pair >> 6 & 63 | 128);\n      result.push(pair & 63 | 128);\n    } else {\n      result.push(c >> 12 | 224);\n      result.push(c >> 6 & 63 | 128);\n      result.push(c & 63 | 128);\n    }\n  }\n  return new Uint8Array(result);\n}\n__name(toUtf8Bytes, \"toUtf8Bytes\");\n\n// src/utils/toUtf8String.ts\nfunction onError(reason, offset, bytes, output, badCodepoint) {\n  console.log(`invalid codepoint at offset ${offset}; ${reason}, bytes: ${bytes}`);\n  return offset;\n}\n__name(onError, \"onError\");\nfunction helper(codePoints) {\n  return codePoints.map((codePoint) => {\n    if (codePoint <= 65535) {\n      return String.fromCharCode(codePoint);\n    }\n    codePoint -= 65536;\n    return String.fromCharCode(\n      (codePoint >> 10 & 1023) + 55296,\n      (codePoint & 1023) + 56320\n    );\n  }).join(\"\");\n}\n__name(helper, \"helper\");\nfunction getUtf8CodePoints(_bytes) {\n  const bytes = arrayify(_bytes, \"bytes\");\n  const result = [];\n  let i = 0;\n  while (i < bytes.length) {\n    const c = bytes[i++];\n    if (c >> 7 === 0) {\n      result.push(c);\n      continue;\n    }\n    let extraLength = null;\n    let overlongMask = null;\n    if ((c & 224) === 192) {\n      extraLength = 1;\n      overlongMask = 127;\n    } else if ((c & 240) === 224) {\n      extraLength = 2;\n      overlongMask = 2047;\n    } else if ((c & 248) === 240) {\n      extraLength = 3;\n      overlongMask = 65535;\n    } else {\n      if ((c & 192) === 128) {\n        i += onError(\"UNEXPECTED_CONTINUE\", i - 1, bytes, result);\n      } else {\n        i += onError(\"BAD_PREFIX\", i - 1, bytes, result);\n      }\n      continue;\n    }\n    if (i - 1 + extraLength >= bytes.length) {\n      i += onError(\"OVERRUN\", i - 1, bytes, result);\n      continue;\n    }\n    let res = c & (1 << 8 - extraLength - 1) - 1;\n    for (let j = 0; j < extraLength; j++) {\n      const nextChar = bytes[i];\n      if ((nextChar & 192) !== 128) {\n        i += onError(\"MISSING_CONTINUE\", i, bytes, result);\n        res = null;\n        break;\n      }\n      res = res << 6 | nextChar & 63;\n      i++;\n    }\n    if (res === null) {\n      continue;\n    }\n    if (res > 1114111) {\n      i += onError(\"OUT_OF_RANGE\", i - 1 - extraLength, bytes, result, res);\n      continue;\n    }\n    if (res >= 55296 && res <= 57343) {\n      i += onError(\"UTF16_SURROGATE\", i - 1 - extraLength, bytes, result, res);\n      continue;\n    }\n    if (res <= overlongMask) {\n      i += onError(\"OVERLONG\", i - 1 - extraLength, bytes, result, res);\n      continue;\n    }\n    result.push(res);\n  }\n  return result;\n}\n__name(getUtf8CodePoints, \"getUtf8CodePoints\");\nfunction toUtf8String(bytes) {\n  return helper(getUtf8CodePoints(bytes));\n}\n__name(toUtf8String, \"toUtf8String\");\n\n// src/utils/bytecode.ts\nimport { gzipSync, gunzipSync } from \"fflate\";\nvar compressBytecode = /* @__PURE__ */ __name((bytecodeAsBinary) => {\n  if (!bytecodeAsBinary) {\n    return \"\";\n  }\n  const bytecodeCompressBytes = arrayify(bytecodeAsBinary);\n  const bytecodeCompressGzipped = gzipSync(bytecodeCompressBytes, { mtime: 0 });\n  const bytecodeCompressBinary = String.fromCharCode.apply(\n    null,\n    new Uint8Array(bytecodeCompressGzipped)\n  );\n  const bytecodeCompressEncoded = btoa(bytecodeCompressBinary);\n  return bytecodeCompressEncoded;\n}, \"compressBytecode\");\nvar decompressBytecode = /* @__PURE__ */ __name((bytecodeAsBase64) => {\n  const bytecodeDecompressBinary = atob(bytecodeAsBase64);\n  const bytecodeDecompressDecoded = new Uint8Array(bytecodeDecompressBinary.length).map(\n    (_, i) => bytecodeDecompressBinary.charCodeAt(i)\n  );\n  const bytecodeDecompressBytes = gunzipSync(bytecodeDecompressDecoded);\n  return bytecodeDecompressBytes;\n}, \"decompressBytecode\");\n\n// src/index.ts\nfunction assertUnreachable(_x) {\n  throw new Error(\"Didn't expect to get here\");\n}\n__name(assertUnreachable, \"assertUnreachable\");\nexport {\n  DateTime,\n  arrayify,\n  assertUnreachable,\n  capitalizeString,\n  chunkAndPadBytes,\n  compressBytecode,\n  concat,\n  concatBytes,\n  dataSlice,\n  decodeBase58,\n  decompressBytecode,\n  defaultConsensusKey,\n  defaultSnapshotConfigs,\n  encodeBase58,\n  hexlify,\n  isDefined,\n  normalizeString,\n  sleep,\n  toUtf8Bytes,\n  toUtf8String\n};\n//# sourceMappingURL=index.mjs.map","/**\n * Internal assertion helpers.\n * @module\n */\n/** Asserts something is positive integer. */\nfunction anumber(n) {\n    if (!Number.isSafeInteger(n) || n < 0)\n        throw new Error('positive integer expected, got ' + n);\n}\n/** Is number an Uint8Array? Copied from utils for perf. */\nfunction isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction 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 */\nfunction ahash(h) {\n    if (typeof h !== 'function' || typeof h.create !== 'function')\n        throw new Error('Hash should be wrapped by utils.wrapConstructor');\n    anumber(h.outputLen);\n    anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nfunction 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 */\nfunction 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}\nexport { anumber, abytes, ahash, aexists, aoutput };\n//# sourceMappingURL=_assert.js.map","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';\nimport { abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n// Cast array to different type\nexport function u8(arr) {\n    return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\nexport function u32(arr) {\n    return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n// Cast array to view\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 byteSwapIfBE = isLE\n    ? (n) => n\n    : (n) => byteSwap(n);\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}\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.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    abytes(bytes);\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.\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    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 * Convert JS string to byte array.\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error('utf8ToBytes expected string, got ' + typeof str);\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\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 * Copies several Uint8Arrays into one.\n */\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}\n/** For runtime check if class implements interface */\nexport class Hash {\n    // Safe version that clones internal state\n    clone() {\n        return this._cloneInto();\n    }\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/** Wraps hash function, creating an interface on top of it */\nexport function wrapConstructor(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 wrapConstructorWithOpts(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 wrapXOFConstructorWithOpts(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}\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 crypto.randomBytes(bytesLength);\n    }\n    throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash } from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\nexport class HMAC extends Hash {\n    constructor(hash, _key) {\n        super();\n        this.finished = false;\n        this.destroyed = false;\n        ahash(hash);\n        const key = toBytes(_key);\n        this.iHash = hash.create();\n        if (typeof this.iHash.update !== 'function')\n            throw new Error('Expected instance of class which extends utils.Hash');\n        this.blockLen = this.iHash.blockLen;\n        this.outputLen = this.iHash.outputLen;\n        const blockLen = this.blockLen;\n        const pad = new Uint8Array(blockLen);\n        // blockLen can be bigger than outputLen\n        pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36;\n        this.iHash.update(pad);\n        // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n        this.oHash = hash.create();\n        // Undo internal XOR && apply outer XOR\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36 ^ 0x5c;\n        this.oHash.update(pad);\n        pad.fill(0);\n    }\n    update(buf) {\n        aexists(this);\n        this.iHash.update(buf);\n        return this;\n    }\n    digestInto(out) {\n        aexists(this);\n        abytes(out, this.outputLen);\n        this.finished = true;\n        this.iHash.digestInto(out);\n        this.oHash.update(out);\n        this.oHash.digestInto(out);\n        this.destroy();\n    }\n    digest() {\n        const out = new Uint8Array(this.oHash.outputLen);\n        this.digestInto(out);\n        return out;\n    }\n    _cloneInto(to) {\n        // Create new instance without calling constructor since key already in state and we don't know it.\n        to || (to = Object.create(Object.getPrototypeOf(this), {}));\n        const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n        to = to;\n        to.finished = finished;\n        to.destroyed = destroyed;\n        to.blockLen = blockLen;\n        to.outputLen = outputLen;\n        to.oHash = oHash._cloneInto(to.oHash);\n        to.iHash = iHash._cloneInto(to.iHash);\n        return to;\n    }\n    destroy() {\n        this.destroyed = true;\n        this.oHash.destroy();\n        this.iHash.destroy();\n    }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/**\n * PBKDF (RFC 2898). Can be used to create a key from password and salt.\n * @module\n */\nimport { ahash, anumber } from './_assert.js';\nimport { hmac } from './hmac.js';\nimport { asyncLoop, checkOpts, createView, Hash, toBytes, } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n    ahash(hash);\n    const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n    const { c, dkLen, asyncTick } = opts;\n    anumber(c);\n    anumber(dkLen);\n    anumber(asyncTick);\n    if (c < 1)\n        throw new Error('PBKDF2: iterations (c) should be >= 1');\n    const password = toBytes(_password);\n    const salt = toBytes(_salt);\n    // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n    const DK = new Uint8Array(dkLen);\n    // U1 = PRF(Password, Salt + INT_32_BE(i))\n    const PRF = hmac.create(hash, password);\n    const PRFSalt = PRF._cloneInto().update(salt);\n    return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n    PRF.destroy();\n    PRFSalt.destroy();\n    if (prfW)\n        prfW.destroy();\n    u.fill(0);\n    return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n * @example\n * const key = pbkdf2(sha256, 'password', 'salt', { dkLen: 32, c: 2 ** 18 });\n */\nexport function pbkdf2(hash, password, salt, opts) {\n    const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n    let prfW; // Working copy\n    const arr = new Uint8Array(4);\n    const view = createView(arr);\n    const u = new Uint8Array(PRF.outputLen);\n    // DK = T1 + T2 + ⋯ + Tdklen/hlen\n    for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n        // Ti = F(Password, Salt, c, i)\n        const Ti = DK.subarray(pos, pos + PRF.outputLen);\n        view.setInt32(0, ti, false);\n        // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n        // U1 = PRF(Password, Salt + INT_32_BE(i))\n        (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n        Ti.set(u.subarray(0, Ti.length));\n        for (let ui = 1; ui < c; ui++) {\n            // Uc = PRF(Password, Uc−1)\n            PRF._cloneInto(prfW).update(u).digestInto(u);\n            for (let i = 0; i < Ti.length; i++)\n                Ti[i] ^= u[i];\n        }\n    }\n    return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function. Async version.\n * @example\n * await pbkdf2Async(sha256, 'password', 'salt', { dkLen: 32, c: 500_000 });\n */\nexport async function pbkdf2Async(hash, password, salt, opts) {\n    const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n    let prfW; // Working copy\n    const arr = new Uint8Array(4);\n    const view = createView(arr);\n    const u = new Uint8Array(PRF.outputLen);\n    // DK = T1 + T2 + ⋯ + Tdklen/hlen\n    for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n        // Ti = F(Password, Salt, c, i)\n        const Ti = DK.subarray(pos, pos + PRF.outputLen);\n        view.setInt32(0, ti, false);\n        // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n        // U1 = PRF(Password, Salt + INT_32_BE(i))\n        (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n        Ti.set(u.subarray(0, Ti.length));\n        await asyncLoop(c - 1, asyncTick, () => {\n            // Uc = PRF(Password, Uc−1)\n            PRF._cloneInto(prfW).update(u).digestInto(u);\n            for (let i = 0; i < Ti.length; i++)\n                Ti[i] ^= u[i];\n        });\n    }\n    return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n//# sourceMappingURL=pbkdf2.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { aexists, aoutput } from './_assert.js';\nimport { Hash, 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.blockLen = blockLen;\n        this.outputLen = outputLen;\n        this.padOffset = padOffset;\n        this.isLE = isLE;\n        this.finished = false;\n        this.length = 0;\n        this.pos = 0;\n        this.destroyed = false;\n        this.buffer = new Uint8Array(blockLen);\n        this.view = createView(this.buffer);\n    }\n    update(data) {\n        aexists(this);\n        const { view, buffer, blockLen } = this;\n        data = toBytes(data);\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        this.buffer.subarray(pos).fill(0);\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.length = length;\n        to.pos = pos;\n        to.finished = finished;\n        to.destroyed = destroyed;\n        if (length % blockLen)\n            to.buffer.set(buffer);\n        return to;\n    }\n}\n//# sourceMappingURL=_md.js.map","/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\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 *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n/** Round constants: first 32 bits of fractional parts of the cube roots of the first 64 primes 2..311). */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\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/** Initial state: first 32 bits of fractional parts of the square roots of the first 8 primes 2..19. */\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n/**\n * Temporary buffer, not used to store anything between runs.\n * Named this way because it matches specification.\n */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n    constructor() {\n        super(64, 32, 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        SHA256_W.fill(0);\n    }\n    destroy() {\n        this.set(0, 0, 0, 0, 0, 0, 0, 0);\n        this.buffer.fill(0);\n    }\n}\n/**\n * Constants taken from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf.\n */\nclass SHA224 extends SHA256 {\n    constructor() {\n        super();\n        this.A = 0xc1059ed8 | 0;\n        this.B = 0x367cd507 | 0;\n        this.C = 0x3070dd17 | 0;\n        this.D = 0xf70e5939 | 0;\n        this.E = 0xffc00b31 | 0;\n        this.F = 0x68581511 | 0;\n        this.G = 0x64f98fa7 | 0;\n        this.H = 0xbefa4fa4 | 0;\n        this.outputLen = 28;\n    }\n}\n/** SHA2-256 hash function */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\n/** SHA2-224 hash function */\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","/**\n * RFC 7914 Scrypt KDF. Can be used to create a key from password and salt.\n * @module\n */\nimport { anumber } from './_assert.js';\nimport { pbkdf2 } from './pbkdf2.js';\nimport { sha256 } from './sha256.js';\nimport { asyncLoop, byteSwap32, checkOpts, isLE, rotl, u32 } from './utils.js';\n// The main Scrypt loop: uses Salsa extensively.\n// Six versions of the function were tried, this is the fastest one.\n// prettier-ignore\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n    // Based on https://cr.yp.to/salsa20.html\n    // Xor blocks\n    let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n    let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n    let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n    let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n    let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n    let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n    let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n    let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n    // Save state to temporary variables (salsa)\n    let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n    // Main loop (salsa)\n    for (let i = 0; i < 8; i += 2) {\n        x04 ^= rotl(x00 + x12 | 0, 7);\n        x08 ^= rotl(x04 + x00 | 0, 9);\n        x12 ^= rotl(x08 + x04 | 0, 13);\n        x00 ^= rotl(x12 + x08 | 0, 18);\n        x09 ^= rotl(x05 + x01 | 0, 7);\n        x13 ^= rotl(x09 + x05 | 0, 9);\n        x01 ^= rotl(x13 + x09 | 0, 13);\n        x05 ^= rotl(x01 + x13 | 0, 18);\n        x14 ^= rotl(x10 + x06 | 0, 7);\n        x02 ^= rotl(x14 + x10 | 0, 9);\n        x06 ^= rotl(x02 + x14 | 0, 13);\n        x10 ^= rotl(x06 + x02 | 0, 18);\n        x03 ^= rotl(x15 + x11 | 0, 7);\n        x07 ^= rotl(x03 + x15 | 0, 9);\n        x11 ^= rotl(x07 + x03 | 0, 13);\n        x15 ^= rotl(x11 + x07 | 0, 18);\n        x01 ^= rotl(x00 + x03 | 0, 7);\n        x02 ^= rotl(x01 + x00 | 0, 9);\n        x03 ^= rotl(x02 + x01 | 0, 13);\n        x00 ^= rotl(x03 + x02 | 0, 18);\n        x06 ^= rotl(x05 + x04 | 0, 7);\n        x07 ^= rotl(x06 + x05 | 0, 9);\n        x04 ^= rotl(x07 + x06 | 0, 13);\n        x05 ^= rotl(x04 + x07 | 0, 18);\n        x11 ^= rotl(x10 + x09 | 0, 7);\n        x08 ^= rotl(x11 + x10 | 0, 9);\n        x09 ^= rotl(x08 + x11 | 0, 13);\n        x10 ^= rotl(x09 + x08 | 0, 18);\n        x12 ^= rotl(x15 + x14 | 0, 7);\n        x13 ^= rotl(x12 + x15 | 0, 9);\n        x14 ^= rotl(x13 + x12 | 0, 13);\n        x15 ^= rotl(x14 + x13 | 0, 18);\n    }\n    // Write output (salsa)\n    out[oi++] = (y00 + x00) | 0;\n    out[oi++] = (y01 + x01) | 0;\n    out[oi++] = (y02 + x02) | 0;\n    out[oi++] = (y03 + x03) | 0;\n    out[oi++] = (y04 + x04) | 0;\n    out[oi++] = (y05 + x05) | 0;\n    out[oi++] = (y06 + x06) | 0;\n    out[oi++] = (y07 + x07) | 0;\n    out[oi++] = (y08 + x08) | 0;\n    out[oi++] = (y09 + x09) | 0;\n    out[oi++] = (y10 + x10) | 0;\n    out[oi++] = (y11 + x11) | 0;\n    out[oi++] = (y12 + x12) | 0;\n    out[oi++] = (y13 + x13) | 0;\n    out[oi++] = (y14 + x14) | 0;\n    out[oi++] = (y15 + x15) | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n    // The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)\n    let head = oi + 0;\n    let tail = oi + 16 * r;\n    for (let i = 0; i < 16; i++)\n        out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]\n    for (let i = 0; i < r; i++, head += 16, ii += 16) {\n        // We write odd & even Yi at same time. Even: 0bXXXXX0 Odd:  0bXXXXX1\n        XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])\n        if (i > 0)\n            tail += 16; // First iteration overwrites tmp value in tail\n        XorAndSalsa(out, head, input, (ii += 16), out, tail); // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])\n    }\n}\n// Common prologue and epilogue for sync/async functions\nfunction scryptInit(password, salt, _opts) {\n    // Maxmem - 1GB+1KB by default\n    const opts = checkOpts({\n        dkLen: 32,\n        asyncTick: 10,\n        maxmem: 1024 ** 3 + 1024,\n    }, _opts);\n    const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n    anumber(N);\n    anumber(r);\n    anumber(p);\n    anumber(dkLen);\n    anumber(asyncTick);\n    anumber(maxmem);\n    if (onProgress !== undefined && typeof onProgress !== 'function')\n        throw new Error('progressCb should be function');\n    const blockSize = 128 * r;\n    const blockSize32 = blockSize / 4;\n    // Max N is 2^32 (Integrify is 32-bit). Real limit is 2^22: JS engines Uint8Array limit is 4GB in 2024.\n    // Spec check `N >= 2 ** (blockSize / 8)` is not done for compat with popular libs,\n    // which used incorrect r: 1, p: 8. Also, the check seems to be a spec error:\n    // https://www.rfc-editor.org/errata_search.php?rfc=7914\n    if (N <= 1 || (N & (N - 1)) !== 0 || N > 2 ** 32) {\n        throw new Error('Scrypt: N must be larger than 1, a power of 2, and less than 2^32');\n    }\n    if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) {\n        throw new Error('Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)');\n    }\n    if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) {\n        throw new Error('Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32');\n    }\n    const memUsed = blockSize * (N + p);\n    if (memUsed > maxmem) {\n        throw new Error('Scrypt: memused is bigger than maxMem. Expected 128 * r * (N + p) > maxmem of ' + maxmem);\n    }\n    // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)\n    // Since it has only one iteration there is no reason to use async variant\n    const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n    const B32 = u32(B);\n    // Re-used between parallel iterations. Array(iterations) of B\n    const V = u32(new Uint8Array(blockSize * N));\n    const tmp = u32(new Uint8Array(blockSize));\n    let blockMixCb = () => { };\n    if (onProgress) {\n        const totalBlockMix = 2 * N * p;\n        // Invoke callback if progress changes from 10.01 to 10.02\n        // Allows to draw smooth progress bar on up to 8K screen\n        const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);\n        let blockMixCnt = 0;\n        blockMixCb = () => {\n            blockMixCnt++;\n            if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n                onProgress(blockMixCnt / totalBlockMix);\n        };\n    }\n    return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n    const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n    B.fill(0);\n    V.fill(0);\n    tmp.fill(0);\n    return res;\n}\n/**\n * Scrypt KDF from RFC 7914.\n * @param password - pass\n * @param salt - salt\n * @param opts - parameters\n * - `N` is cpu/mem work factor (power of 2 e.g. 2**18)\n * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance\n * - `p` is parallelization factor (1 is common)\n * - `dkLen` is output key length in bytes e.g. 32.\n * - `asyncTick` - (default: 10) max time in ms for which async function can block execution\n * - `maxmem` - (default: `1024 ** 3 + 1024` aka 1GB+1KB). A limit that the app could use for scrypt\n * - `onProgress` - callback function that would be executed for progress report\n * @returns Derived key\n * @example\n * scrypt('password', 'salt', { N: 2**18, r: 8, p: 1, dkLen: 32 });\n */\nexport function scrypt(password, salt, opts) {\n    const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);\n    if (!isLE)\n        byteSwap32(B32);\n    for (let pi = 0; pi < p; pi++) {\n        const Pi = blockSize32 * pi;\n        for (let i = 0; i < blockSize32; i++)\n            V[i] = B32[Pi + i]; // V[0] = B[i]\n        for (let i = 0, pos = 0; i < N - 1; i++) {\n            BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n            blockMixCb();\n        }\n        BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n        blockMixCb();\n        for (let i = 0; i < N; i++) {\n            // First u32 of the last 64-byte block (u32 is LE)\n            const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n            for (let k = 0; k < blockSize32; k++)\n                tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n            BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n            blockMixCb();\n        }\n    }\n    if (!isLE)\n        byteSwap32(B32);\n    return scryptOutput(password, dkLen, B, V, tmp);\n}\n/**\n * Scrypt KDF from RFC 7914. Async version.\n * @example\n * await scryptAsync('password', 'salt', { N: 2**18, r: 8, p: 1, dkLen: 32 });\n */\nexport async function scryptAsync(password, salt, opts) {\n    const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n    if (!isLE)\n        byteSwap32(B32);\n    for (let pi = 0; pi < p; pi++) {\n        const Pi = blockSize32 * pi;\n        for (let i = 0; i < blockSize32; i++)\n            V[i] = B32[Pi + i]; // V[0] = B[i]\n        let pos = 0;\n        await asyncLoop(N - 1, asyncTick, () => {\n            BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n            blockMixCb();\n        });\n        BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n        blockMixCb();\n        await asyncLoop(N, asyncTick, () => {\n            // First u32 of the last 64-byte block (u32 is LE)\n            const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n            for (let k = 0; k < blockSize32; k++)\n                tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n            BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n            blockMixCb();\n        });\n    }\n    if (!isLE)\n        byteSwap32(B32);\n    return scryptOutput(password, dkLen, B, V, tmp);\n}\n//# sourceMappingURL=scrypt.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    let Ah = new Uint32Array(lst.length);\n    let Al = new Uint32Array(lst.length);\n    for (let i = 0; i < lst.length; 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 { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\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 * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { abytes, aexists, anumber, aoutput } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport { byteSwap32, Hash, isLE, toBytes, u32, wrapConstructor, wrapXOFConstructorWithOpts, } from './utils.js';\n// Various per round constants calculations\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n    // Pi\n    [x, y] = [y, (2 * x + 3 * y) % 5];\n    SHA3_PI.push(2 * (5 * y + x));\n    // Rotational\n    SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n    // Iota\n    let t = _0n;\n    for (let j = 0; j < 7; j++) {\n        R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n        if (R & _2n)\n            t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n    }\n    _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s, rounds = 24) {\n    const B = new Uint32Array(5 * 2);\n    // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n    for (let round = 24 - rounds; round < 24; round++) {\n        // Theta θ\n        for (let x = 0; x < 10; x++)\n            B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n        for (let x = 0; x < 10; x += 2) {\n            const idx1 = (x + 8) % 10;\n            const idx0 = (x + 2) % 10;\n            const B0 = B[idx0];\n            const B1 = B[idx0 + 1];\n            const Th = rotlH(B0, B1, 1) ^ B[idx1];\n            const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n            for (let y = 0; y < 50; y += 10) {\n                s[x + y] ^= Th;\n                s[x + y + 1] ^= Tl;\n            }\n        }\n        // Rho (ρ) and Pi (π)\n        let curH = s[2];\n        let curL = s[3];\n        for (let t = 0; t < 24; t++) {\n            const shift = SHA3_ROTL[t];\n            const Th = rotlH(curH, curL, shift);\n            const Tl = rotlL(curH, curL, shift);\n            const PI = SHA3_PI[t];\n            curH = s[PI];\n            curL = s[PI + 1];\n            s[PI] = Th;\n            s[PI + 1] = Tl;\n        }\n        // Chi (χ)\n        for (let y = 0; y < 50; y += 10) {\n            for (let x = 0; x < 10; x++)\n                B[x] = s[y + x];\n            for (let x = 0; x < 10; x++)\n                s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n        }\n        // Iota (ι)\n        s[0] ^= SHA3_IOTA_H[round];\n        s[1] ^= SHA3_IOTA_L[round];\n    }\n    B.fill(0);\n}\n/** Keccak sponge function. */\nexport class Keccak extends Hash {\n    // NOTE: we accept arguments in bytes instead of bits here.\n    constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n        super();\n        this.blockLen = blockLen;\n        this.suffix = suffix;\n        this.outputLen = outputLen;\n        this.enableXOF = enableXOF;\n        this.rounds = rounds;\n        this.pos = 0;\n        this.posOut = 0;\n        this.finished = false;\n        this.destroyed = false;\n        // Can be passed from user as dkLen\n        anumber(outputLen);\n        // 1600 = 5x5 matrix of 64bit.  1600 bits === 200 bytes\n        // 0 < blockLen < 200\n        if (0 >= this.blockLen || this.blockLen >= 200)\n            throw new Error('Sha3 supports only keccak-f1600 function');\n        this.state = new Uint8Array(200);\n        this.state32 = u32(this.state);\n    }\n    keccak() {\n        if (!isLE)\n            byteSwap32(this.state32);\n        keccakP(this.state32, this.rounds);\n        if (!isLE)\n            byteSwap32(this.state32);\n        this.posOut = 0;\n        this.pos = 0;\n    }\n    update(data) {\n        aexists(this);\n        const { blockLen, state } = this;\n        data = toBytes(data);\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            for (let i = 0; i < take; i++)\n                state[this.pos++] ^= data[pos++];\n            if (this.pos === blockLen)\n                this.keccak();\n        }\n        return this;\n    }\n    finish() {\n        if (this.finished)\n            return;\n        this.finished = true;\n        const { state, suffix, pos, blockLen } = this;\n        // Do the padding\n        state[pos] ^= suffix;\n        if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n            this.keccak();\n        state[blockLen - 1] ^= 0x80;\n        this.keccak();\n    }\n    writeInto(out) {\n        aexists(this, false);\n        abytes(out);\n        this.finish();\n        const bufferOut = this.state;\n        const { blockLen } = this;\n        for (let pos = 0, len = out.length; pos < len;) {\n            if (this.posOut >= blockLen)\n                this.keccak();\n            const take = Math.min(blockLen - this.posOut, len - pos);\n            out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n            this.posOut += take;\n            pos += take;\n        }\n        return out;\n    }\n    xofInto(out) {\n        // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n        if (!this.enableXOF)\n            throw new Error('XOF is not possible for this instance');\n        return this.writeInto(out);\n    }\n    xof(bytes) {\n        anumber(bytes);\n        return this.xofInto(new Uint8Array(bytes));\n    }\n    digestInto(out) {\n        aoutput(out, this);\n        if (this.finished)\n            throw new Error('digest() was already called');\n        this.writeInto(out);\n        this.destroy();\n        return out;\n    }\n    digest() {\n        return this.digestInto(new Uint8Array(this.outputLen));\n    }\n    destroy() {\n        this.destroyed = true;\n        this.state.fill(0);\n    }\n    _cloneInto(to) {\n        const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n        to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n        to.state32.set(this.state32);\n        to.pos = this.pos;\n        to.posOut = this.posOut;\n        to.finished = this.finished;\n        to.rounds = rounds;\n        // Suffix can change in cSHAKE\n        to.suffix = suffix;\n        to.outputLen = outputLen;\n        to.enableXOF = enableXOF;\n        to.destroyed = this.destroyed;\n        return to;\n    }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n/** SHA3-224 hash function. */\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\n/** SHA3-384 hash function. */\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\n/** SHA3-512 hash function. */\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\n/** keccak-224 hash function. */\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\n/** keccak-384 hash function. */\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\n/** keccak-512 hash function. */\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n//# sourceMappingURL=sha3.js.map","/**\n * RIPEMD-160 legacy hash function.\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n * @module\n */\nimport { HashMD } from './_md.js';\nimport { rotl, wrapConstructor } from './utils.js';\nconst Rho = /* @__PURE__ */ new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = /* @__PURE__ */ new Uint8Array(new Array(16).fill(0).map((_, i) => i));\nconst Pi = /* @__PURE__ */ Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n    for (let j of [idxL, idxR])\n        j.push(j[i].map((k) => Rho[k]));\nconst shifts = /* @__PURE__ */ [\n    [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n    [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n    [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n    [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n    [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = /* @__PURE__ */ new Uint32Array([\n    0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\nconst Kr = /* @__PURE__ */ new Uint32Array([\n    0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n    if (group === 0)\n        return x ^ y ^ z;\n    else if (group === 1)\n        return (x & y) | (~x & z);\n    else if (group === 2)\n        return (x | ~y) ^ z;\n    else if (group === 3)\n        return (x & z) | (y & ~z);\n    else\n        return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst R_BUF = /* @__PURE__ */ new Uint32Array(16);\nexport class RIPEMD160 extends HashMD {\n    constructor() {\n        super(64, 20, 8, true);\n        this.h0 = 0x67452301 | 0;\n        this.h1 = 0xefcdab89 | 0;\n        this.h2 = 0x98badcfe | 0;\n        this.h3 = 0x10325476 | 0;\n        this.h4 = 0xc3d2e1f0 | 0;\n    }\n    get() {\n        const { h0, h1, h2, h3, h4 } = this;\n        return [h0, h1, h2, h3, h4];\n    }\n    set(h0, h1, h2, h3, h4) {\n        this.h0 = h0 | 0;\n        this.h1 = h1 | 0;\n        this.h2 = h2 | 0;\n        this.h3 = h3 | 0;\n        this.h4 = h4 | 0;\n    }\n    process(view, offset) {\n        for (let i = 0; i < 16; i++, offset += 4)\n            R_BUF[i] = view.getUint32(offset, true);\n        // prettier-ignore\n        let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n        // Instead of iterating 0 to 80, we split it into 5 groups\n        // And use the groups in constants, functions, etc. Much simpler\n        for (let group = 0; group < 5; group++) {\n            const rGroup = 4 - group;\n            const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n            const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n            const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n            for (let i = 0; i < 16; i++) {\n                const tl = (rotl(al + f(group, bl, cl, dl) + R_BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n                al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n            }\n            // 2 loops are 10% faster\n            for (let i = 0; i < 16; i++) {\n                const tr = (rotl(ar + f(rGroup, br, cr, dr) + R_BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n                ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n            }\n        }\n        // Add the compressed chunk to the current hash value\n        this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n    }\n    roundClean() {\n        R_BUF.fill(0);\n    }\n    destroy() {\n        this.destroyed = true;\n        this.buffer.fill(0);\n        this.set(0, 0, 0, 0, 0);\n    }\n}\n/** RIPEMD-160 - a legacy hash function from 1990s. */\nexport const ripemd160 = /* @__PURE__ */ wrapConstructor(() => new RIPEMD160());\n//# sourceMappingURL=ripemd160.js.map","/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n */\nimport { HashMD } from './_md.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__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))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n    constructor() {\n        super(128, 64, 16, false);\n        // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n        // Also looks cleaner and easier to verify with spec.\n        // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = 0x6a09e667 | 0;\n        this.Al = 0xf3bcc908 | 0;\n        this.Bh = 0xbb67ae85 | 0;\n        this.Bl = 0x84caa73b | 0;\n        this.Ch = 0x3c6ef372 | 0;\n        this.Cl = 0xfe94f82b | 0;\n        this.Dh = 0xa54ff53a | 0;\n        this.Dl = 0x5f1d36f1 | 0;\n        this.Eh = 0x510e527f | 0;\n        this.El = 0xade682d1 | 0;\n        this.Fh = 0x9b05688c | 0;\n        this.Fl = 0x2b3e6c1f | 0;\n        this.Gh = 0x1f83d9ab | 0;\n        this.Gl = 0xfb41bd6b | 0;\n        this.Hh = 0x5be0cd19 | 0;\n        this.Hl = 0x137e2179 | 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        SHA512_W_H.fill(0);\n        SHA512_W_L.fill(0);\n    }\n    destroy() {\n        this.buffer.fill(0);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\nexport class SHA512_224 extends SHA512 {\n    constructor() {\n        super();\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = 0x8c3d37c8 | 0;\n        this.Al = 0x19544da2 | 0;\n        this.Bh = 0x73e19966 | 0;\n        this.Bl = 0x89dcd4d6 | 0;\n        this.Ch = 0x1dfab7ae | 0;\n        this.Cl = 0x32ff9c82 | 0;\n        this.Dh = 0x679dd514 | 0;\n        this.Dl = 0x582f9fcf | 0;\n        this.Eh = 0x0f6d2b69 | 0;\n        this.El = 0x7bd44da8 | 0;\n        this.Fh = 0x77e36f73 | 0;\n        this.Fl = 0x04c48942 | 0;\n        this.Gh = 0x3f9d85a8 | 0;\n        this.Gl = 0x6a1d36c8 | 0;\n        this.Hh = 0x1112e6ad | 0;\n        this.Hl = 0x91d692a1 | 0;\n        this.outputLen = 28;\n    }\n}\nexport class SHA512_256 extends SHA512 {\n    constructor() {\n        super();\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = 0x22312194 | 0;\n        this.Al = 0xfc2bf72c | 0;\n        this.Bh = 0x9f555fa3 | 0;\n        this.Bl = 0xc84c64c2 | 0;\n        this.Ch = 0x2393b86b | 0;\n        this.Cl = 0x6f53b151 | 0;\n        this.Dh = 0x96387719 | 0;\n        this.Dl = 0x5940eabd | 0;\n        this.Eh = 0x96283ee2 | 0;\n        this.El = 0xa88effe3 | 0;\n        this.Fh = 0xbe5e1e25 | 0;\n        this.Fl = 0x53863992 | 0;\n        this.Gh = 0x2b0199fc | 0;\n        this.Gl = 0x2c85b8aa | 0;\n        this.Hh = 0x0eb72ddc | 0;\n        this.Hl = 0x81c52ca2 | 0;\n        this.outputLen = 32;\n    }\n}\nexport class SHA384 extends SHA512 {\n    constructor() {\n        super();\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = 0xcbbb9d5d | 0;\n        this.Al = 0xc1059ed8 | 0;\n        this.Bh = 0x629a292a | 0;\n        this.Bl = 0x367cd507 | 0;\n        this.Ch = 0x9159015a | 0;\n        this.Cl = 0x3070dd17 | 0;\n        this.Dh = 0x152fecd8 | 0;\n        this.Dl = 0xf70e5939 | 0;\n        this.Eh = 0x67332667 | 0;\n        this.El = 0xffc00b31 | 0;\n        this.Fh = 0x8eb44a87 | 0;\n        this.Fl = 0x68581511 | 0;\n        this.Gh = 0xdb0c2e0d | 0;\n        this.Gl = 0x64f98fa7 | 0;\n        this.Hh = 0x47b5481d | 0;\n        this.Hl = 0xbefa4fa4 | 0;\n        this.outputLen = 48;\n    }\n}\n/** SHA2-512 hash function. */\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\n/** SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\n/** SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\n/** SHA2-384 hash function. */\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/shared/scrypt.ts\nimport { scrypt as scryptNoble } from \"@noble/hashes/scrypt\";\nvar scrypt = /* @__PURE__ */ __name((params) => {\n  const { password, salt, n, p, r, dklen } = params;\n  const derivedKey = scryptNoble(password, salt, { N: n, r, p, dkLen: dklen });\n  return derivedKey;\n}, \"scrypt\");\n\n// src/shared/keccak256.ts\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nvar keccak256 = /* @__PURE__ */ __name((data) => keccak_256(data), \"keccak256\");\n\n// src/shared/ripemd160.ts\nimport { arrayify } from \"@fuel-ts/utils\";\nimport { ripemd160 as noble_ripemd160 } from \"@noble/hashes/ripemd160\";\nfunction ripemd160(_data) {\n  const data = arrayify(_data, \"data\");\n  return noble_ripemd160(data);\n}\n__name(ripemd160, \"ripemd160\");\n\n// src/browser/aes-ctr.ts\nimport { ErrorCode as ErrorCode2, FuelError as FuelError2 } from \"@fuel-ts/errors\";\nimport { arrayify as arrayify2 } from \"@fuel-ts/utils\";\n\n// src/browser/bufferFromString.ts\nvar bufferFromString = /* @__PURE__ */ __name((string, encoding = \"base64\") => {\n  switch (encoding) {\n    case \"utf-8\": {\n      return new TextEncoder().encode(string);\n    }\n    case \"base64\": {\n      const binaryString = atob(string);\n      const len = binaryString.length;\n      const bytes = new Uint8Array(len).map((_, i) => binaryString.charCodeAt(i));\n      return bytes;\n    }\n    case \"hex\":\n    default: {\n      const bufferLength = string.length / 2;\n      const buffer = new Uint8Array(bufferLength).map((_, i) => {\n        const startIndex = i * 2;\n        const byteValue = parseInt(string.substring(startIndex, startIndex + 2), 16);\n        return byteValue;\n      });\n      return buffer;\n    }\n  }\n}, \"bufferFromString\");\n\n// src/browser/pbkdf2.ts\nimport { hexlify } from \"@fuel-ts/utils\";\nimport { pbkdf2 as pb } from \"@noble/hashes/pbkdf2\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nvar pbkdf2 = /* @__PURE__ */ __name((password, salt, iterations, keylen, algo) => {\n  const algorithm = { sha256, sha512 }[algo];\n  return hexlify(pb(algorithm, password, salt, { c: iterations, dkLen: keylen }));\n}, \"pbkdf2\");\n\n// src/browser/crypto.ts\nimport { ErrorCode, FuelError } from \"@fuel-ts/errors\";\nvar { crypto: crypto2, btoa } = globalThis;\nif (!crypto2) {\n  throw new FuelError(\n    ErrorCode.ENV_DEPENDENCY_MISSING,\n    `Could not find 'crypto' in current browser environment.`\n  );\n}\nif (!btoa) {\n  throw new FuelError(\n    ErrorCode.ENV_DEPENDENCY_MISSING,\n    `Could not find 'btoa' in current browser environment.`\n  );\n}\n\n// src/browser/randomBytes.ts\nvar randomBytes = /* @__PURE__ */ __name((length) => {\n  const randomValues = crypto2.getRandomValues(new Uint8Array(length));\n  return randomValues;\n}, \"randomBytes\");\n\n// src/browser/stringFromBuffer.ts\nvar stringFromBuffer = /* @__PURE__ */ __name((buffer, encoding = \"base64\") => {\n  switch (encoding) {\n    case \"utf-8\": {\n      return new TextDecoder().decode(buffer);\n    }\n    case \"base64\": {\n      const binary = String.fromCharCode.apply(null, new Uint8Array(buffer));\n      return btoa(binary);\n    }\n    case \"hex\":\n    default: {\n      let hexString = \"\";\n      for (let i = 0; i < buffer.length; i += 1) {\n        const hex = buffer[i].toString(16);\n        hexString += hex.length === 1 ? `0${hex}` : hex;\n      }\n      return hexString;\n    }\n  }\n}, \"stringFromBuffer\");\n\n// src/browser/aes-ctr.ts\nvar ALGORITHM = \"AES-CTR\";\nvar keyFromPassword = /* @__PURE__ */ __name((password, saltBuffer) => {\n  const passBuffer = bufferFromString(String(password).normalize(\"NFKC\"), \"utf-8\");\n  const key = pbkdf2(passBuffer, saltBuffer, 1e5, 32, \"sha256\");\n  return arrayify2(key);\n}, \"keyFromPassword\");\nvar encrypt = /* @__PURE__ */ __name(async (password, data) => {\n  const iv = randomBytes(16);\n  const salt = randomBytes(32);\n  const secret = keyFromPassword(password, salt);\n  const dataString = JSON.stringify(data);\n  const dataBuffer = bufferFromString(dataString, \"utf-8\");\n  const alg = {\n    name: ALGORITHM,\n    counter: iv,\n    length: 64\n  };\n  const key = await crypto.subtle.importKey(\"raw\", secret, alg, false, [\"encrypt\"]);\n  const encBuffer = await crypto.subtle.encrypt(alg, key, dataBuffer);\n  return {\n    data: stringFromBuffer(new Uint8Array(encBuffer)),\n    iv: stringFromBuffer(iv),\n    salt: stringFromBuffer(salt)\n  };\n}, \"encrypt\");\nvar decrypt = /* @__PURE__ */ __name(async (password, keystore) => {\n  const iv = bufferFromString(keystore.iv);\n  const salt = bufferFromString(keystore.salt);\n  const secret = keyFromPassword(password, salt);\n  const encryptedText = bufferFromString(keystore.data);\n  const alg = {\n    name: ALGORITHM,\n    counter: iv,\n    length: 64\n  };\n  const key = await crypto.subtle.importKey(\"raw\", secret, alg, false, [\"decrypt\"]);\n  const ptBuffer = await crypto.subtle.decrypt(alg, key, encryptedText);\n  const decryptedData = new TextDecoder().decode(ptBuffer);\n  try {\n    return JSON.parse(decryptedData);\n  } catch {\n    throw new FuelError2(ErrorCode2.INVALID_CREDENTIALS, \"Invalid credentials.\");\n  }\n}, \"decrypt\");\n\n// src/browser/encryptJsonWalletData.ts\nvar encryptJsonWalletData = /* @__PURE__ */ __name(async (data, key, iv) => {\n  const subtle = crypto2.subtle;\n  const keyBuffer = new Uint8Array(key.subarray(0, 16));\n  const ivBuffer = iv;\n  const dataBuffer = data;\n  const cryptoKey = await subtle.importKey(\n    \"raw\",\n    keyBuffer,\n    { name: \"AES-CTR\", length: 128 },\n    false,\n    [\"encrypt\", \"decrypt\"]\n  );\n  const encrypted = await subtle.encrypt(\n    { name: \"AES-CTR\", counter: ivBuffer, length: 128 },\n    cryptoKey,\n    dataBuffer\n  );\n  return new Uint8Array(encrypted);\n}, \"encryptJsonWalletData\");\nvar decryptJsonWalletData = /* @__PURE__ */ __name(async (data, key, iv) => {\n  const subtle = crypto2.subtle;\n  const keyBuffer = new Uint8Array(key.subarray(0, 16)).buffer;\n  const ivBuffer = new Uint8Array(iv).buffer;\n  const dataBuffer = new Uint8Array(data).buffer;\n  const cryptoKey = await subtle.importKey(\n    \"raw\",\n    keyBuffer,\n    { name: \"AES-CTR\", length: 128 },\n    false,\n    [\"encrypt\", \"decrypt\"]\n  );\n  const decrypted = await subtle.decrypt(\n    { name: \"AES-CTR\", counter: ivBuffer, length: 128 },\n    cryptoKey,\n    dataBuffer\n  );\n  return new Uint8Array(decrypted);\n}, \"decryptJsonWalletData\");\n\n// src/browser/hmac.ts\nimport { hexlify as hexlify2 } from \"@fuel-ts/utils\";\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { sha256 as sha2562 } from \"@noble/hashes/sha256\";\nimport { sha512 as sha5122 } from \"@noble/hashes/sha512\";\nvar computeHmac = /* @__PURE__ */ __name((algorithm, key, data) => {\n  const hash = algorithm === \"sha256\" ? sha2562 : sha5122;\n  const signature = hmac.create(hash, key).update(data).digest();\n  return hexlify2(signature);\n}, \"computeHmac\");\n\n// src/browser/randomUUID.ts\nvar randomUUID = /* @__PURE__ */ __name(() => crypto2.randomUUID(), \"randomUUID\");\n\n// src/browser/index.ts\nvar api = {\n  bufferFromString,\n  stringFromBuffer,\n  decrypt,\n  encrypt,\n  keyFromPassword,\n  randomBytes,\n  scrypt,\n  keccak256,\n  decryptJsonWalletData,\n  encryptJsonWalletData,\n  computeHmac,\n  pbkdf2,\n  ripemd160,\n  randomUUID\n};\nvar browser_default = api;\n\n// src/index.browser.ts\nvar {\n  bufferFromString: bufferFromString2,\n  decrypt: decrypt2,\n  encrypt: encrypt2,\n  keyFromPassword: keyFromPassword2,\n  randomBytes: randomBytes2,\n  stringFromBuffer: stringFromBuffer2,\n  scrypt: scrypt2,\n  keccak256: keccak2562,\n  decryptJsonWalletData: decryptJsonWalletData2,\n  encryptJsonWalletData: encryptJsonWalletData2,\n  pbkdf2: pbkdf22,\n  computeHmac: computeHmac2,\n  ripemd160: ripemd1602,\n  randomUUID: randomUUID2\n} = browser_default;\nexport {\n  bufferFromString2 as bufferFromString,\n  computeHmac2 as computeHmac,\n  decrypt2 as decrypt,\n  decryptJsonWalletData2 as decryptJsonWalletData,\n  encrypt2 as encrypt,\n  encryptJsonWalletData2 as encryptJsonWalletData,\n  keccak2562 as keccak256,\n  keyFromPassword2 as keyFromPassword,\n  pbkdf22 as pbkdf2,\n  randomBytes2 as randomBytes,\n  randomUUID2 as randomUUID,\n  ripemd1602 as ripemd160,\n  scrypt2 as scrypt,\n  stringFromBuffer2 as stringFromBuffer\n};\n//# sourceMappingURL=index.browser.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/hasher.ts\nimport { arrayify, concat, hexlify, toUtf8Bytes } from \"@fuel-ts/utils\";\nimport { sha256 as sha256AsBytes } from \"@noble/hashes/sha256\";\nvar MESSAGE_PREFIX = \"\u0019Fuel Signed Message:\\n\";\nfunction sha256(data) {\n  return hexlify(sha256AsBytes(arrayify(data)));\n}\n__name(sha256, \"sha256\");\nfunction hash(data) {\n  return sha256(data);\n}\n__name(hash, \"hash\");\nfunction uint64ToBytesBE(value) {\n  const bigIntValue = BigInt(value);\n  const buffer = new ArrayBuffer(8);\n  const dataView = new DataView(buffer);\n  dataView.setBigUint64(0, bigIntValue, false);\n  return new Uint8Array(dataView.buffer);\n}\n__name(uint64ToBytesBE, \"uint64ToBytesBE\");\nfunction hashMessage(message) {\n  if (typeof message === \"string\") {\n    return sha256(toUtf8Bytes(message));\n  }\n  const { personalSign } = message;\n  const messageBytes = typeof personalSign === \"string\" ? toUtf8Bytes(personalSign) : personalSign;\n  const payload = concat([\n    toUtf8Bytes(MESSAGE_PREFIX),\n    toUtf8Bytes(String(messageBytes.length)),\n    messageBytes\n  ]);\n  return hexlify(sha256(payload));\n}\n__name(hashMessage, \"hashMessage\");\nexport {\n  hash,\n  hashMessage,\n  sha256,\n  uint64ToBytesBE\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/encoding/coders/AbstractCoder.ts\nvar Coder = class {\n  static {\n    __name(this, \"Coder\");\n  }\n  name;\n  type;\n  encodedLength;\n  constructor(name, type, encodedLength) {\n    this.name = name;\n    this.type = type;\n    this.encodedLength = encodedLength;\n  }\n};\n\n// src/encoding/coders/ArrayCoder.ts\nimport { ErrorCode, FuelError } from \"@fuel-ts/errors\";\nimport { concat } from \"@fuel-ts/utils\";\n\n// src/utils/constants.ts\nvar U8_CODER_TYPE = \"u8\";\nvar U16_CODER_TYPE = \"u16\";\nvar U32_CODER_TYPE = \"u32\";\nvar U64_CODER_TYPE = \"u64\";\nvar U256_CODER_TYPE = \"u256\";\nvar RAW_PTR_CODER_TYPE = \"raw untyped ptr\";\nvar RAW_SLICE_CODER_TYPE = \"raw untyped slice\";\nvar BOOL_CODER_TYPE = \"bool\";\nvar B256_CODER_TYPE = \"b256\";\nvar B512_CODER_TYPE = \"struct std::b512::B512\";\nvar OPTION_CODER_TYPE = \"enum std::option::Option\";\nvar VEC_CODER_TYPE = \"struct std::vec::Vec\";\nvar BYTES_CODER_TYPE = \"struct std::bytes::Bytes\";\nvar STD_STRING_CODER_TYPE = \"struct std::string::String\";\nvar STR_SLICE_CODER_TYPE = \"str\";\nvar VOID_TYPE = \"()\";\nvar optionRegEx = /^enum (std::option::)?Option$/m;\nvar stringRegEx = /^str\\[(?<length>[0-9]+)\\]/;\nvar arrayRegEx = /^\\[(?<item>[\\w\\s\\\\[\\]]+);\\s*(?<length>[0-9]+)\\]/;\nvar structRegEx = /^struct.+/;\nvar enumRegEx = /^enum.+$/;\nvar tupleRegEx = /^\\((?<items>.*)\\)$/;\nvar genericRegEx = /^generic.+$/;\nvar fullNameRegExMatch = /([^\\s]+)$/m;\nvar ENCODING_V1 = \"1\";\nvar WORD_SIZE = 8;\nvar BYTES_32 = 32;\nvar UTXO_ID_LEN = BYTES_32 + 2;\nvar ASSET_ID_LEN = BYTES_32;\nvar CONTRACT_ID_LEN = BYTES_32;\nvar ADDRESS_LEN = BYTES_32;\nvar NONCE_LEN = BYTES_32;\nvar TX_LEN = WORD_SIZE * 4;\nvar TX_POINTER_LEN = WORD_SIZE * 2;\nvar MAX_BYTES = 2 ** 32 - 1;\nvar calculateVmTxMemory = /* @__PURE__ */ __name(({ maxInputs }) => BYTES_32 + // Tx ID\nASSET_ID_LEN + // Base asset ID\n// Asset ID/Balance coin input pairs\nmaxInputs * (ASSET_ID_LEN + WORD_SIZE) + WORD_SIZE, \"calculateVmTxMemory\");\nvar SCRIPT_FIXED_SIZE = WORD_SIZE + // Identifier\nWORD_SIZE + // Gas limit\nWORD_SIZE + // Script size\nWORD_SIZE + // Script data size\nWORD_SIZE + // Policies\nWORD_SIZE + // Inputs size\nWORD_SIZE + // Outputs size\nWORD_SIZE + // Witnesses size\nBYTES_32;\nvar INPUT_COIN_FIXED_SIZE = WORD_SIZE + // Identifier\nTX_LEN + // Utxo Length\nWORD_SIZE + // Output Index\nADDRESS_LEN + // Owner\nWORD_SIZE + // Amount\nASSET_ID_LEN + // Asset id\nTX_POINTER_LEN + // TxPointer\nWORD_SIZE + // Witnesses index\nWORD_SIZE + // Predicate size\nWORD_SIZE + // Predicate data size\nWORD_SIZE;\nvar INPUT_MESSAGE_FIXED_SIZE = WORD_SIZE + // Identifier\nADDRESS_LEN + // Sender\nADDRESS_LEN + // Recipient\nWORD_SIZE + // Amount\nNONCE_LEN + // Nonce\nWORD_SIZE + // witness_index\nWORD_SIZE + // Data size\nWORD_SIZE + // Predicate size\nWORD_SIZE + // Predicate data size\nWORD_SIZE;\n\n// src/utils/utilities.ts\nvar isUint8Array = /* @__PURE__ */ __name((value) => value instanceof Uint8Array, \"isUint8Array\");\nvar hasNestedOption = /* @__PURE__ */ __name((coders) => {\n  const array = Array.isArray(coders) ? coders : Object.values(coders);\n  for (const node of array) {\n    if (node.type === OPTION_CODER_TYPE) {\n      return true;\n    }\n    if (\"coder\" in node && node.coder.type === OPTION_CODER_TYPE) {\n      return true;\n    }\n    if (\"coders\" in node) {\n      const child = hasNestedOption(node.coders);\n      if (child) {\n        return true;\n      }\n    }\n  }\n  return false;\n}, \"hasNestedOption\");\n\n// src/encoding/coders/ArrayCoder.ts\nvar ArrayCoder = class extends Coder {\n  static {\n    __name(this, \"ArrayCoder\");\n  }\n  coder;\n  length;\n  #hasNestedOption;\n  constructor(coder, length) {\n    super(\"array\", `[${coder.type}; ${length}]`, length * coder.encodedLength);\n    this.coder = coder;\n    this.length = length;\n    this.#hasNestedOption = hasNestedOption([coder]);\n  }\n  encode(value) {\n    if (!Array.isArray(value)) {\n      throw new FuelError(ErrorCode.ENCODE_ERROR, `Expected array value.`);\n    }\n    if (this.length !== value.length) {\n      throw new FuelError(ErrorCode.ENCODE_ERROR, `Types/values length mismatch.`);\n    }\n    return concat(Array.from(value).map((v) => this.coder.encode(v)));\n  }\n  decode(data, offset) {\n    if (!this.#hasNestedOption && data.length < this.encodedLength || data.length > MAX_BYTES) {\n      throw new FuelError(ErrorCode.DECODE_ERROR, `Invalid array data size.`);\n    }\n    let newOffset = offset;\n    const decodedValue = Array(this.length).fill(0).map(() => {\n      let decoded;\n      [decoded, newOffset] = this.coder.decode(data, newOffset);\n      return decoded;\n    });\n    return [decodedValue, newOffset];\n  }\n};\n\n// src/encoding/coders/B256Coder.ts\nimport { ErrorCode as ErrorCode2, FuelError as FuelError2 } from \"@fuel-ts/errors\";\nimport { bn, toHex } from \"@fuel-ts/math\";\nimport { arrayify } from \"@fuel-ts/utils\";\nvar B256Coder = class extends Coder {\n  static {\n    __name(this, \"B256Coder\");\n  }\n  constructor() {\n    super(\"b256\", \"b256\", WORD_SIZE * 4);\n  }\n  encode(value) {\n    let encodedValue;\n    try {\n      encodedValue = arrayify(value);\n    } catch (error) {\n      throw new FuelError2(ErrorCode2.ENCODE_ERROR, `Invalid ${this.type}.`);\n    }\n    if (encodedValue.length !== this.encodedLength) {\n      throw new FuelError2(ErrorCode2.ENCODE_ERROR, `Invalid ${this.type}.`);\n    }\n    return encodedValue;\n  }\n  decode(data, offset) {\n    if (data.length < this.encodedLength) {\n      throw new FuelError2(ErrorCode2.DECODE_ERROR, `Invalid b256 data size.`);\n    }\n    let bytes = data.slice(offset, offset + this.encodedLength);\n    const decoded = bn(bytes);\n    if (decoded.isZero()) {\n      bytes = new Uint8Array(32);\n    }\n    if (bytes.length !== this.encodedLength) {\n      throw new FuelError2(ErrorCode2.DECODE_ERROR, `Invalid b256 byte data size.`);\n    }\n    return [toHex(bytes, 32), offset + 32];\n  }\n};\n\n// src/encoding/coders/B512Coder.ts\nimport { ErrorCode as ErrorCode3, FuelError as FuelError3 } from \"@fuel-ts/errors\";\nimport { bn as bn2, toHex as toHex2 } from \"@fuel-ts/math\";\nimport { arrayify as arrayify2 } from \"@fuel-ts/utils\";\nvar B512Coder = class extends Coder {\n  static {\n    __name(this, \"B512Coder\");\n  }\n  constructor() {\n    super(\"b512\", \"struct B512\", WORD_SIZE * 8);\n  }\n  encode(value) {\n    let encodedValue;\n    try {\n      encodedValue = arrayify2(value);\n    } catch (error) {\n      throw new FuelError3(ErrorCode3.ENCODE_ERROR, `Invalid ${this.type}.`);\n    }\n    if (encodedValue.length !== this.encodedLength) {\n      throw new FuelError3(ErrorCode3.ENCODE_ERROR, `Invalid ${this.type}.`);\n    }\n    return encodedValue;\n  }\n  decode(data, offset) {\n    if (data.length < this.encodedLength) {\n      throw new FuelError3(ErrorCode3.DECODE_ERROR, `Invalid b512 data size.`);\n    }\n    let bytes = data.slice(offset, offset + this.encodedLength);\n    const decoded = bn2(bytes);\n    if (decoded.isZero()) {\n      bytes = new Uint8Array(64);\n    }\n    if (bytes.length !== this.encodedLength) {\n      throw new FuelError3(ErrorCode3.DECODE_ERROR, `Invalid b512 byte data size.`);\n    }\n    return [toHex2(bytes, this.encodedLength), offset + this.encodedLength];\n  }\n};\n\n// src/encoding/coders/BigNumberCoder.ts\nimport { ErrorCode as ErrorCode4, FuelError as FuelError4 } from \"@fuel-ts/errors\";\nimport { toBytes, bn as bn3 } from \"@fuel-ts/math\";\nvar encodedLengths = {\n  u64: WORD_SIZE,\n  u256: WORD_SIZE * 4\n};\nvar BigNumberCoder = class extends Coder {\n  static {\n    __name(this, \"BigNumberCoder\");\n  }\n  constructor(baseType) {\n    super(\"bigNumber\", baseType, encodedLengths[baseType]);\n  }\n  encode(value) {\n    let bytes;\n    if (typeof value === \"number\" && value > Number.MAX_SAFE_INTEGER) {\n      throw new FuelError4(\n        ErrorCode4.ENCODE_ERROR,\n        `Invalid ${this.type} type - number value is too large. Number can only safely handle up to 53 bits.`\n      );\n    }\n    try {\n      bytes = toBytes(value, this.encodedLength);\n    } catch (error) {\n      throw new FuelError4(ErrorCode4.ENCODE_ERROR, `Invalid ${this.type}.`);\n    }\n    return bytes;\n  }\n  decode(data, offset) {\n    if (data.length < this.encodedLength) {\n      throw new FuelError4(ErrorCode4.DECODE_ERROR, `Invalid ${this.type} data size.`);\n    }\n    let bytes = data.slice(offset, offset + this.encodedLength);\n    bytes = bytes.slice(0, this.encodedLength);\n    if (bytes.length !== this.encodedLength) {\n      throw new FuelError4(ErrorCode4.DECODE_ERROR, `Invalid ${this.type} byte data size.`);\n    }\n    return [bn3(bytes), offset + this.encodedLength];\n  }\n};\n\n// src/encoding/coders/BooleanCoder.ts\nimport { ErrorCode as ErrorCode5, FuelError as FuelError5 } from \"@fuel-ts/errors\";\nimport { bn as bn4, toBytes as toBytes2 } from \"@fuel-ts/math\";\nvar BooleanCoder = class extends Coder {\n  static {\n    __name(this, \"BooleanCoder\");\n  }\n  options;\n  constructor(options = {\n    padToWordSize: false\n  }) {\n    const encodedLength = options.padToWordSize ? WORD_SIZE : 1;\n    super(\"boolean\", \"boolean\", encodedLength);\n    this.options = options;\n  }\n  encode(value) {\n    const isTrueBool = value === true || value === false;\n    if (!isTrueBool) {\n      throw new FuelError5(ErrorCode5.ENCODE_ERROR, `Invalid boolean value.`);\n    }\n    return toBytes2(value ? 1 : 0, this.encodedLength);\n  }\n  decode(data, offset) {\n    if (data.length < this.encodedLength) {\n      throw new FuelError5(ErrorCode5.DECODE_ERROR, `Invalid boolean data size.`);\n    }\n    const bytes = bn4(data.slice(offset, offset + this.encodedLength));\n    if (bytes.isZero()) {\n      return [false, offset + this.encodedLength];\n    }\n    if (!bytes.eq(bn4(1))) {\n      throw new FuelError5(ErrorCode5.DECODE_ERROR, `Invalid boolean value.`);\n    }\n    return [true, offset + this.encodedLength];\n  }\n};\n\n// src/encoding/coders/ByteCoder.ts\nimport { ErrorCode as ErrorCode6, FuelError as FuelError6 } from \"@fuel-ts/errors\";\nimport { bn as bn5 } from \"@fuel-ts/math\";\nvar ByteCoder = class extends Coder {\n  static {\n    __name(this, \"ByteCoder\");\n  }\n  static memorySize = 1;\n  constructor() {\n    super(\"struct\", \"struct Bytes\", WORD_SIZE);\n  }\n  encode(value) {\n    const bytes = value instanceof Uint8Array ? value : new Uint8Array(value);\n    const lengthBytes = new BigNumberCoder(\"u64\").encode(bytes.length);\n    return new Uint8Array([...lengthBytes, ...bytes]);\n  }\n  decode(data, offset) {\n    if (data.length < WORD_SIZE) {\n      throw new FuelError6(ErrorCode6.DECODE_ERROR, `Invalid byte data size.`);\n    }\n    const offsetAndLength = offset + WORD_SIZE;\n    const lengthBytes = data.slice(offset, offsetAndLength);\n    const length = bn5(new BigNumberCoder(\"u64\").decode(lengthBytes, 0)[0]).toNumber();\n    const dataBytes = data.slice(offsetAndLength, offsetAndLength + length);\n    if (dataBytes.length !== length) {\n      throw new FuelError6(ErrorCode6.DECODE_ERROR, `Invalid bytes byte data size.`);\n    }\n    return [dataBytes, offsetAndLength + length];\n  }\n};\n\n// src/encoding/coders/EnumCoder.ts\nimport { ErrorCode as ErrorCode7, FuelError as FuelError7 } from \"@fuel-ts/errors\";\nimport { toNumber } from \"@fuel-ts/math\";\nimport { concat as concat2 } from \"@fuel-ts/utils\";\nvar EnumCoder = class extends Coder {\n  static {\n    __name(this, \"EnumCoder\");\n  }\n  name;\n  coders;\n  #caseIndexCoder;\n  #encodedValueSize;\n  #shouldValidateLength;\n  constructor(name, coders) {\n    const caseIndexCoder = new BigNumberCoder(\"u64\");\n    const encodedValueSize = Object.values(coders).reduce(\n      (min, coder) => Math.min(min, coder.encodedLength),\n      0\n    );\n    super(`enum ${name}`, `enum ${name}`, caseIndexCoder.encodedLength + encodedValueSize);\n    this.name = name;\n    this.coders = coders;\n    this.#caseIndexCoder = caseIndexCoder;\n    this.#encodedValueSize = encodedValueSize;\n    this.#shouldValidateLength = !(optionRegEx.test(this.type) || hasNestedOption(coders));\n  }\n  // Checks that we're handling a native enum that is of type void.\n  #isNativeEnum(coder) {\n    return this.type !== OPTION_CODER_TYPE && coder.type === VOID_TYPE;\n  }\n  #encodeNativeEnum(value) {\n    const valueCoder = this.coders[value];\n    const encodedValue = valueCoder.encode([]);\n    const caseIndex = Object.keys(this.coders).indexOf(value);\n    const padding = new Uint8Array(this.#encodedValueSize - valueCoder.encodedLength);\n    return concat2([this.#caseIndexCoder.encode(caseIndex), padding, encodedValue]);\n  }\n  encode(value) {\n    if (typeof value === \"string\" && this.coders[value]) {\n      return this.#encodeNativeEnum(value);\n    }\n    const [caseKey, ...empty] = Object.keys(value);\n    if (!caseKey) {\n      throw new FuelError7(ErrorCode7.INVALID_DECODE_VALUE, \"A field for the case must be provided.\");\n    }\n    if (empty.length !== 0) {\n      throw new FuelError7(ErrorCode7.INVALID_DECODE_VALUE, \"Only one field must be provided.\");\n    }\n    const valueCoder = this.coders[caseKey];\n    const caseIndex = Object.keys(this.coders).indexOf(caseKey);\n    if (caseIndex === -1) {\n      const validCases = Object.keys(this.coders).map((v) => `'${v}'`).join(\", \");\n      throw new FuelError7(\n        ErrorCode7.INVALID_DECODE_VALUE,\n        `Invalid case '${caseKey}'. Valid cases: ${validCases}.`\n      );\n    }\n    const encodedValue = valueCoder.encode(value[caseKey]);\n    return new Uint8Array([...this.#caseIndexCoder.encode(caseIndex), ...encodedValue]);\n  }\n  #decodeNativeEnum(caseKey, newOffset) {\n    return [caseKey, newOffset];\n  }\n  decode(data, offset) {\n    if (this.#shouldValidateLength && data.length < this.encodedLength) {\n      throw new FuelError7(ErrorCode7.DECODE_ERROR, `Invalid enum data size.`);\n    }\n    const caseBytes = new BigNumberCoder(\"u64\").decode(data, offset)[0];\n    const caseIndex = toNumber(caseBytes);\n    const caseKey = Object.keys(this.coders)[caseIndex];\n    if (!caseKey) {\n      throw new FuelError7(\n        ErrorCode7.INVALID_DECODE_VALUE,\n        `Invalid caseIndex \"${caseIndex}\". Valid cases: ${Object.keys(this.coders)}.`\n      );\n    }\n    const valueCoder = this.coders[caseKey];\n    const offsetAndCase = offset + this.#caseIndexCoder.encodedLength;\n    if (this.#shouldValidateLength && data.length < offsetAndCase + valueCoder.encodedLength) {\n      throw new FuelError7(ErrorCode7.DECODE_ERROR, `Invalid enum data size.`);\n    }\n    const [decoded, newOffset] = valueCoder.decode(data, offsetAndCase);\n    if (this.#isNativeEnum(this.coders[caseKey])) {\n      return this.#decodeNativeEnum(caseKey, newOffset);\n    }\n    return [{ [caseKey]: decoded }, newOffset];\n  }\n};\n\n// src/encoding/coders/NumberCoder.ts\nimport { ErrorCode as ErrorCode8, FuelError as FuelError8 } from \"@fuel-ts/errors\";\nimport { toNumber as toNumber2, toBytes as toBytes3 } from \"@fuel-ts/math\";\nvar getLength = /* @__PURE__ */ __name((baseType) => {\n  switch (baseType) {\n    case \"u8\":\n      return 1;\n    case \"u16\":\n      return 2;\n    case \"u32\":\n      return 4;\n    default:\n      throw new FuelError8(ErrorCode8.TYPE_NOT_SUPPORTED, `Invalid number type: ${baseType}`);\n  }\n}, \"getLength\");\nvar NumberCoder = class extends Coder {\n  static {\n    __name(this, \"NumberCoder\");\n  }\n  baseType;\n  options;\n  constructor(baseType, options = {\n    padToWordSize: false\n  }) {\n    const length = options.padToWordSize ? WORD_SIZE : getLength(baseType);\n    super(\"number\", baseType, length);\n    this.baseType = baseType;\n    this.options = options;\n  }\n  encode(value) {\n    let bytes;\n    try {\n      bytes = toBytes3(value);\n    } catch (error) {\n      throw new FuelError8(ErrorCode8.ENCODE_ERROR, `Invalid ${this.baseType}.`);\n    }\n    if (bytes.length > this.encodedLength) {\n      throw new FuelError8(ErrorCode8.ENCODE_ERROR, `Invalid ${this.baseType}, too many bytes.`);\n    }\n    return toBytes3(bytes, this.encodedLength);\n  }\n  decode(data, offset) {\n    if (data.length < this.encodedLength) {\n      throw new FuelError8(ErrorCode8.DECODE_ERROR, `Invalid number data size.`);\n    }\n    const bytes = data.slice(offset, offset + this.encodedLength);\n    if (bytes.length !== this.encodedLength) {\n      throw new FuelError8(ErrorCode8.DECODE_ERROR, `Invalid number byte data size.`);\n    }\n    return [toNumber2(bytes), offset + this.encodedLength];\n  }\n};\n\n// src/encoding/coders/OptionCoder.ts\nvar OptionCoder = class extends EnumCoder {\n  static {\n    __name(this, \"OptionCoder\");\n  }\n  encode(value) {\n    const result = super.encode(this.toSwayOption(value));\n    return result;\n  }\n  toSwayOption(input) {\n    if (input !== void 0) {\n      return { Some: input };\n    }\n    return { None: [] };\n  }\n  decode(data, offset) {\n    const [decoded, newOffset] = super.decode(data, offset);\n    return [this.toOption(decoded), newOffset];\n  }\n  toOption(output) {\n    if (output && \"Some\" in output) {\n      return output.Some;\n    }\n    return void 0;\n  }\n};\n\n// src/encoding/coders/RawSliceCoder.ts\nimport { ErrorCode as ErrorCode9, FuelError as FuelError9 } from \"@fuel-ts/errors\";\nimport { bn as bn6 } from \"@fuel-ts/math\";\nvar RawSliceCoder = class extends Coder {\n  static {\n    __name(this, \"RawSliceCoder\");\n  }\n  constructor() {\n    super(\"raw untyped slice\", \"raw untyped slice\", WORD_SIZE);\n  }\n  encode(value) {\n    if (!Array.isArray(value)) {\n      throw new FuelError9(ErrorCode9.ENCODE_ERROR, `Expected array value.`);\n    }\n    const internalCoder = new ArrayCoder(new NumberCoder(\"u8\"), value.length);\n    const bytes = internalCoder.encode(value);\n    const lengthBytes = new BigNumberCoder(\"u64\").encode(bytes.length);\n    return new Uint8Array([...lengthBytes, ...bytes]);\n  }\n  decode(data, offset) {\n    if (data.length < this.encodedLength) {\n      throw new FuelError9(ErrorCode9.DECODE_ERROR, `Invalid raw slice data size.`);\n    }\n    const offsetAndLength = offset + WORD_SIZE;\n    const lengthBytes = data.slice(offset, offsetAndLength);\n    const length = bn6(new BigNumberCoder(\"u64\").decode(lengthBytes, 0)[0]).toNumber();\n    const dataBytes = data.slice(offsetAndLength, offsetAndLength + length);\n    if (dataBytes.length !== length) {\n      throw new FuelError9(ErrorCode9.DECODE_ERROR, `Invalid raw slice byte data size.`);\n    }\n    const internalCoder = new ArrayCoder(new NumberCoder(\"u8\"), length);\n    const [decodedValue] = internalCoder.decode(dataBytes, 0);\n    return [decodedValue, offsetAndLength + length];\n  }\n};\n\n// src/encoding/coders/StdStringCoder.ts\nimport { ErrorCode as ErrorCode10, FuelError as FuelError10 } from \"@fuel-ts/errors\";\nimport { bn as bn7 } from \"@fuel-ts/math\";\nimport { toUtf8Bytes, toUtf8String } from \"@fuel-ts/utils\";\nvar StdStringCoder = class extends Coder {\n  static {\n    __name(this, \"StdStringCoder\");\n  }\n  static memorySize = 1;\n  constructor() {\n    super(\"struct\", \"struct String\", WORD_SIZE);\n  }\n  encode(value) {\n    const bytes = toUtf8Bytes(value);\n    const lengthBytes = new BigNumberCoder(\"u64\").encode(value.length);\n    return new Uint8Array([...lengthBytes, ...bytes]);\n  }\n  decode(data, offset) {\n    if (data.length < this.encodedLength) {\n      throw new FuelError10(ErrorCode10.DECODE_ERROR, `Invalid std string data size.`);\n    }\n    const offsetAndLength = offset + WORD_SIZE;\n    const lengthBytes = data.slice(offset, offsetAndLength);\n    const length = bn7(new BigNumberCoder(\"u64\").decode(lengthBytes, 0)[0]).toNumber();\n    const dataBytes = data.slice(offsetAndLength, offsetAndLength + length);\n    if (dataBytes.length !== length) {\n      throw new FuelError10(ErrorCode10.DECODE_ERROR, `Invalid std string byte data size.`);\n    }\n    return [toUtf8String(dataBytes), offsetAndLength + length];\n  }\n};\n\n// src/encoding/coders/StrSliceCoder.ts\nimport { ErrorCode as ErrorCode11, FuelError as FuelError11 } from \"@fuel-ts/errors\";\nimport { bn as bn8 } from \"@fuel-ts/math\";\nimport { toUtf8Bytes as toUtf8Bytes2, toUtf8String as toUtf8String2 } from \"@fuel-ts/utils\";\nvar StrSliceCoder = class extends Coder {\n  static {\n    __name(this, \"StrSliceCoder\");\n  }\n  static memorySize = 1;\n  constructor() {\n    super(\"strSlice\", \"str\", WORD_SIZE);\n  }\n  encode(value) {\n    const bytes = toUtf8Bytes2(value);\n    const lengthBytes = new BigNumberCoder(\"u64\").encode(value.length);\n    return new Uint8Array([...lengthBytes, ...bytes]);\n  }\n  decode(data, offset) {\n    if (data.length < this.encodedLength) {\n      throw new FuelError11(ErrorCode11.DECODE_ERROR, `Invalid string slice data size.`);\n    }\n    const offsetAndLength = offset + WORD_SIZE;\n    const lengthBytes = data.slice(offset, offsetAndLength);\n    const length = bn8(new BigNumberCoder(\"u64\").decode(lengthBytes, 0)[0]).toNumber();\n    const bytes = data.slice(offsetAndLength, offsetAndLength + length);\n    if (bytes.length !== length) {\n      throw new FuelError11(ErrorCode11.DECODE_ERROR, `Invalid string slice byte data size.`);\n    }\n    return [toUtf8String2(bytes), offsetAndLength + length];\n  }\n};\n\n// src/encoding/coders/StringCoder.ts\nimport { ErrorCode as ErrorCode12, FuelError as FuelError12 } from \"@fuel-ts/errors\";\nimport { toUtf8Bytes as toUtf8Bytes3, toUtf8String as toUtf8String3 } from \"@fuel-ts/utils\";\nvar StringCoder = class extends Coder {\n  static {\n    __name(this, \"StringCoder\");\n  }\n  constructor(length) {\n    super(\"string\", `str[${length}]`, length);\n  }\n  encode(value) {\n    if (value.length !== this.encodedLength) {\n      throw new FuelError12(ErrorCode12.ENCODE_ERROR, `Value length mismatch during encode.`);\n    }\n    return toUtf8Bytes3(value);\n  }\n  decode(data, offset) {\n    if (data.length < this.encodedLength) {\n      throw new FuelError12(ErrorCode12.DECODE_ERROR, `Invalid string data size.`);\n    }\n    const bytes = data.slice(offset, offset + this.encodedLength);\n    if (bytes.length !== this.encodedLength) {\n      throw new FuelError12(ErrorCode12.DECODE_ERROR, `Invalid string byte data size.`);\n    }\n    return [toUtf8String3(bytes), offset + this.encodedLength];\n  }\n};\n\n// src/encoding/coders/StructCoder.ts\nimport { ErrorCode as ErrorCode13, FuelError as FuelError13 } from \"@fuel-ts/errors\";\nimport { concatBytes } from \"@fuel-ts/utils\";\nvar StructCoder = class extends Coder {\n  static {\n    __name(this, \"StructCoder\");\n  }\n  name;\n  coders;\n  #hasNestedOption;\n  constructor(name, coders) {\n    const encodedLength = Object.values(coders).reduce(\n      (acc, coder) => acc + coder.encodedLength,\n      0\n    );\n    super(\"struct\", `struct ${name}`, encodedLength);\n    this.name = name;\n    this.coders = coders;\n    this.#hasNestedOption = hasNestedOption(coders);\n  }\n  encode(value) {\n    return concatBytes(\n      Object.keys(this.coders).map((fieldName) => {\n        const fieldCoder = this.coders[fieldName];\n        const fieldValue = value[fieldName];\n        if (!(fieldCoder instanceof OptionCoder) && fieldValue == null) {\n          throw new FuelError13(\n            ErrorCode13.ENCODE_ERROR,\n            `Invalid ${this.type}. Field \"${fieldName}\" not present.`\n          );\n        }\n        return fieldCoder.encode(fieldValue);\n      })\n    );\n  }\n  decode(data, offset) {\n    if (!this.#hasNestedOption && data.length < this.encodedLength) {\n      throw new FuelError13(ErrorCode13.DECODE_ERROR, `Invalid struct data size.`);\n    }\n    let newOffset = offset;\n    const decodedValue = Object.keys(this.coders).reduce((obj, fieldName) => {\n      const fieldCoder = this.coders[fieldName];\n      let decoded;\n      [decoded, newOffset] = fieldCoder.decode(data, newOffset);\n      obj[fieldName] = decoded;\n      return obj;\n    }, {});\n    return [decodedValue, newOffset];\n  }\n};\n\n// src/encoding/coders/TupleCoder.ts\nimport { ErrorCode as ErrorCode14, FuelError as FuelError14 } from \"@fuel-ts/errors\";\nimport { concatBytes as concatBytes2 } from \"@fuel-ts/utils\";\nvar TupleCoder = class extends Coder {\n  static {\n    __name(this, \"TupleCoder\");\n  }\n  coders;\n  #hasNestedOption;\n  constructor(coders) {\n    const encodedLength = coders.reduce((acc, coder) => acc + coder.encodedLength, 0);\n    super(\"tuple\", `(${coders.map((coder) => coder.type).join(\", \")})`, encodedLength);\n    this.coders = coders;\n    this.#hasNestedOption = hasNestedOption(coders);\n  }\n  encode(value) {\n    if (this.coders.length !== value.length) {\n      throw new FuelError14(ErrorCode14.ENCODE_ERROR, `Types/values length mismatch.`);\n    }\n    return concatBytes2(this.coders.map((coder, i) => coder.encode(value[i])));\n  }\n  decode(data, offset) {\n    if (!this.#hasNestedOption && data.length < this.encodedLength) {\n      throw new FuelError14(ErrorCode14.DECODE_ERROR, `Invalid tuple data size.`);\n    }\n    let newOffset = offset;\n    const decodedValue = this.coders.map((coder) => {\n      let decoded;\n      [decoded, newOffset] = coder.decode(data, newOffset);\n      return decoded;\n    });\n    return [decodedValue, newOffset];\n  }\n};\n\n// src/encoding/coders/VecCoder.ts\nimport { ErrorCode as ErrorCode15, FuelError as FuelError15 } from \"@fuel-ts/errors\";\nimport { bn as bn9 } from \"@fuel-ts/math\";\nimport { concatBytes as concatBytes3 } from \"@fuel-ts/utils\";\nvar VecCoder = class extends Coder {\n  static {\n    __name(this, \"VecCoder\");\n  }\n  coder;\n  #hasNestedOption;\n  constructor(coder) {\n    super(\"struct\", `struct Vec`, WORD_SIZE);\n    this.coder = coder;\n    this.#hasNestedOption = hasNestedOption([coder]);\n  }\n  encode(value) {\n    if (!Array.isArray(value) && !isUint8Array(value)) {\n      throw new FuelError15(\n        ErrorCode15.ENCODE_ERROR,\n        `Expected array value, or a Uint8Array. You can use arrayify to convert a value to a Uint8Array.`\n      );\n    }\n    const lengthCoder = new BigNumberCoder(\"u64\");\n    if (isUint8Array(value)) {\n      return new Uint8Array([...lengthCoder.encode(value.length), ...value]);\n    }\n    const bytes = value.map((v) => this.coder.encode(v));\n    const lengthBytes = lengthCoder.encode(value.length);\n    return new Uint8Array([...lengthBytes, ...concatBytes3(bytes)]);\n  }\n  decode(data, offset) {\n    if (!this.#hasNestedOption && data.length < this.encodedLength || data.length > MAX_BYTES) {\n      throw new FuelError15(ErrorCode15.DECODE_ERROR, `Invalid vec data size.`);\n    }\n    const offsetAndLength = offset + WORD_SIZE;\n    const lengthBytes = data.slice(offset, offsetAndLength);\n    const length = bn9(new BigNumberCoder(\"u64\").decode(lengthBytes, 0)[0]).toNumber();\n    const dataLength = length * this.coder.encodedLength;\n    const dataBytes = data.slice(offsetAndLength, offsetAndLength + dataLength);\n    if (!this.#hasNestedOption && dataBytes.length !== dataLength) {\n      throw new FuelError15(ErrorCode15.DECODE_ERROR, `Invalid vec byte data size.`);\n    }\n    let newOffset = offsetAndLength;\n    const chunks = [];\n    for (let i = 0; i < length; i++) {\n      const [decoded, optionOffset] = this.coder.decode(data, newOffset);\n      chunks.push(decoded);\n      newOffset = optionOffset;\n    }\n    return [chunks, newOffset];\n  }\n};\n\n// src/Interface.ts\nimport { ErrorCode as ErrorCode21, FuelError as FuelError21 } from \"@fuel-ts/errors\";\nimport { arrayify as arrayify4 } from \"@fuel-ts/utils\";\n\n// src/ResolvedAbiType.ts\nimport { FuelError as FuelError17, ErrorCode as ErrorCode17 } from \"@fuel-ts/errors\";\n\n// src/utils/json-abi.ts\nimport { ErrorCode as ErrorCode16, FuelError as FuelError16 } from \"@fuel-ts/errors\";\nvar getEncodingVersion = /* @__PURE__ */ __name((encoding) => {\n  switch (encoding) {\n    case void 0:\n    case ENCODING_V1:\n      return ENCODING_V1;\n    default:\n      throw new FuelError16(\n        ErrorCode16.UNSUPPORTED_ENCODING_VERSION,\n        `Encoding version '${encoding}' is unsupported.`\n      );\n  }\n}, \"getEncodingVersion\");\nvar findTypeById = /* @__PURE__ */ __name((abi, typeId) => {\n  const type = abi.types.find((t) => t.typeId === typeId);\n  if (!type) {\n    throw new FuelError16(\n      ErrorCode16.TYPE_NOT_FOUND,\n      `Type with typeId '${typeId}' doesn't exist in the ABI.`\n    );\n  }\n  return type;\n}, \"findTypeById\");\nvar findNonVoidInputs = /* @__PURE__ */ __name((abi, inputs) => inputs.filter((input) => findTypeById(abi, input.type).type !== VOID_TYPE), \"findNonVoidInputs\");\nvar findVectorBufferArgument = /* @__PURE__ */ __name((components) => {\n  const bufferComponent = components.find((c) => c.name === \"buf\");\n  const bufferTypeArgument = bufferComponent?.originalTypeArguments?.[0];\n  if (!bufferComponent || !bufferTypeArgument) {\n    throw new FuelError16(\n      ErrorCode16.INVALID_COMPONENT,\n      `The Vec type provided is missing or has a malformed 'buf' component.`\n    );\n  }\n  return bufferTypeArgument;\n}, \"findVectorBufferArgument\");\n\n// src/ResolvedAbiType.ts\nvar ResolvedAbiType = class _ResolvedAbiType {\n  static {\n    __name(this, \"ResolvedAbiType\");\n  }\n  abi;\n  name;\n  type;\n  originalTypeArguments;\n  components;\n  constructor(abi, argument) {\n    this.abi = abi;\n    this.name = argument.name;\n    const jsonABIType = findTypeById(abi, argument.type);\n    if (jsonABIType.type.length > 256) {\n      throw new FuelError17(\n        ErrorCode17.INVALID_COMPONENT,\n        `The provided ABI type is too long: ${jsonABIType.type}.`\n      );\n    }\n    this.type = jsonABIType.type;\n    this.originalTypeArguments = argument.typeArguments;\n    this.components = _ResolvedAbiType.getResolvedGenericComponents(\n      abi,\n      argument,\n      jsonABIType.components,\n      jsonABIType.typeParameters ?? _ResolvedAbiType.getImplicitGenericTypeParameters(abi, jsonABIType.components)\n    );\n  }\n  static getResolvedGenericComponents(abi, arg, components, typeParameters) {\n    if (components === null) {\n      return null;\n    }\n    if (typeParameters === null || typeParameters.length === 0) {\n      return components.map((c) => new _ResolvedAbiType(abi, c));\n    }\n    const typeParametersAndArgsMap = typeParameters.reduce(\n      (obj, typeParameter, typeParameterIndex) => {\n        const o = { ...obj };\n        o[typeParameter] = structuredClone(\n          arg.typeArguments?.[typeParameterIndex]\n        );\n        return o;\n      },\n      {}\n    );\n    const resolvedComponents = this.resolveGenericArgTypes(\n      abi,\n      components,\n      typeParametersAndArgsMap\n    );\n    return resolvedComponents.map((c) => new _ResolvedAbiType(abi, c));\n  }\n  static resolveGenericArgTypes(abi, args, typeParametersAndArgsMap) {\n    return args.map((arg) => {\n      if (typeParametersAndArgsMap[arg.type] !== void 0) {\n        return {\n          ...typeParametersAndArgsMap[arg.type],\n          name: arg.name\n        };\n      }\n      if (arg.typeArguments) {\n        return {\n          ...structuredClone(arg),\n          typeArguments: this.resolveGenericArgTypes(\n            abi,\n            arg.typeArguments,\n            typeParametersAndArgsMap\n          )\n        };\n      }\n      const argType = findTypeById(abi, arg.type);\n      const implicitTypeParameters = this.getImplicitGenericTypeParameters(abi, argType.components);\n      if (implicitTypeParameters && implicitTypeParameters.length > 0) {\n        return {\n          ...structuredClone(arg),\n          typeArguments: implicitTypeParameters.map((itp) => typeParametersAndArgsMap[itp])\n        };\n      }\n      return arg;\n    });\n  }\n  static getImplicitGenericTypeParameters(abi, args, implicitGenericParametersParam) {\n    if (!Array.isArray(args)) {\n      return null;\n    }\n    const implicitGenericParameters = implicitGenericParametersParam ?? [];\n    args.forEach((a) => {\n      const argType = findTypeById(abi, a.type);\n      if (genericRegEx.test(argType.type)) {\n        implicitGenericParameters.push(argType.typeId);\n        return;\n      }\n      if (!Array.isArray(a.typeArguments)) {\n        return;\n      }\n      this.getImplicitGenericTypeParameters(abi, a.typeArguments, implicitGenericParameters);\n    });\n    return implicitGenericParameters.length > 0 ? implicitGenericParameters : null;\n  }\n  getSignature() {\n    const prefix = this.getArgSignaturePrefix();\n    const content = this.getArgSignatureContent();\n    return `${prefix}${content}`;\n  }\n  getArgSignaturePrefix() {\n    const structMatch = structRegEx.test(this.type);\n    if (structMatch) {\n      return \"s\";\n    }\n    const arrayMatch = arrayRegEx.test(this.type);\n    if (arrayMatch) {\n      return \"a\";\n    }\n    const enumMatch = enumRegEx.test(this.type);\n    if (enumMatch) {\n      return \"e\";\n    }\n    return \"\";\n  }\n  getArgSignatureContent() {\n    if (this.type === \"raw untyped ptr\") {\n      return \"rawptr\";\n    }\n    if (this.type === \"raw untyped slice\") {\n      return \"rawslice\";\n    }\n    const strMatch = stringRegEx.exec(this.type)?.groups;\n    if (strMatch) {\n      return `str[${strMatch.length}]`;\n    }\n    if (this.components === null) {\n      return this.type;\n    }\n    const arrayMatch = arrayRegEx.exec(this.type)?.groups;\n    if (arrayMatch) {\n      return `[${this.components[0].getSignature()};${arrayMatch.length}]`;\n    }\n    const typeArgumentsSignature = this.originalTypeArguments !== null ? `<${this.originalTypeArguments.map((a) => new _ResolvedAbiType(this.abi, a).getSignature()).join(\",\")}>` : \"\";\n    const componentsSignature = `(${this.components.map((c) => c.getSignature()).join(\",\")})`;\n    return `${typeArgumentsSignature}${componentsSignature}`;\n  }\n};\n\n// src/encoding/strategies/getCoderForEncoding.ts\nimport { ErrorCode as ErrorCode19, FuelError as FuelError19 } from \"@fuel-ts/errors\";\n\n// src/encoding/strategies/getCoderV1.ts\nimport { ErrorCode as ErrorCode18, FuelError as FuelError18 } from \"@fuel-ts/errors\";\n\n// src/encoding/coders/VoidCoder.ts\nvar VoidCoder = class extends Coder {\n  static {\n    __name(this, \"VoidCoder\");\n  }\n  constructor() {\n    super(\"void\", VOID_TYPE, 0);\n  }\n  encode(_value) {\n    return new Uint8Array([]);\n  }\n  decode(_data, offset) {\n    return [void 0, offset];\n  }\n};\n\n// src/encoding/strategies/getCoders.ts\nfunction getCoders(components, options) {\n  const { getCoder: getCoder2 } = options;\n  return components.reduce((obj, component) => {\n    const o = obj;\n    o[component.name] = getCoder2(component, options);\n    return o;\n  }, {});\n}\n__name(getCoders, \"getCoders\");\n\n// src/encoding/strategies/getCoderV1.ts\nvar getCoder = /* @__PURE__ */ __name((resolvedAbiType, _options) => {\n  switch (resolvedAbiType.type) {\n    case U8_CODER_TYPE:\n    case U16_CODER_TYPE:\n    case U32_CODER_TYPE:\n      return new NumberCoder(resolvedAbiType.type);\n    case U64_CODER_TYPE:\n    case RAW_PTR_CODER_TYPE:\n      return new BigNumberCoder(\"u64\");\n    case U256_CODER_TYPE:\n      return new BigNumberCoder(\"u256\");\n    case RAW_SLICE_CODER_TYPE:\n      return new RawSliceCoder();\n    case BOOL_CODER_TYPE:\n      return new BooleanCoder();\n    case B256_CODER_TYPE:\n      return new B256Coder();\n    case B512_CODER_TYPE:\n      return new B512Coder();\n    case BYTES_CODER_TYPE:\n      return new ByteCoder();\n    case STD_STRING_CODER_TYPE:\n      return new StdStringCoder();\n    case STR_SLICE_CODER_TYPE:\n      return new StrSliceCoder();\n    case VOID_TYPE:\n      return new VoidCoder();\n    default:\n      break;\n  }\n  const stringMatch = stringRegEx.exec(resolvedAbiType.type)?.groups;\n  if (stringMatch) {\n    const length = parseInt(stringMatch.length, 10);\n    return new StringCoder(length);\n  }\n  const components = resolvedAbiType.components;\n  const arrayMatch = arrayRegEx.exec(resolvedAbiType.type)?.groups;\n  if (arrayMatch) {\n    const length = parseInt(arrayMatch.length, 10);\n    const arg = components[0];\n    if (!arg) {\n      throw new FuelError18(\n        ErrorCode18.INVALID_COMPONENT,\n        `The provided Array type is missing an item of 'component'.`\n      );\n    }\n    const arrayElementCoder = getCoder(arg);\n    return new ArrayCoder(arrayElementCoder, length);\n  }\n  if (resolvedAbiType.type === VEC_CODER_TYPE) {\n    const arg = findVectorBufferArgument(components);\n    const argType = new ResolvedAbiType(resolvedAbiType.abi, arg);\n    const itemCoder = getCoder(argType, { encoding: ENCODING_V1 });\n    return new VecCoder(itemCoder);\n  }\n  const coderName = resolvedAbiType.type.match(fullNameRegExMatch)?.[0];\n  const structMatch = structRegEx.test(resolvedAbiType.type);\n  if (structMatch && coderName) {\n    const coders = getCoders(components, { getCoder });\n    return new StructCoder(coderName, coders);\n  }\n  const enumMatch = enumRegEx.test(resolvedAbiType.type);\n  if (enumMatch && coderName) {\n    const coders = getCoders(components, { getCoder });\n    const isOptionEnum = resolvedAbiType.type === OPTION_CODER_TYPE;\n    if (isOptionEnum) {\n      return new OptionCoder(coderName, coders);\n    }\n    return new EnumCoder(coderName, coders);\n  }\n  const tupleMatch = tupleRegEx.exec(resolvedAbiType.type)?.groups;\n  if (tupleMatch) {\n    const coders = components.map((component) => getCoder(component, { encoding: ENCODING_V1 }));\n    return new TupleCoder(coders);\n  }\n  throw new FuelError18(\n    ErrorCode18.CODER_NOT_FOUND,\n    `Coder not found: ${JSON.stringify(resolvedAbiType)}.`\n  );\n}, \"getCoder\");\n\n// src/encoding/strategies/getCoderForEncoding.ts\nfunction getCoderForEncoding(encoding = ENCODING_V1) {\n  switch (encoding) {\n    case ENCODING_V1:\n      return getCoder;\n    default:\n      throw new FuelError19(\n        ErrorCode19.UNSUPPORTED_ENCODING_VERSION,\n        `Encoding version ${encoding} is unsupported.`\n      );\n  }\n}\n__name(getCoderForEncoding, \"getCoderForEncoding\");\n\n// src/AbiCoder.ts\nvar AbiCoder = class {\n  static {\n    __name(this, \"AbiCoder\");\n  }\n  static getCoder(abi, argument, options = {\n    padToWordSize: false\n  }) {\n    const resolvedAbiType = new ResolvedAbiType(abi, argument);\n    return getCoderForEncoding(options.encoding)(resolvedAbiType, options);\n  }\n  static encode(abi, argument, value, options) {\n    return this.getCoder(abi, argument, options).encode(value);\n  }\n  static decode(abi, argument, data, offset, options) {\n    return this.getCoder(abi, argument, options).decode(data, offset);\n  }\n};\n\n// src/FunctionFragment.ts\nimport { bufferFromString } from \"@fuel-ts/crypto\";\nimport { ErrorCode as ErrorCode20, FuelError as FuelError20 } from \"@fuel-ts/errors\";\nimport { sha256 } from \"@fuel-ts/hasher\";\nimport { bn as bn10 } from \"@fuel-ts/math\";\nimport { arrayify as arrayify3 } from \"@fuel-ts/utils\";\n\n// src/utils/getFunctionInputs.ts\nvar getFunctionInputs = /* @__PURE__ */ __name((params) => {\n  const { jsonAbi, inputs } = params;\n  let isMandatory = false;\n  return inputs.reduceRight((result, input) => {\n    const type = findTypeById(jsonAbi, input.type);\n    isMandatory = isMandatory || type.type !== VOID_TYPE && !optionRegEx.test(type.type);\n    return [{ ...input, isOptional: !isMandatory }, ...result];\n  }, []);\n}, \"getFunctionInputs\");\n\n// src/utils/padValuesWithUndefined.ts\nvar padValuesWithUndefined = /* @__PURE__ */ __name((values, inputs) => {\n  if (values.length >= inputs.length) {\n    return values;\n  }\n  const paddedValues = values.slice();\n  paddedValues.length = inputs.length;\n  paddedValues.fill(void 0, values.length);\n  return paddedValues;\n}, \"padValuesWithUndefined\");\n\n// src/FunctionFragment.ts\nvar FunctionFragment = class _FunctionFragment {\n  static {\n    __name(this, \"FunctionFragment\");\n  }\n  signature;\n  selector;\n  selectorBytes;\n  encoding;\n  name;\n  jsonFn;\n  attributes;\n  jsonAbiOld;\n  jsonFnOld;\n  constructor(jsonAbi, fn) {\n    this.jsonFn = fn;\n    this.jsonAbiOld = jsonAbi;\n    this.jsonFnOld = jsonAbi.functions.find((f) => f.name === fn.name);\n    this.name = fn.name;\n    this.signature = _FunctionFragment.getSignature(this.jsonAbiOld, this.jsonFnOld);\n    this.selector = _FunctionFragment.getFunctionSelector(this.signature);\n    this.selectorBytes = new StdStringCoder().encode(this.name);\n    this.encoding = getEncodingVersion(jsonAbi.encoding);\n    this.attributes = this.jsonFn.attributes ?? [];\n  }\n  static getSignature(abi, fn) {\n    const inputsSignatures = fn.inputs.map(\n      (input) => new ResolvedAbiType(abi, input).getSignature()\n    );\n    return `${fn.name}(${inputsSignatures.join(\",\")})`;\n  }\n  static getFunctionSelector(functionSignature) {\n    const hashedFunctionSignature = sha256(bufferFromString(functionSignature, \"utf-8\"));\n    return bn10(hashedFunctionSignature.slice(0, 10)).toHex(8);\n  }\n  encodeArguments(values) {\n    const inputs = getFunctionInputs({ jsonAbi: this.jsonAbiOld, inputs: this.jsonFnOld.inputs });\n    const mandatoryInputLength = inputs.filter((i) => !i.isOptional).length;\n    if (values.length < mandatoryInputLength) {\n      throw new FuelError20(\n        ErrorCode20.ABI_TYPES_AND_VALUES_MISMATCH,\n        `Invalid number of arguments. Expected a minimum of ${mandatoryInputLength} arguments, received ${values.length}`\n      );\n    }\n    const coders = this.jsonFnOld.inputs.map(\n      (t) => AbiCoder.getCoder(this.jsonAbiOld, t, {\n        encoding: this.encoding\n      })\n    );\n    const argumentValues = padValuesWithUndefined(values, this.jsonFn.inputs);\n    return new TupleCoder(coders).encode(argumentValues);\n  }\n  decodeArguments(data) {\n    const bytes = arrayify3(data);\n    const nonVoidInputs = findNonVoidInputs(this.jsonAbiOld, this.jsonFnOld.inputs);\n    if (nonVoidInputs.length === 0) {\n      if (bytes.length === 0) {\n        return void 0;\n      }\n      throw new FuelError20(\n        ErrorCode20.DECODE_ERROR,\n        `Types/values length mismatch during decode. ${JSON.stringify({\n          count: {\n            types: this.jsonFn.inputs.length,\n            nonVoidInputs: nonVoidInputs.length,\n            values: bytes.length\n          },\n          value: {\n            args: this.jsonFn.inputs,\n            nonVoidInputs,\n            values: bytes\n          }\n        })}`\n      );\n    }\n    const result = this.jsonFnOld.inputs.reduce(\n      (obj, input) => {\n        const coder = AbiCoder.getCoder(this.jsonAbiOld, input, { encoding: this.encoding });\n        const [decodedValue, decodedOffset] = coder.decode(bytes, obj.offset);\n        return {\n          decoded: [...obj.decoded, decodedValue],\n          offset: decodedOffset\n        };\n      },\n      { decoded: [], offset: 0 }\n    );\n    return result.decoded;\n  }\n  decodeOutput(data) {\n    const bytes = arrayify3(data);\n    const coder = AbiCoder.getCoder(this.jsonAbiOld, this.jsonFnOld.output, {\n      encoding: this.encoding\n    });\n    return coder.decode(bytes, 0);\n  }\n  /**\n   * Checks if the function is read-only i.e. it only reads from storage, does not write to it.\n   *\n   * @returns True if the function is read-only or pure, false otherwise.\n   */\n  isReadOnly() {\n    const storageAttribute = this.attributes.find((attr) => attr.name === \"storage\");\n    return !storageAttribute?.arguments?.includes(\"write\");\n  }\n};\n\n// src/utils/transpile-abi.ts\nvar findTypeByConcreteId = /* @__PURE__ */ __name((types, id) => types.find((x) => x.concreteTypeId === id), \"findTypeByConcreteId\");\nvar findConcreteTypeById = /* @__PURE__ */ __name((abi, id) => abi.concreteTypes.find((x) => x.concreteTypeId === id), \"findConcreteTypeById\");\nfunction finsertTypeIdByConcreteTypeId(abi, types, id) {\n  const concreteType = findConcreteTypeById(abi, id);\n  if (concreteType.metadataTypeId !== void 0) {\n    return concreteType.metadataTypeId;\n  }\n  const type = findTypeByConcreteId(types, id);\n  if (type) {\n    return type.typeId;\n  }\n  types.push({\n    typeId: types.length,\n    type: concreteType.type,\n    components: parseComponents(concreteType.components),\n    concreteTypeId: id,\n    typeParameters: concreteType.typeParameters ?? null,\n    originalConcreteTypeId: concreteType?.concreteTypeId\n  });\n  return types.length - 1;\n}\n__name(finsertTypeIdByConcreteTypeId, \"finsertTypeIdByConcreteTypeId\");\nfunction parseFunctionTypeArguments(abi, types, concreteType) {\n  return concreteType.typeArguments?.map((cTypeId) => {\n    const self = findConcreteTypeById(abi, cTypeId);\n    const type = !isNaN(cTypeId) ? cTypeId : finsertTypeIdByConcreteTypeId(abi, types, cTypeId);\n    return {\n      name: \"\",\n      type,\n      // originalTypeId: cTypeId,\n      typeArguments: parseFunctionTypeArguments(abi, types, self)\n    };\n  }) ?? null;\n}\n__name(parseFunctionTypeArguments, \"parseFunctionTypeArguments\");\nfunction parseConcreteType(abi, types, concreteTypeId, name) {\n  const type = finsertTypeIdByConcreteTypeId(abi, types, concreteTypeId);\n  const concrete = findConcreteTypeById(abi, concreteTypeId);\n  return {\n    name: name ?? \"\",\n    type,\n    // concreteTypeId,\n    typeArguments: parseFunctionTypeArguments(abi, types, concrete)\n  };\n}\n__name(parseConcreteType, \"parseConcreteType\");\nfunction parseComponents(abi, types, components) {\n  return components?.map((component) => {\n    const { typeId, name, typeArguments } = component;\n    const type = !isNaN(typeId) ? typeId : finsertTypeIdByConcreteTypeId(abi, types, typeId);\n    return {\n      name,\n      type,\n      // originalTypeId: typeId,\n      typeArguments: parseComponents(abi, types, typeArguments)\n    };\n  }) ?? null;\n}\n__name(parseComponents, \"parseComponents\");\nfunction transpileAbi(abi) {\n  if (!abi.specVersion) {\n    return abi;\n  }\n  const types = [];\n  abi.metadataTypes.forEach((m) => {\n    const t = {\n      typeId: m.metadataTypeId,\n      type: m.type,\n      components: m.components ?? (m.type === \"()\" ? [] : null),\n      typeParameters: m.typeParameters ?? null\n    };\n    types.push(t);\n  });\n  types.forEach((t) => {\n    t.components = parseComponents(abi, types, t.components);\n  });\n  const functions = abi.functions.map((fn) => {\n    const inputs = fn.inputs.map(\n      ({ concreteTypeId, name }) => parseConcreteType(abi, types, concreteTypeId, name)\n    );\n    const output = parseConcreteType(abi, types, fn.output, \"\");\n    return { ...fn, inputs, output };\n  });\n  const configurables = abi.configurables.map((conf) => ({\n    name: conf.name,\n    configurableType: parseConcreteType(abi, types, conf.concreteTypeId),\n    offset: conf.offset\n  }));\n  const loggedTypes = abi.loggedTypes.map((log) => ({\n    logId: log.logId,\n    loggedType: parseConcreteType(abi, types, log.concreteTypeId)\n  }));\n  const transpiled = {\n    encoding: abi.encodingVersion,\n    types,\n    functions,\n    loggedTypes,\n    messagesTypes: abi.messagesTypes,\n    configurables,\n    errorCodes: abi.errorCodes\n  };\n  return transpiled;\n}\n__name(transpileAbi, \"transpileAbi\");\n\n// src/Interface.ts\nvar Interface = class {\n  static {\n    __name(this, \"Interface\");\n  }\n  functions;\n  configurables;\n  jsonAbi;\n  encoding;\n  jsonAbiOld;\n  constructor(jsonAbi) {\n    this.jsonAbi = jsonAbi;\n    this.encoding = getEncodingVersion(jsonAbi.encodingVersion);\n    this.jsonAbiOld = transpileAbi(jsonAbi);\n    this.functions = Object.fromEntries(\n      this.jsonAbi.functions.map((fn) => [fn.name, new FunctionFragment(this.jsonAbiOld, fn)])\n    );\n    this.configurables = Object.fromEntries(this.jsonAbi.configurables.map((x) => [x.name, x]));\n  }\n  /**\n   * Returns function fragment for a dynamic input.\n   * @param nameOrSignatureOrSelector - name (e.g. 'transfer'), signature (e.g. 'transfer(address,uint256)') or selector (e.g. '0x00000000a9059cbb') of the function fragment\n   */\n  getFunction(nameOrSignatureOrSelector) {\n    const fn = Object.values(this.functions).find(\n      (f) => f.name === nameOrSignatureOrSelector || f.signature === nameOrSignatureOrSelector || f.selector === nameOrSignatureOrSelector\n    );\n    if (fn !== void 0) {\n      return fn;\n    }\n    throw new FuelError21(\n      ErrorCode21.FUNCTION_NOT_FOUND,\n      `function ${nameOrSignatureOrSelector} not found: ${JSON.stringify(fn)}.`\n    );\n  }\n  // Decode the result of a function call\n  decodeFunctionResult(functionFragment, data) {\n    const fragment = typeof functionFragment === \"string\" ? this.getFunction(functionFragment) : functionFragment;\n    return fragment.decodeOutput(data);\n  }\n  decodeLog(data, logId) {\n    const loggedType = this.jsonAbiOld.loggedTypes.find((type) => type.logId === logId);\n    if (!loggedType) {\n      throw new FuelError21(\n        ErrorCode21.LOG_TYPE_NOT_FOUND,\n        `Log type with logId '${logId}' doesn't exist in the ABI.`\n      );\n    }\n    return AbiCoder.decode(this.jsonAbiOld, loggedType.loggedType, arrayify4(data), 0, {\n      encoding: this.encoding\n    });\n  }\n  encodeConfigurable(name, value) {\n    const configurable = this.jsonAbiOld.configurables.find((c) => c.name === name);\n    if (!configurable) {\n      throw new FuelError21(\n        ErrorCode21.CONFIGURABLE_NOT_FOUND,\n        `A configurable with the '${name}' was not found in the ABI.`\n      );\n    }\n    return AbiCoder.encode(this.jsonAbiOld, configurable.configurableType, value, {\n      encoding: this.encoding\n    });\n  }\n  encodeType(concreteTypeId, value) {\n    const typeArg = parseConcreteType(\n      this.jsonAbi,\n      this.jsonAbiOld.types,\n      concreteTypeId,\n      \"\"\n    );\n    return AbiCoder.encode(this.jsonAbiOld, typeArg, value, {\n      encoding: this.encoding\n    });\n  }\n  decodeType(concreteTypeId, data) {\n    const typeArg = parseConcreteType(\n      this.jsonAbi,\n      this.jsonAbiOld.types,\n      concreteTypeId,\n      \"\"\n    );\n    return AbiCoder.decode(this.jsonAbiOld, typeArg, data, 0, { encoding: this.encoding });\n  }\n};\n\n// src/utils/scriptData.ts\nvar decodeScriptData = /* @__PURE__ */ __name((scriptData, abi) => {\n  const [amount, amountOffset] = new BigNumberCoder(\"u64\").decode(scriptData, 0);\n  const [assetId, assetIdOffset] = new B256Coder().decode(scriptData, amountOffset);\n  const [contractId, contractIdOffset] = new B256Coder().decode(scriptData, assetIdOffset);\n  const [functionSelector, functionSelectorOffset] = new StdStringCoder().decode(\n    scriptData,\n    contractIdOffset + WORD_SIZE + WORD_SIZE\n  );\n  const functionArgsBytes = scriptData.slice(functionSelectorOffset);\n  const functionArgs = abi ? new Interface(abi).getFunction(functionSelector).decodeArguments(functionArgsBytes) : void 0;\n  return {\n    amount,\n    assetId,\n    contractId,\n    functionSelector,\n    functionArgs\n  };\n}, \"decodeScriptData\");\nexport {\n  ASSET_ID_LEN,\n  ArrayCoder,\n  B256Coder,\n  B512Coder,\n  BYTES_32,\n  BigNumberCoder,\n  BooleanCoder,\n  ByteCoder,\n  CONTRACT_ID_LEN,\n  Coder,\n  ENCODING_V1,\n  EnumCoder,\n  INPUT_COIN_FIXED_SIZE,\n  Interface,\n  NumberCoder,\n  OptionCoder,\n  RawSliceCoder,\n  SCRIPT_FIXED_SIZE,\n  StdStringCoder,\n  StrSliceCoder,\n  StringCoder,\n  StructCoder,\n  TupleCoder,\n  UTXO_ID_LEN,\n  VecCoder,\n  WORD_SIZE,\n  calculateVmTxMemory,\n  decodeScriptData\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/address.ts\nimport { FuelError as FuelError2 } from \"@fuel-ts/errors\";\nimport { arrayify as arrayify2, hexlify as hexlify2 } from \"@fuel-ts/utils\";\nimport { sha256 as sha2562 } from \"@noble/hashes/sha256\";\n\n// src/utils.ts\nimport { randomBytes } from \"@fuel-ts/crypto\";\nimport { FuelError } from \"@fuel-ts/errors\";\nimport { arrayify, concat, hexlify } from \"@fuel-ts/utils\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nfunction isB256(address) {\n  return address.length === 66 && /(0x)[0-9a-f]{64}$/i.test(address);\n}\n__name(isB256, \"isB256\");\nfunction isPublicKey(address) {\n  return address.length === 130 && /(0x)[0-9a-f]{128}$/i.test(address);\n}\n__name(isPublicKey, \"isPublicKey\");\nfunction isEvmAddress(address) {\n  return address.length === 42 && /(0x)[0-9a-f]{40}$/i.test(address);\n}\n__name(isEvmAddress, \"isEvmAddress\");\nfunction normalizeB256(address) {\n  return address.toLowerCase();\n}\n__name(normalizeB256, \"normalizeB256\");\nfunction isAddress(address) {\n  return \"b256Address\" in address;\n}\n__name(isAddress, \"isAddress\");\nvar addressify = /* @__PURE__ */ __name((addressLike) => {\n  if (isAddress(addressLike)) {\n    return addressLike;\n  }\n  if (\"address\" in addressLike && isAddress(addressLike.address)) {\n    return addressLike.address;\n  }\n  if (\"id\" in addressLike && isAddress(addressLike.id)) {\n    return addressLike.id;\n  }\n  throw new FuelError(FuelError.CODES.INVALID_ADDRESS, \"Invalid address\");\n}, \"addressify\");\nvar getRandomB256 = /* @__PURE__ */ __name(() => hexlify(randomBytes(32)), \"getRandomB256\");\nvar toB256AddressEvm = /* @__PURE__ */ __name((b256) => {\n  try {\n    if (!isB256(b256)) {\n      throw new FuelError(FuelError.CODES.INVALID_B256_ADDRESS, `Invalid B256 Address: ${b256}.`);\n    }\n    const evmBytes = arrayify(b256).slice(12);\n    const paddedBytes = new Uint8Array(12).fill(0);\n    return hexlify(concat([paddedBytes, evmBytes]));\n  } catch (error) {\n    throw new FuelError(\n      FuelError.CODES.PARSE_FAILED,\n      `Cannot generate EVM Address B256 from: ${b256}.`\n    );\n  }\n}, \"toB256AddressEvm\");\nvar padFirst12BytesOfEvmAddress = /* @__PURE__ */ __name((address) => {\n  if (!isEvmAddress(address)) {\n    throw new FuelError(FuelError.CODES.INVALID_EVM_ADDRESS, \"Invalid EVM address format.\");\n  }\n  return address.replace(\"0x\", \"0x000000000000000000000000\");\n}, \"padFirst12BytesOfEvmAddress\");\nvar fromEvmAddressToB256 = /* @__PURE__ */ __name((address) => padFirst12BytesOfEvmAddress(address), \"fromEvmAddressToB256\");\nvar fromPublicKeyToB256 = /* @__PURE__ */ __name((publicKey) => {\n  if (!isPublicKey(publicKey)) {\n    throw new FuelError(FuelError.CODES.INVALID_PUBLIC_KEY, `Invalid Public Key: ${publicKey}.`);\n  }\n  return hexlify(sha256(arrayify(publicKey)));\n}, \"fromPublicKeyToB256\");\nvar fromDynamicInputToB256 = /* @__PURE__ */ __name((address) => {\n  if (typeof address !== \"string\" && \"toB256\" in address) {\n    return address.toB256();\n  }\n  if (isB256(address)) {\n    return address;\n  }\n  if (isPublicKey(address)) {\n    return fromPublicKeyToB256(address);\n  }\n  if (isEvmAddress(address)) {\n    return fromEvmAddressToB256(address);\n  }\n  throw new FuelError(\n    FuelError.CODES.PARSE_FAILED,\n    `Unknown address format: only 'B256', 'Public Key (512)', or 'EVM Address' are supported.`\n  );\n}, \"fromDynamicInputToB256\");\n\n// src/address.ts\nvar Address = class _Address {\n  static {\n    __name(this, \"Address\");\n  }\n  // #region address-2\n  b256Address;\n  // #endregion address-2\n  /**\n   * @param address - A B256 address, public key, EVM address, or Address instance\n   */\n  constructor(address) {\n    const b256Address = fromDynamicInputToB256(address);\n    this.b256Address = normalizeB256(b256Address);\n  }\n  /**\n   * Takes an B256 Address and returns back an checksum address.\n   * The implementation follows the ERC-55 https://github.com/ethereum/ercs/blob/master/ERCS/erc-55.md.\n   *\n   * @returns A new `ChecksumAddress` instance\n   */\n  toChecksum() {\n    return _Address.toChecksum(this.b256Address);\n  }\n  /**\n   * Returns the `b256Address` property\n   */\n  toAddress() {\n    return this.b256Address;\n  }\n  /**\n   * Returns the B256 hash address as a string\n   *\n   * @returns The B256 address\n   */\n  toB256() {\n    return this.b256Address;\n  }\n  /**\n   * Returns the B256 hash address as a Uint8Array\n   *\n   * @returns The B256 address as a Uint8Array\n   */\n  toBytes() {\n    return arrayify2(this.b256Address);\n  }\n  /**\n   * Returns the B256 hash address as a string\n   *\n   * @returns The B256 address\n   */\n  toHexString() {\n    return this.toB256();\n  }\n  /**\n   * returns the address `checksum` as a string\n   *\n   * @returns The `b256Address` property as a string\n   */\n  toString() {\n    return this.toChecksum();\n  }\n  /**\n   * Converts and returns the `b256Address` property as a string\n   * @returns The `b256Address` property as a JSON string\n   */\n  toJSON() {\n    return this.b256Address;\n  }\n  /**\n   * Converts to an EVM address\n   *\n   * @returns an {@link EvmAddress | `EvmAddress`} representation of the address\n   */\n  toEvmAddress() {\n    return {\n      bits: toB256AddressEvm(this.b256Address)\n    };\n  }\n  /**\n   * Wraps the B256 property and returns as an `AssetId`.\n   * @returns The B256 property as an {@link AssetId | `AssetId`}\n   */\n  toAssetId() {\n    return {\n      bits: this.b256Address\n    };\n  }\n  /**\n   * Wraps the B256 address `checksum` and returns it as a string\n   * @returns The B256 address `checksum` as a string\n   */\n  valueOf() {\n    return this.toChecksum();\n  }\n  /**\n   * Compares this the `b256Address` property to another for direct equality\n   * @param other - Another address to compare against\n   * @returns The equality of the comparison\n   */\n  equals(other) {\n    return this.toChecksum() === other.toChecksum();\n  }\n  /**\n   * Takes a Public Key, hashes it, and creates an `Address`\n   *\n   * @param publicKey - A wallets public key\n   * @returns A new `Address` instance\n   *\n   * @deprecated Use `new Address` instead\n   */\n  static fromPublicKey(publicKey) {\n    const b256Address = fromPublicKeyToB256(publicKey);\n    return new _Address(b256Address);\n  }\n  /**\n   * Takes a B256 Address and creates an `Address`\n   *\n   * @param b256Address - A b256 hash\n   * @returns A new `Address` instance\n   *\n   * @deprecated Use `new Address` instead\n   */\n  static fromB256(b256Address) {\n    if (!isB256(b256Address)) {\n      throw new FuelError2(\n        FuelError2.CODES.INVALID_B256_ADDRESS,\n        `Invalid B256 Address: ${b256Address}.`\n      );\n    }\n    return new _Address(b256Address);\n  }\n  /**\n   * Creates an `Address` with a randomized `b256Address` property\n   *\n   * @returns A new `Address` instance\n   */\n  static fromRandom() {\n    return new _Address(getRandomB256());\n  }\n  /**\n   * Takes an ambiguous string and attempts to create an `Address`\n   *\n   * @param address - An ambiguous string\n   * @returns A new `Address` instance\n   *\n   * @deprecated Use `new Address` instead\n   */\n  static fromString(address) {\n    return new _Address(address);\n  }\n  /**\n   * Takes an ambiguous string or address and creates an `Address`\n   *\n   * @returns a new `Address` instance\n   *\n   * @deprecated Use `new Address` instead\n   */\n  static fromAddressOrString(address) {\n    return new _Address(address);\n  }\n  /**\n   * Takes a dynamic string or `Address` and creates an `Address`\n   *\n   * @param addressId - A string containing B256, or Public Key\n   * @throws Error - Unknown address if the format is not recognized\n   * @returns A new `Address` instance\n   *\n   * @deprecated Use `new Address` instead\n   */\n  static fromDynamicInput(address) {\n    return new _Address(address);\n  }\n  /**\n   * Takes an Evm Address and returns back an `Address`\n   *\n   * @returns A new `Address` instance\n   *\n   * @deprecated Use `new Address` instead\n   */\n  static fromEvmAddress(evmAddress) {\n    if (!isEvmAddress(evmAddress)) {\n      throw new FuelError2(\n        FuelError2.CODES.INVALID_EVM_ADDRESS,\n        `Invalid Evm Address: ${evmAddress}.`\n      );\n    }\n    return new _Address(evmAddress);\n  }\n  /**\n   * Takes an ChecksumAddress and validates if it is a valid checksum address.\n   *\n   * @returns A `boolean` instance indicating if the address is valid.\n   */\n  static isChecksumValid(address) {\n    let addressParsed = address;\n    if (!address.startsWith(\"0x\")) {\n      addressParsed = `0x${address}`;\n    }\n    if (addressParsed.trim().length !== 66) {\n      return false;\n    }\n    return _Address.toChecksum(hexlify2(addressParsed)) === addressParsed;\n  }\n  /** @hidden */\n  static toChecksum(address) {\n    if (!isB256(address)) {\n      throw new FuelError2(\n        FuelError2.CODES.INVALID_B256_ADDRESS,\n        `Invalid B256 Address: ${address}.`\n      );\n    }\n    const addressHex = hexlify2(address).toLowerCase().slice(2);\n    const checksum = sha2562(addressHex);\n    let ret = \"0x\";\n    for (let i = 0; i < 32; ++i) {\n      const byte = checksum[i];\n      const ha = addressHex.charAt(i * 2);\n      const hb = addressHex.charAt(i * 2 + 1);\n      ret += (byte & 240) >= 128 ? ha.toUpperCase() : ha;\n      ret += (byte & 15) >= 8 ? hb.toUpperCase() : hb;\n    }\n    return ret;\n  }\n};\nexport {\n  Address,\n  addressify,\n  fromDynamicInputToB256,\n  fromEvmAddressToB256,\n  fromPublicKeyToB256,\n  getRandomB256,\n  isAddress,\n  isB256,\n  isEvmAddress,\n  isPublicKey,\n  normalizeB256,\n  padFirst12BytesOfEvmAddress,\n  toB256AddressEvm\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/coders/input.ts\nimport { Coder as Coder2, B256Coder, NumberCoder as NumberCoder2, BigNumberCoder } from \"@fuel-ts/abi-coder\";\nimport { ErrorCode as ErrorCode2, FuelError as FuelError2 } from \"@fuel-ts/errors\";\nimport { sha256 } from \"@fuel-ts/hasher\";\nimport { concat as concat2, arrayify as arrayify2 } from \"@fuel-ts/utils\";\n\n// src/coders/byte-array.ts\nimport { Coder } from \"@fuel-ts/abi-coder\";\nimport { concat, hexlify, arrayify } from \"@fuel-ts/utils\";\nvar ByteArrayCoder = class extends Coder {\n  static {\n    __name(this, \"ByteArrayCoder\");\n  }\n  length;\n  #paddingLength;\n  constructor(length) {\n    const paddingLength = (8 - length % 8) % 8;\n    const encodedLength = length + paddingLength;\n    super(\n      \"ByteArray\",\n      // While this might sound like a [u8; N] coder it's actually not.\n      // A [u8; N] coder would pad every u8 to 8 bytes which would\n      // make every u8 have the same size as a u64.\n      // We are packing four u8s into u64s here, avoiding this padding.\n      `[u64; ${encodedLength / 4}]`,\n      encodedLength\n    );\n    this.length = length;\n    this.#paddingLength = paddingLength;\n  }\n  encode(value) {\n    const parts = [];\n    const data = arrayify(value);\n    parts.push(data);\n    if (this.#paddingLength) {\n      parts.push(new Uint8Array(this.#paddingLength));\n    }\n    return concat(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = [hexlify(data.slice(o, o + this.length)), o + this.length];\n    const value = decoded;\n    if (this.#paddingLength) {\n      [decoded, o] = [null, o + this.#paddingLength];\n    }\n    return [value, o];\n  }\n};\n\n// src/coders/tx-pointer.ts\nimport { NumberCoder, StructCoder } from \"@fuel-ts/abi-coder\";\nimport { ErrorCode, FuelError } from \"@fuel-ts/errors\";\nvar TxPointerCoder = class extends StructCoder {\n  static {\n    __name(this, \"TxPointerCoder\");\n  }\n  constructor() {\n    super(\"TxPointer\", {\n      blockHeight: new NumberCoder(\"u32\", { padToWordSize: true }),\n      txIndex: new NumberCoder(\"u16\", { padToWordSize: true })\n    });\n  }\n  static decodeFromGqlScalar(value) {\n    if (value.length !== 12) {\n      throw new FuelError(\n        ErrorCode.DECODE_ERROR,\n        `Invalid TxPointer scalar string length ${value.length}. It must have length 12.`\n      );\n    }\n    const [blockHeight, txIndex] = [value.substring(0, 8), value.substring(8)];\n    return {\n      blockHeight: parseInt(blockHeight, 16),\n      txIndex: parseInt(txIndex, 16)\n    };\n  }\n};\n\n// src/coders/input.ts\nvar InputType = /* @__PURE__ */ ((InputType2) => {\n  InputType2[InputType2[\"Coin\"] = 0] = \"Coin\";\n  InputType2[InputType2[\"Contract\"] = 1] = \"Contract\";\n  InputType2[InputType2[\"Message\"] = 2] = \"Message\";\n  return InputType2;\n})(InputType || {});\nvar InputCoinCoder = class extends Coder2 {\n  static {\n    __name(this, \"InputCoinCoder\");\n  }\n  constructor() {\n    super(\"InputCoin\", \"struct InputCoin\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new B256Coder().encode(value.txID));\n    parts.push(new NumberCoder2(\"u16\", { padToWordSize: true }).encode(value.outputIndex));\n    parts.push(new B256Coder().encode(value.owner));\n    parts.push(new BigNumberCoder(\"u64\").encode(value.amount));\n    parts.push(new B256Coder().encode(value.assetId));\n    parts.push(new TxPointerCoder().encode(value.txPointer));\n    parts.push(new NumberCoder2(\"u16\", { padToWordSize: true }).encode(value.witnessIndex));\n    parts.push(new BigNumberCoder(\"u64\").encode(value.predicateGasUsed));\n    parts.push(new BigNumberCoder(\"u64\").encode(value.predicateLength));\n    parts.push(new BigNumberCoder(\"u64\").encode(value.predicateDataLength));\n    parts.push(new ByteArrayCoder(value.predicateLength.toNumber()).encode(value.predicate));\n    parts.push(\n      new ByteArrayCoder(value.predicateDataLength.toNumber()).encode(value.predicateData)\n    );\n    return concat2(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const txID = decoded;\n    [decoded, o] = new NumberCoder2(\"u16\", { padToWordSize: true }).decode(data, o);\n    const outputIndex = decoded;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const owner = decoded;\n    [decoded, o] = new BigNumberCoder(\"u64\").decode(data, o);\n    const amount = decoded;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const assetId = decoded;\n    [decoded, o] = new TxPointerCoder().decode(data, o);\n    const txPointer = decoded;\n    [decoded, o] = new NumberCoder2(\"u16\", { padToWordSize: true }).decode(data, o);\n    const witnessIndex = Number(decoded);\n    [decoded, o] = new BigNumberCoder(\"u64\").decode(data, o);\n    const predicateGasUsed = decoded;\n    [decoded, o] = new BigNumberCoder(\"u64\").decode(data, o);\n    const predicateLength = decoded;\n    [decoded, o] = new BigNumberCoder(\"u64\").decode(data, o);\n    const predicateDataLength = decoded;\n    [decoded, o] = new ByteArrayCoder(predicateLength.toNumber()).decode(data, o);\n    const predicate = decoded;\n    [decoded, o] = new ByteArrayCoder(predicateDataLength.toNumber()).decode(data, o);\n    const predicateData = decoded;\n    return [\n      {\n        type: 0 /* Coin */,\n        txID,\n        outputIndex,\n        owner,\n        amount,\n        assetId,\n        txPointer,\n        witnessIndex,\n        predicateGasUsed,\n        predicateLength,\n        predicateDataLength,\n        predicate,\n        predicateData\n      },\n      o\n    ];\n  }\n};\nvar InputContractCoder = class extends Coder2 {\n  static {\n    __name(this, \"InputContractCoder\");\n  }\n  constructor() {\n    super(\"InputContract\", \"struct InputContract\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new B256Coder().encode(value.txID));\n    parts.push(new NumberCoder2(\"u16\", { padToWordSize: true }).encode(value.outputIndex));\n    parts.push(new B256Coder().encode(value.balanceRoot));\n    parts.push(new B256Coder().encode(value.stateRoot));\n    parts.push(new TxPointerCoder().encode(value.txPointer));\n    parts.push(new B256Coder().encode(value.contractID));\n    return concat2(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const txID = decoded;\n    [decoded, o] = new NumberCoder2(\"u16\", { padToWordSize: true }).decode(data, o);\n    const outputIndex = decoded;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const balanceRoot = decoded;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const stateRoot = decoded;\n    [decoded, o] = new TxPointerCoder().decode(data, o);\n    const txPointer = decoded;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const contractID = decoded;\n    return [\n      {\n        type: 1 /* Contract */,\n        txID,\n        outputIndex,\n        balanceRoot,\n        stateRoot,\n        txPointer,\n        contractID\n      },\n      o\n    ];\n  }\n};\nvar InputMessageCoder = class _InputMessageCoder extends Coder2 {\n  static {\n    __name(this, \"InputMessageCoder\");\n  }\n  constructor() {\n    super(\"InputMessage\", \"struct InputMessage\", 0);\n  }\n  static getMessageId(value) {\n    const parts = [];\n    parts.push(new ByteArrayCoder(32).encode(value.sender));\n    parts.push(new ByteArrayCoder(32).encode(value.recipient));\n    parts.push(new ByteArrayCoder(32).encode(value.nonce));\n    parts.push(new BigNumberCoder(\"u64\").encode(value.amount));\n    parts.push(arrayify2(value.data || \"0x\"));\n    return sha256(concat2(parts));\n  }\n  static encodeData(messageData) {\n    const bytes = arrayify2(messageData || \"0x\");\n    const dataLength = bytes.length;\n    return new ByteArrayCoder(dataLength).encode(bytes);\n  }\n  encode(value) {\n    const parts = [];\n    const data = _InputMessageCoder.encodeData(value.data);\n    parts.push(new ByteArrayCoder(32).encode(value.sender));\n    parts.push(new ByteArrayCoder(32).encode(value.recipient));\n    parts.push(new BigNumberCoder(\"u64\").encode(value.amount));\n    parts.push(new ByteArrayCoder(32).encode(value.nonce));\n    parts.push(new NumberCoder2(\"u16\", { padToWordSize: true }).encode(value.witnessIndex));\n    parts.push(new BigNumberCoder(\"u64\").encode(value.predicateGasUsed));\n    parts.push(new BigNumberCoder(\"u64\").encode(data.length));\n    parts.push(new BigNumberCoder(\"u64\").encode(value.predicateLength));\n    parts.push(new BigNumberCoder(\"u64\").encode(value.predicateDataLength));\n    parts.push(new ByteArrayCoder(data.length).encode(data));\n    parts.push(new ByteArrayCoder(value.predicateLength.toNumber()).encode(value.predicate));\n    parts.push(\n      new ByteArrayCoder(value.predicateDataLength.toNumber()).encode(value.predicateData)\n    );\n    return concat2(parts);\n  }\n  static decodeData(messageData) {\n    const bytes = arrayify2(messageData);\n    const dataLength = bytes.length;\n    const [data] = new ByteArrayCoder(dataLength).decode(bytes, 0);\n    return arrayify2(data);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const sender = decoded;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const recipient = decoded;\n    [decoded, o] = new BigNumberCoder(\"u64\").decode(data, o);\n    const amount = decoded;\n    [decoded, o] = new B256Coder().decode(data, o);\n    const nonce = decoded;\n    [decoded, o] = new NumberCoder2(\"u16\", { padToWordSize: true }).decode(data, o);\n    const witnessIndex = Number(decoded);\n    [decoded, o] = new BigNumberCoder(\"u64\").decode(data, o);\n    const predicateGasUsed = decoded;\n    [decoded, o] = new NumberCoder2(\"u32\", { padToWordSize: true }).decode(data, o);\n    const dataLength = decoded;\n    [decoded, o] = new BigNumberCoder(\"u64\").decode(data, o);\n    const predicateLength = decoded;\n    [decoded, o] = new BigNumberCoder(\"u64\").decode(data, o);\n    const predicateDataLength = decoded;\n    [decoded, o] = new ByteArrayCoder(dataLength).decode(data, o);\n    const messageData = decoded;\n    [decoded, o] = new ByteArrayCoder(predicateLength.toNumber()).decode(data, o);\n    const predicate = decoded;\n    [decoded, o] = new ByteArrayCoder(predicateDataLength.toNumber()).decode(data, o);\n    const predicateData = decoded;\n    return [\n      {\n        type: 2 /* Message */,\n        sender,\n        recipient,\n        amount,\n        witnessIndex,\n        nonce,\n        predicateGasUsed,\n        dataLength,\n        predicateLength,\n        predicateDataLength,\n        data: messageData,\n        predicate,\n        predicateData\n      },\n      o\n    ];\n  }\n};\nvar InputCoder = class extends Coder2 {\n  static {\n    __name(this, \"InputCoder\");\n  }\n  constructor() {\n    super(\"Input\", \"struct Input\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new NumberCoder2(\"u8\", { padToWordSize: true }).encode(value.type));\n    const { type } = value;\n    switch (type) {\n      case 0 /* Coin */: {\n        parts.push(new InputCoinCoder().encode(value));\n        break;\n      }\n      case 1 /* Contract */: {\n        parts.push(new InputContractCoder().encode(value));\n        break;\n      }\n      case 2 /* Message */: {\n        parts.push(new InputMessageCoder().encode(value));\n        break;\n      }\n      default: {\n        throw new FuelError2(\n          ErrorCode2.INVALID_TRANSACTION_INPUT,\n          `Invalid transaction input type: ${type}.`\n        );\n      }\n    }\n    return concat2(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new NumberCoder2(\"u8\", { padToWordSize: true }).decode(data, o);\n    const type = decoded;\n    switch (type) {\n      case 0 /* Coin */: {\n        [decoded, o] = new InputCoinCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 1 /* Contract */: {\n        [decoded, o] = new InputContractCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 2 /* Message */: {\n        [decoded, o] = new InputMessageCoder().decode(data, o);\n        return [decoded, o];\n      }\n      default: {\n        throw new FuelError2(\n          ErrorCode2.INVALID_TRANSACTION_INPUT,\n          `Invalid transaction input type: ${type}.`\n        );\n      }\n    }\n  }\n};\n\n// src/coders/output.ts\nimport { Coder as Coder3, B256Coder as B256Coder2, NumberCoder as NumberCoder3, BigNumberCoder as BigNumberCoder2 } from \"@fuel-ts/abi-coder\";\nimport { ErrorCode as ErrorCode3, FuelError as FuelError3 } from \"@fuel-ts/errors\";\nimport { concat as concat3 } from \"@fuel-ts/utils\";\nvar OutputType = /* @__PURE__ */ ((OutputType2) => {\n  OutputType2[OutputType2[\"Coin\"] = 0] = \"Coin\";\n  OutputType2[OutputType2[\"Contract\"] = 1] = \"Contract\";\n  OutputType2[OutputType2[\"Change\"] = 2] = \"Change\";\n  OutputType2[OutputType2[\"Variable\"] = 3] = \"Variable\";\n  OutputType2[OutputType2[\"ContractCreated\"] = 4] = \"ContractCreated\";\n  return OutputType2;\n})(OutputType || {});\nvar OutputCoinCoder = class extends Coder3 {\n  static {\n    __name(this, \"OutputCoinCoder\");\n  }\n  constructor() {\n    super(\"OutputCoin\", \"struct OutputCoin\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new B256Coder2().encode(value.to));\n    parts.push(new BigNumberCoder2(\"u64\").encode(value.amount));\n    parts.push(new B256Coder2().encode(value.assetId));\n    return concat3(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const to = decoded;\n    [decoded, o] = new BigNumberCoder2(\"u64\").decode(data, o);\n    const amount = decoded;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const assetId = decoded;\n    return [\n      {\n        type: 0 /* Coin */,\n        to,\n        amount,\n        assetId\n      },\n      o\n    ];\n  }\n};\nvar OutputContractCoder = class extends Coder3 {\n  static {\n    __name(this, \"OutputContractCoder\");\n  }\n  constructor() {\n    super(\"OutputContract\", \"struct OutputContract\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new NumberCoder3(\"u8\", { padToWordSize: true }).encode(value.inputIndex));\n    parts.push(new B256Coder2().encode(value.balanceRoot));\n    parts.push(new B256Coder2().encode(value.stateRoot));\n    return concat3(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new NumberCoder3(\"u8\", { padToWordSize: true }).decode(data, o);\n    const inputIndex = decoded;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const balanceRoot = decoded;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const stateRoot = decoded;\n    return [\n      {\n        type: 1 /* Contract */,\n        inputIndex,\n        balanceRoot,\n        stateRoot\n      },\n      o\n    ];\n  }\n};\nvar OutputChangeCoder = class extends Coder3 {\n  static {\n    __name(this, \"OutputChangeCoder\");\n  }\n  constructor() {\n    super(\"OutputChange\", \"struct OutputChange\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new B256Coder2().encode(value.to));\n    parts.push(new BigNumberCoder2(\"u64\").encode(value.amount));\n    parts.push(new B256Coder2().encode(value.assetId));\n    return concat3(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const to = decoded;\n    [decoded, o] = new BigNumberCoder2(\"u64\").decode(data, o);\n    const amount = decoded;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const assetId = decoded;\n    return [\n      {\n        type: 2 /* Change */,\n        to,\n        amount,\n        assetId\n      },\n      o\n    ];\n  }\n};\nvar OutputVariableCoder = class extends Coder3 {\n  static {\n    __name(this, \"OutputVariableCoder\");\n  }\n  constructor() {\n    super(\"OutputVariable\", \"struct OutputVariable\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new B256Coder2().encode(value.to));\n    parts.push(new BigNumberCoder2(\"u64\").encode(value.amount));\n    parts.push(new B256Coder2().encode(value.assetId));\n    return concat3(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const to = decoded;\n    [decoded, o] = new BigNumberCoder2(\"u64\").decode(data, o);\n    const amount = decoded;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const assetId = decoded;\n    return [\n      {\n        type: 3 /* Variable */,\n        to,\n        amount,\n        assetId\n      },\n      o\n    ];\n  }\n};\nvar OutputContractCreatedCoder = class extends Coder3 {\n  static {\n    __name(this, \"OutputContractCreatedCoder\");\n  }\n  constructor() {\n    super(\"OutputContractCreated\", \"struct OutputContractCreated\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new B256Coder2().encode(value.contractId));\n    parts.push(new B256Coder2().encode(value.stateRoot));\n    return concat3(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const contractId = decoded;\n    [decoded, o] = new B256Coder2().decode(data, o);\n    const stateRoot = decoded;\n    return [\n      {\n        type: 4 /* ContractCreated */,\n        contractId,\n        stateRoot\n      },\n      o\n    ];\n  }\n};\nvar OutputCoder = class extends Coder3 {\n  static {\n    __name(this, \"OutputCoder\");\n  }\n  constructor() {\n    super(\"Output\", \" struct Output\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new NumberCoder3(\"u8\", { padToWordSize: true }).encode(value.type));\n    const { type } = value;\n    switch (type) {\n      case 0 /* Coin */: {\n        parts.push(new OutputCoinCoder().encode(value));\n        break;\n      }\n      case 1 /* Contract */: {\n        parts.push(new OutputContractCoder().encode(value));\n        break;\n      }\n      case 2 /* Change */: {\n        parts.push(new OutputChangeCoder().encode(value));\n        break;\n      }\n      case 3 /* Variable */: {\n        parts.push(new OutputVariableCoder().encode(value));\n        break;\n      }\n      case 4 /* ContractCreated */: {\n        parts.push(new OutputContractCreatedCoder().encode(value));\n        break;\n      }\n      default: {\n        throw new FuelError3(\n          ErrorCode3.INVALID_TRANSACTION_OUTPUT,\n          `Invalid transaction output type: ${type}.`\n        );\n      }\n    }\n    return concat3(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new NumberCoder3(\"u8\", { padToWordSize: true }).decode(data, o);\n    const type = decoded;\n    switch (type) {\n      case 0 /* Coin */: {\n        [decoded, o] = new OutputCoinCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 1 /* Contract */: {\n        [decoded, o] = new OutputContractCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 2 /* Change */: {\n        [decoded, o] = new OutputChangeCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 3 /* Variable */: {\n        [decoded, o] = new OutputVariableCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 4 /* ContractCreated */: {\n        [decoded, o] = new OutputContractCreatedCoder().decode(data, o);\n        return [decoded, o];\n      }\n      default: {\n        throw new FuelError3(\n          ErrorCode3.INVALID_TRANSACTION_OUTPUT,\n          `Invalid transaction output type: ${type}.`\n        );\n      }\n    }\n  }\n};\n\n// src/coders/policy.ts\nimport { BigNumberCoder as BigNumberCoder3, Coder as Coder4, NumberCoder as NumberCoder4 } from \"@fuel-ts/abi-coder\";\nimport { ErrorCode as ErrorCode4, FuelError as FuelError4 } from \"@fuel-ts/errors\";\nimport { concat as concat4 } from \"@fuel-ts/utils\";\nvar PolicyType = /* @__PURE__ */ ((PolicyType2) => {\n  PolicyType2[PolicyType2[\"Tip\"] = 1] = \"Tip\";\n  PolicyType2[PolicyType2[\"WitnessLimit\"] = 2] = \"WitnessLimit\";\n  PolicyType2[PolicyType2[\"Maturity\"] = 4] = \"Maturity\";\n  PolicyType2[PolicyType2[\"MaxFee\"] = 8] = \"MaxFee\";\n  PolicyType2[PolicyType2[\"Expiration\"] = 16] = \"Expiration\";\n  return PolicyType2;\n})(PolicyType || {});\nvar sortPolicies = /* @__PURE__ */ __name((policies) => policies.sort((a, b) => a.type - b.type), \"sortPolicies\");\nfunction validateDuplicatedPolicies(policies) {\n  const seenTypes = /* @__PURE__ */ new Set();\n  policies.forEach((policy) => {\n    if (seenTypes.has(policy.type)) {\n      throw new FuelError4(\n        ErrorCode4.DUPLICATED_POLICY,\n        `Duplicate policy type found: ${8 /* MaxFee */}`\n      );\n    }\n    seenTypes.add(policy.type);\n  });\n}\n__name(validateDuplicatedPolicies, \"validateDuplicatedPolicies\");\nvar PoliciesCoder = class extends Coder4 {\n  static {\n    __name(this, \"PoliciesCoder\");\n  }\n  constructor() {\n    super(\"Policies\", \"array Policy\", 0);\n  }\n  encode(policies) {\n    validateDuplicatedPolicies(policies);\n    const sortedPolicies = sortPolicies(policies);\n    const parts = [];\n    sortedPolicies.forEach(({ data, type }) => {\n      switch (type) {\n        case 8 /* MaxFee */:\n        case 1 /* Tip */:\n        case 2 /* WitnessLimit */:\n          parts.push(new BigNumberCoder3(\"u64\").encode(data));\n          break;\n        case 4 /* Maturity */:\n        case 16 /* Expiration */:\n          parts.push(new NumberCoder4(\"u32\", { padToWordSize: true }).encode(data));\n          break;\n        default: {\n          throw new FuelError4(ErrorCode4.INVALID_POLICY_TYPE, `Invalid policy type: ${type}`);\n        }\n      }\n    });\n    return concat4(parts);\n  }\n  decode(data, offset, policyTypes) {\n    let o = offset;\n    const policies = [];\n    if (policyTypes & 1 /* Tip */) {\n      const [tip, nextOffset] = new BigNumberCoder3(\"u64\").decode(data, o);\n      o = nextOffset;\n      policies.push({ type: 1 /* Tip */, data: tip });\n    }\n    if (policyTypes & 2 /* WitnessLimit */) {\n      const [witnessLimit, nextOffset] = new BigNumberCoder3(\"u64\").decode(data, o);\n      o = nextOffset;\n      policies.push({ type: 2 /* WitnessLimit */, data: witnessLimit });\n    }\n    if (policyTypes & 4 /* Maturity */) {\n      const [maturity, nextOffset] = new NumberCoder4(\"u32\", { padToWordSize: true }).decode(\n        data,\n        o\n      );\n      o = nextOffset;\n      policies.push({ type: 4 /* Maturity */, data: maturity });\n    }\n    if (policyTypes & 8 /* MaxFee */) {\n      const [maxFee, nextOffset] = new BigNumberCoder3(\"u64\").decode(data, o);\n      o = nextOffset;\n      policies.push({ type: 8 /* MaxFee */, data: maxFee });\n    }\n    if (policyTypes & 16 /* Expiration */) {\n      const [expiration, nextOffset] = new NumberCoder4(\"u32\", { padToWordSize: true }).decode(\n        data,\n        o\n      );\n      o = nextOffset;\n      policies.push({ type: 16 /* Expiration */, data: expiration });\n    }\n    return [policies, o];\n  }\n};\n\n// src/receipt.ts\nimport { BigNumberCoder as BigNumberCoder4 } from \"@fuel-ts/abi-coder\";\nimport { sha256 as sha2562 } from \"@fuel-ts/hasher\";\nimport { arrayify as arrayify3, concat as concat5 } from \"@fuel-ts/utils\";\nvar ReceiptType = /* @__PURE__ */ ((ReceiptType2) => {\n  ReceiptType2[ReceiptType2[\"Call\"] = 0] = \"Call\";\n  ReceiptType2[ReceiptType2[\"Return\"] = 1] = \"Return\";\n  ReceiptType2[ReceiptType2[\"ReturnData\"] = 2] = \"ReturnData\";\n  ReceiptType2[ReceiptType2[\"Panic\"] = 3] = \"Panic\";\n  ReceiptType2[ReceiptType2[\"Revert\"] = 4] = \"Revert\";\n  ReceiptType2[ReceiptType2[\"Log\"] = 5] = \"Log\";\n  ReceiptType2[ReceiptType2[\"LogData\"] = 6] = \"LogData\";\n  ReceiptType2[ReceiptType2[\"Transfer\"] = 7] = \"Transfer\";\n  ReceiptType2[ReceiptType2[\"TransferOut\"] = 8] = \"TransferOut\";\n  ReceiptType2[ReceiptType2[\"ScriptResult\"] = 9] = \"ScriptResult\";\n  ReceiptType2[ReceiptType2[\"MessageOut\"] = 10] = \"MessageOut\";\n  ReceiptType2[ReceiptType2[\"Mint\"] = 11] = \"Mint\";\n  ReceiptType2[ReceiptType2[\"Burn\"] = 12] = \"Burn\";\n  return ReceiptType2;\n})(ReceiptType || {});\nvar getMintedAssetId = /* @__PURE__ */ __name((contractId, subId) => {\n  const contractIdBytes = arrayify3(contractId);\n  const subIdBytes = arrayify3(subId);\n  return sha2562(concat5([contractIdBytes, subIdBytes]));\n}, \"getMintedAssetId\");\nvar createAssetId = /* @__PURE__ */ __name((contractId, subId) => ({\n  bits: getMintedAssetId(contractId, subId)\n}), \"createAssetId\");\nvar getMessageId = /* @__PURE__ */ __name((value) => {\n  const parts = [];\n  parts.push(new ByteArrayCoder(32).encode(value.sender));\n  parts.push(new ByteArrayCoder(32).encode(value.recipient));\n  parts.push(new ByteArrayCoder(32).encode(value.nonce));\n  parts.push(new BigNumberCoder4(\"u64\").encode(value.amount));\n  parts.push(arrayify3(value.data || \"0x\"));\n  return sha2562(concat5(parts));\n}, \"getMessageId\");\n\n// src/coders/storage-slot.ts\nimport { B256Coder as B256Coder3, StructCoder as StructCoder2 } from \"@fuel-ts/abi-coder\";\nvar StorageSlotCoder = class extends StructCoder2 {\n  static {\n    __name(this, \"StorageSlotCoder\");\n  }\n  constructor() {\n    super(\"StorageSlot\", {\n      key: new B256Coder3(),\n      value: new B256Coder3()\n    });\n  }\n};\n\n// src/coders/transaction.ts\nimport { Coder as Coder7, ArrayCoder, B256Coder as B256Coder5, NumberCoder as NumberCoder7, BigNumberCoder as BigNumberCoder5 } from \"@fuel-ts/abi-coder\";\nimport { ErrorCode as ErrorCode6, FuelError as FuelError6 } from \"@fuel-ts/errors\";\nimport { concat as concat8 } from \"@fuel-ts/utils\";\n\n// src/coders/upgrade-purpose.ts\nimport { B256Coder as B256Coder4, Coder as Coder5, NumberCoder as NumberCoder5 } from \"@fuel-ts/abi-coder\";\nimport { ErrorCode as ErrorCode5, FuelError as FuelError5 } from \"@fuel-ts/errors\";\nimport { concat as concat6 } from \"@fuel-ts/utils\";\nvar UpgradePurposeTypeEnum = /* @__PURE__ */ ((UpgradePurposeTypeEnum2) => {\n  UpgradePurposeTypeEnum2[UpgradePurposeTypeEnum2[\"ConsensusParameters\"] = 0] = \"ConsensusParameters\";\n  UpgradePurposeTypeEnum2[UpgradePurposeTypeEnum2[\"StateTransition\"] = 1] = \"StateTransition\";\n  return UpgradePurposeTypeEnum2;\n})(UpgradePurposeTypeEnum || {});\nvar UpgradePurposeCoder = class extends Coder5 {\n  static {\n    __name(this, \"UpgradePurposeCoder\");\n  }\n  constructor() {\n    super(\"UpgradePurpose\", \"UpgradePurpose\", 0);\n  }\n  encode(upgradePurposeType) {\n    const parts = [];\n    const { type } = upgradePurposeType;\n    parts.push(new NumberCoder5(\"u8\", { padToWordSize: true }).encode(type));\n    switch (type) {\n      case 0 /* ConsensusParameters */: {\n        const data = upgradePurposeType.data;\n        parts.push(new NumberCoder5(\"u16\", { padToWordSize: true }).encode(data.witnessIndex));\n        parts.push(new B256Coder4().encode(data.checksum));\n        break;\n      }\n      case 1 /* StateTransition */: {\n        const data = upgradePurposeType.data;\n        parts.push(new B256Coder4().encode(data.bytecodeRoot));\n        break;\n      }\n      default: {\n        throw new FuelError5(\n          ErrorCode5.UNSUPPORTED_TRANSACTION_TYPE,\n          `Unsupported transaction type: ${type}`\n        );\n      }\n    }\n    return concat6(parts);\n  }\n  decode(data, offset) {\n    let o = offset;\n    let decoded;\n    [decoded, o] = new NumberCoder5(\"u8\", { padToWordSize: true }).decode(data, o);\n    const type = decoded;\n    switch (type) {\n      case 0 /* ConsensusParameters */: {\n        [decoded, o] = new NumberCoder5(\"u16\", { padToWordSize: true }).decode(data, o);\n        const witnessIndex = decoded;\n        [decoded, o] = new B256Coder4().decode(data, o);\n        const checksum = decoded;\n        return [{ type, data: { witnessIndex, checksum } }, o];\n      }\n      case 1 /* StateTransition */: {\n        [decoded, o] = new B256Coder4().decode(data, o);\n        const bytecodeRoot = decoded;\n        return [{ type, data: { bytecodeRoot } }, o];\n      }\n      default: {\n        throw new FuelError5(\n          ErrorCode5.UNSUPPORTED_TRANSACTION_TYPE,\n          `Unsupported transaction type: ${type}`\n        );\n      }\n    }\n  }\n};\n\n// src/coders/witness.ts\nimport { Coder as Coder6, NumberCoder as NumberCoder6 } from \"@fuel-ts/abi-coder\";\nimport { concat as concat7 } from \"@fuel-ts/utils\";\nvar WitnessCoder = class extends Coder6 {\n  static {\n    __name(this, \"WitnessCoder\");\n  }\n  constructor() {\n    super(\n      \"Witness\",\n      // Types of dynamic length are not supported in the ABI\n      \"unknown\",\n      0\n    );\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new NumberCoder6(\"u32\", { padToWordSize: true }).encode(value.dataLength));\n    parts.push(new ByteArrayCoder(value.dataLength).encode(value.data));\n    return concat7(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new NumberCoder6(\"u32\", { padToWordSize: true }).decode(data, o);\n    const dataLength = decoded;\n    [decoded, o] = new ByteArrayCoder(dataLength).decode(data, o);\n    const witnessData = decoded;\n    return [\n      {\n        dataLength,\n        data: witnessData\n      },\n      o\n    ];\n  }\n};\n\n// src/coders/transaction.ts\nvar TransactionType = /* @__PURE__ */ ((TransactionType2) => {\n  TransactionType2[TransactionType2[\"Script\"] = 0] = \"Script\";\n  TransactionType2[TransactionType2[\"Create\"] = 1] = \"Create\";\n  TransactionType2[TransactionType2[\"Mint\"] = 2] = \"Mint\";\n  TransactionType2[TransactionType2[\"Upgrade\"] = 3] = \"Upgrade\";\n  TransactionType2[TransactionType2[\"Upload\"] = 4] = \"Upload\";\n  TransactionType2[TransactionType2[\"Blob\"] = 5] = \"Blob\";\n  return TransactionType2;\n})(TransactionType || {});\nvar TransactionScriptCoder = class extends Coder7 {\n  static {\n    __name(this, \"TransactionScriptCoder\");\n  }\n  constructor() {\n    super(\"TransactionScript\", \"struct TransactionScript\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new BigNumberCoder5(\"u64\").encode(value.scriptGasLimit));\n    parts.push(new B256Coder5().encode(value.receiptsRoot));\n    parts.push(new BigNumberCoder5(\"u64\").encode(value.scriptLength));\n    parts.push(new BigNumberCoder5(\"u64\").encode(value.scriptDataLength));\n    parts.push(new NumberCoder7(\"u32\", { padToWordSize: true }).encode(value.policyTypes));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.inputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.outputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.witnessesCount));\n    parts.push(new ByteArrayCoder(value.scriptLength.toNumber()).encode(value.script));\n    parts.push(new ByteArrayCoder(value.scriptDataLength.toNumber()).encode(value.scriptData));\n    parts.push(new PoliciesCoder().encode(value.policies));\n    parts.push(new ArrayCoder(new InputCoder(), value.inputsCount).encode(value.inputs));\n    parts.push(new ArrayCoder(new OutputCoder(), value.outputsCount).encode(value.outputs));\n    parts.push(new ArrayCoder(new WitnessCoder(), value.witnessesCount).encode(value.witnesses));\n    return concat8(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new BigNumberCoder5(\"u64\").decode(data, o);\n    const scriptGasLimit = decoded;\n    [decoded, o] = new B256Coder5().decode(data, o);\n    const receiptsRoot = decoded;\n    [decoded, o] = new BigNumberCoder5(\"u64\").decode(data, o);\n    const scriptLength = decoded;\n    [decoded, o] = new BigNumberCoder5(\"u64\").decode(data, o);\n    const scriptDataLength = decoded;\n    [decoded, o] = new NumberCoder7(\"u32\", { padToWordSize: true }).decode(data, o);\n    const policyTypes = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const inputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const outputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const witnessesCount = decoded;\n    [decoded, o] = new ByteArrayCoder(scriptLength.toNumber()).decode(data, o);\n    const script = decoded;\n    [decoded, o] = new ByteArrayCoder(scriptDataLength.toNumber()).decode(data, o);\n    const scriptData = decoded;\n    [decoded, o] = new PoliciesCoder().decode(data, o, policyTypes);\n    const policies = decoded;\n    [decoded, o] = new ArrayCoder(new InputCoder(), inputsCount).decode(data, o);\n    const inputs = decoded;\n    [decoded, o] = new ArrayCoder(new OutputCoder(), outputsCount).decode(data, o);\n    const outputs = decoded;\n    [decoded, o] = new ArrayCoder(new WitnessCoder(), witnessesCount).decode(data, o);\n    const witnesses = decoded;\n    return [\n      {\n        type: 0 /* Script */,\n        scriptGasLimit,\n        scriptLength,\n        scriptDataLength,\n        policyTypes,\n        inputsCount,\n        outputsCount,\n        witnessesCount,\n        receiptsRoot,\n        script,\n        scriptData,\n        policies,\n        inputs,\n        outputs,\n        witnesses\n      },\n      o\n    ];\n  }\n};\nvar TransactionCreateCoder = class extends Coder7 {\n  static {\n    __name(this, \"TransactionCreateCoder\");\n  }\n  constructor() {\n    super(\"TransactionCreate\", \"struct TransactionCreate\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.bytecodeWitnessIndex));\n    parts.push(new B256Coder5().encode(value.salt));\n    parts.push(new BigNumberCoder5(\"u64\").encode(value.storageSlotsCount));\n    parts.push(new NumberCoder7(\"u32\", { padToWordSize: true }).encode(value.policyTypes));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.inputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.outputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.witnessesCount));\n    parts.push(\n      new ArrayCoder(new StorageSlotCoder(), value.storageSlotsCount.toNumber()).encode(\n        value.storageSlots\n      )\n    );\n    parts.push(new PoliciesCoder().encode(value.policies));\n    parts.push(new ArrayCoder(new InputCoder(), value.inputsCount).encode(value.inputs));\n    parts.push(new ArrayCoder(new OutputCoder(), value.outputsCount).encode(value.outputs));\n    parts.push(new ArrayCoder(new WitnessCoder(), value.witnessesCount).encode(value.witnesses));\n    return concat8(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const bytecodeWitnessIndex = decoded;\n    [decoded, o] = new B256Coder5().decode(data, o);\n    const salt = decoded;\n    [decoded, o] = new BigNumberCoder5(\"u64\").decode(data, o);\n    const storageSlotsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u32\", { padToWordSize: true }).decode(data, o);\n    const policyTypes = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const inputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const outputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const witnessesCount = decoded;\n    [decoded, o] = new ArrayCoder(new StorageSlotCoder(), storageSlotsCount.toNumber()).decode(\n      data,\n      o\n    );\n    const storageSlots = decoded;\n    [decoded, o] = new PoliciesCoder().decode(data, o, policyTypes);\n    const policies = decoded;\n    [decoded, o] = new ArrayCoder(new InputCoder(), inputsCount).decode(data, o);\n    const inputs = decoded;\n    [decoded, o] = new ArrayCoder(new OutputCoder(), outputsCount).decode(data, o);\n    const outputs = decoded;\n    [decoded, o] = new ArrayCoder(new WitnessCoder(), witnessesCount).decode(data, o);\n    const witnesses = decoded;\n    return [\n      {\n        type: 1 /* Create */,\n        bytecodeWitnessIndex,\n        policyTypes,\n        storageSlotsCount,\n        inputsCount,\n        outputsCount,\n        witnessesCount,\n        salt,\n        policies,\n        storageSlots,\n        inputs,\n        outputs,\n        witnesses\n      },\n      o\n    ];\n  }\n};\nvar TransactionMintCoder = class extends Coder7 {\n  static {\n    __name(this, \"TransactionMintCoder\");\n  }\n  constructor() {\n    super(\"TransactionMint\", \"struct TransactionMint\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new TxPointerCoder().encode(value.txPointer));\n    parts.push(new InputContractCoder().encode(value.inputContract));\n    parts.push(new OutputContractCoder().encode(value.outputContract));\n    parts.push(new BigNumberCoder5(\"u64\").encode(value.mintAmount));\n    parts.push(new B256Coder5().encode(value.mintAssetId));\n    parts.push(new BigNumberCoder5(\"u64\").encode(value.gasPrice));\n    return concat8(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new TxPointerCoder().decode(data, o);\n    const txPointer = decoded;\n    [decoded, o] = new InputContractCoder().decode(data, o);\n    const inputContract = decoded;\n    [decoded, o] = new OutputContractCoder().decode(data, o);\n    const outputContract = decoded;\n    [decoded, o] = new BigNumberCoder5(\"u64\").decode(data, o);\n    const mintAmount = decoded;\n    [decoded, o] = new B256Coder5().decode(data, o);\n    const mintAssetId = decoded;\n    [decoded, o] = new BigNumberCoder5(\"u64\").decode(data, o);\n    const gasPrice = decoded;\n    return [\n      {\n        type: 2 /* Mint */,\n        txPointer,\n        inputContract,\n        outputContract,\n        mintAmount,\n        mintAssetId,\n        gasPrice\n      },\n      o\n    ];\n  }\n};\nvar TransactionUpgradeCoder = class extends Coder7 {\n  static {\n    __name(this, \"TransactionUpgradeCoder\");\n  }\n  constructor() {\n    super(\"TransactionUpgrade\", \"struct TransactionUpgrade\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new UpgradePurposeCoder().encode(value.upgradePurpose));\n    parts.push(new NumberCoder7(\"u32\", { padToWordSize: true }).encode(value.policyTypes));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.inputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.outputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.witnessesCount));\n    parts.push(new PoliciesCoder().encode(value.policies));\n    parts.push(new ArrayCoder(new InputCoder(), value.inputsCount).encode(value.inputs));\n    parts.push(new ArrayCoder(new OutputCoder(), value.outputsCount).encode(value.outputs));\n    parts.push(new ArrayCoder(new WitnessCoder(), value.witnessesCount).encode(value.witnesses));\n    return concat8(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new UpgradePurposeCoder().decode(data, o);\n    const upgradePurpose = decoded;\n    [decoded, o] = new NumberCoder7(\"u32\", { padToWordSize: true }).decode(data, o);\n    const policyTypes = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const inputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const outputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const witnessesCount = decoded;\n    [decoded, o] = new PoliciesCoder().decode(data, o, policyTypes);\n    const policies = decoded;\n    [decoded, o] = new ArrayCoder(new InputCoder(), inputsCount).decode(data, o);\n    const inputs = decoded;\n    [decoded, o] = new ArrayCoder(new OutputCoder(), outputsCount).decode(data, o);\n    const outputs = decoded;\n    [decoded, o] = new ArrayCoder(new WitnessCoder(), witnessesCount).decode(data, o);\n    const witnesses = decoded;\n    return [\n      {\n        type: 3 /* Upgrade */,\n        upgradePurpose,\n        policyTypes,\n        inputsCount,\n        outputsCount,\n        witnessesCount,\n        policies,\n        inputs,\n        outputs,\n        witnesses\n      },\n      o\n    ];\n  }\n};\nvar TransactionUploadCoder = class extends Coder7 {\n  static {\n    __name(this, \"TransactionUploadCoder\");\n  }\n  constructor() {\n    super(\"TransactionUpload\", \"struct TransactionUpload\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new B256Coder5().encode(value.root));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.witnessIndex));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.subsectionIndex));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.subsectionsNumber));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.proofSetCount));\n    parts.push(new NumberCoder7(\"u32\", { padToWordSize: true }).encode(value.policyTypes));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.inputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.outputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.witnessesCount));\n    parts.push(new ArrayCoder(new B256Coder5(), value.proofSetCount).encode(value.proofSet));\n    parts.push(new PoliciesCoder().encode(value.policies));\n    parts.push(new ArrayCoder(new InputCoder(), value.inputsCount).encode(value.inputs));\n    parts.push(new ArrayCoder(new OutputCoder(), value.outputsCount).encode(value.outputs));\n    parts.push(new ArrayCoder(new WitnessCoder(), value.witnessesCount).encode(value.witnesses));\n    return concat8(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new B256Coder5().decode(data, o);\n    const root = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const witnessIndex = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const subsectionIndex = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const subsectionsNumber = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const proofSetCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u32\", { padToWordSize: true }).decode(data, o);\n    const policyTypes = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const inputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const outputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const witnessesCount = decoded;\n    [decoded, o] = new ArrayCoder(new B256Coder5(), proofSetCount).decode(data, o);\n    const proofSet = decoded;\n    [decoded, o] = new PoliciesCoder().decode(data, o, policyTypes);\n    const policies = decoded;\n    [decoded, o] = new ArrayCoder(new InputCoder(), inputsCount).decode(data, o);\n    const inputs = decoded;\n    [decoded, o] = new ArrayCoder(new OutputCoder(), outputsCount).decode(data, o);\n    const outputs = decoded;\n    [decoded, o] = new ArrayCoder(new WitnessCoder(), witnessesCount).decode(data, o);\n    const witnesses = decoded;\n    return [\n      {\n        type: 4 /* Upload */,\n        root,\n        witnessIndex,\n        subsectionIndex,\n        subsectionsNumber,\n        proofSetCount,\n        policyTypes,\n        inputsCount,\n        outputsCount,\n        witnessesCount,\n        proofSet,\n        policies,\n        inputs,\n        outputs,\n        witnesses\n      },\n      o\n    ];\n  }\n};\nvar TransactionBlobCoder = class extends Coder7 {\n  static {\n    __name(this, \"TransactionBlobCoder\");\n  }\n  constructor() {\n    super(\"TransactionBlob\", \"struct TransactionBlob\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new B256Coder5().encode(value.blobId));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.witnessIndex));\n    parts.push(new NumberCoder7(\"u32\", { padToWordSize: true }).encode(value.policyTypes));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.inputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.outputsCount));\n    parts.push(new NumberCoder7(\"u16\", { padToWordSize: true }).encode(value.witnessesCount));\n    parts.push(new PoliciesCoder().encode(value.policies));\n    parts.push(new ArrayCoder(new InputCoder(), value.inputsCount).encode(value.inputs));\n    parts.push(new ArrayCoder(new OutputCoder(), value.outputsCount).encode(value.outputs));\n    parts.push(new ArrayCoder(new WitnessCoder(), value.witnessesCount).encode(value.witnesses));\n    return concat8(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new B256Coder5().decode(data, o);\n    const blobId = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const witnessIndex = decoded;\n    [decoded, o] = new NumberCoder7(\"u32\", { padToWordSize: true }).decode(data, o);\n    const policyTypes = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const inputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const outputsCount = decoded;\n    [decoded, o] = new NumberCoder7(\"u16\", { padToWordSize: true }).decode(data, o);\n    const witnessesCount = decoded;\n    [decoded, o] = new PoliciesCoder().decode(data, o, policyTypes);\n    const policies = decoded;\n    [decoded, o] = new ArrayCoder(new InputCoder(), inputsCount).decode(data, o);\n    const inputs = decoded;\n    [decoded, o] = new ArrayCoder(new OutputCoder(), outputsCount).decode(data, o);\n    const outputs = decoded;\n    [decoded, o] = new ArrayCoder(new WitnessCoder(), witnessesCount).decode(data, o);\n    const witnesses = decoded;\n    return [\n      {\n        type: 5 /* Blob */,\n        blobId,\n        witnessIndex,\n        policyTypes,\n        inputsCount,\n        outputsCount,\n        witnessesCount,\n        policies,\n        inputs,\n        outputs,\n        witnesses\n      },\n      o\n    ];\n  }\n};\nvar TransactionCoder = class extends Coder7 {\n  static {\n    __name(this, \"TransactionCoder\");\n  }\n  constructor() {\n    super(\"Transaction\", \"struct Transaction\", 0);\n  }\n  encode(value) {\n    const parts = [];\n    parts.push(new NumberCoder7(\"u8\", { padToWordSize: true }).encode(value.type));\n    const { type } = value;\n    switch (value.type) {\n      case 0 /* Script */: {\n        parts.push(\n          new TransactionScriptCoder().encode(value)\n        );\n        break;\n      }\n      case 1 /* Create */: {\n        parts.push(\n          new TransactionCreateCoder().encode(value)\n        );\n        break;\n      }\n      case 2 /* Mint */: {\n        parts.push(new TransactionMintCoder().encode(value));\n        break;\n      }\n      case 3 /* Upgrade */: {\n        parts.push(\n          new TransactionUpgradeCoder().encode(value)\n        );\n        break;\n      }\n      case 4 /* Upload */: {\n        parts.push(\n          new TransactionUploadCoder().encode(value)\n        );\n        break;\n      }\n      case 5 /* Blob */: {\n        parts.push(new TransactionBlobCoder().encode(value));\n        break;\n      }\n      default: {\n        throw new FuelError6(\n          ErrorCode6.UNSUPPORTED_TRANSACTION_TYPE,\n          `Unsupported transaction type: ${type}`\n        );\n      }\n    }\n    return concat8(parts);\n  }\n  decode(data, offset) {\n    let decoded;\n    let o = offset;\n    [decoded, o] = new NumberCoder7(\"u8\", { padToWordSize: true }).decode(data, o);\n    const type = decoded;\n    switch (type) {\n      case 0 /* Script */: {\n        [decoded, o] = new TransactionScriptCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 1 /* Create */: {\n        [decoded, o] = new TransactionCreateCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 2 /* Mint */: {\n        [decoded, o] = new TransactionMintCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 3 /* Upgrade */: {\n        [decoded, o] = new TransactionUpgradeCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 4 /* Upload */: {\n        [decoded, o] = new TransactionUploadCoder().decode(data, o);\n        return [decoded, o];\n      }\n      case 5 /* Blob */: {\n        [decoded, o] = new TransactionBlobCoder().decode(data, o);\n        return [decoded, o];\n      }\n      default: {\n        throw new FuelError6(\n          ErrorCode6.UNSUPPORTED_TRANSACTION_TYPE,\n          `Unsupported transaction type: ${type}`\n        );\n      }\n    }\n  }\n};\n\n// src/coders/utxo-id.ts\nimport { B256Coder as B256Coder6, NumberCoder as NumberCoder8, StructCoder as StructCoder3 } from \"@fuel-ts/abi-coder\";\nvar UtxoIdCoder = class extends StructCoder3 {\n  static {\n    __name(this, \"UtxoIdCoder\");\n  }\n  constructor() {\n    super(\"UtxoId\", {\n      transactionId: new B256Coder6(),\n      outputIndex: new NumberCoder8(\"u16\", { padToWordSize: true })\n    });\n  }\n};\nexport {\n  ByteArrayCoder,\n  InputCoder,\n  InputCoinCoder,\n  InputContractCoder,\n  InputMessageCoder,\n  InputType,\n  OutputChangeCoder,\n  OutputCoder,\n  OutputCoinCoder,\n  OutputContractCoder,\n  OutputContractCreatedCoder,\n  OutputType,\n  OutputVariableCoder,\n  PoliciesCoder,\n  PolicyType,\n  ReceiptType,\n  StorageSlotCoder,\n  TransactionBlobCoder,\n  TransactionCoder,\n  TransactionCreateCoder,\n  TransactionMintCoder,\n  TransactionScriptCoder,\n  TransactionType,\n  TransactionUpgradeCoder,\n  TransactionUploadCoder,\n  TxPointerCoder,\n  UpgradePurposeCoder,\n  UpgradePurposeTypeEnum,\n  UtxoIdCoder,\n  WitnessCoder,\n  createAssetId,\n  getMessageId,\n  getMintedAssetId,\n  sortPolicies\n};\n//# sourceMappingURL=index.mjs.map","export default function _isPlaceholder(a) {\n  return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry1(fn) {\n  return function f1(a) {\n    if (arguments.length === 0 || _isPlaceholder(a)) {\n      return f1;\n    } else {\n      return fn.apply(this, arguments);\n    }\n  };\n}","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig * -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n *      R.type({}); //=> \"Object\"\n *      R.type(1); //=> \"Number\"\n *      R.type(false); //=> \"Boolean\"\n *      R.type('s'); //=> \"String\"\n *      R.type(null); //=> \"Null\"\n *      R.type([]); //=> \"Array\"\n *      R.type(/[A-z]/); //=> \"RegExp\"\n *      R.type(() => {}); //=> \"Function\"\n *      R.type(async () => {}); //=> \"AsyncFunction\"\n *      R.type(undefined); //=> \"Undefined\"\n *      R.type(BigInt(123)); //=> \"BigInt\"\n */\nvar type = /*#__PURE__*/_curry1(function type(val) {\n  return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\nexport default type;","export default function _cloneRegExp(pattern) {\n  return new RegExp(pattern.source, pattern.flags ? pattern.flags : (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : '') + (pattern.dotAll ? 's' : ''));\n}","import _cloneRegExp from \"./_cloneRegExp.js\";\nimport type from \"../type.js\";\n\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */\nexport default function _clone(value, deep, map) {\n  map || (map = new _ObjectMap());\n\n  // this avoids the slower switch with a quick if decision removing some milliseconds in each run.\n  if (_isPrimitive(value)) {\n    return value;\n  }\n  var copy = function copy(copiedValue) {\n    // Check for circular and same references on the object graph and return its corresponding clone.\n    var cachedCopy = map.get(value);\n    if (cachedCopy) {\n      return cachedCopy;\n    }\n    map.set(value, copiedValue);\n    for (var key in value) {\n      if (Object.prototype.hasOwnProperty.call(value, key)) {\n        copiedValue[key] = deep ? _clone(value[key], true, map) : value[key];\n      }\n    }\n    return copiedValue;\n  };\n  switch (type(value)) {\n    case 'Object':\n      return copy(Object.create(Object.getPrototypeOf(value)));\n    case 'Array':\n      return copy(Array(value.length));\n    case 'Date':\n      return new Date(value.valueOf());\n    case 'RegExp':\n      return _cloneRegExp(value);\n    case 'Int8Array':\n    case 'Uint8Array':\n    case 'Uint8ClampedArray':\n    case 'Int16Array':\n    case 'Uint16Array':\n    case 'Int32Array':\n    case 'Uint32Array':\n    case 'Float32Array':\n    case 'Float64Array':\n    case 'BigInt64Array':\n    case 'BigUint64Array':\n      return value.slice();\n    default:\n      return value;\n  }\n}\nfunction _isPrimitive(param) {\n  var type = typeof param;\n  return param == null || type != 'object' && type != 'function';\n}\nvar _ObjectMap = /*#__PURE__*/function () {\n  function _ObjectMap() {\n    this.map = {};\n    this.length = 0;\n  }\n  _ObjectMap.prototype.set = function (key, value) {\n    var hashedKey = this.hash(key);\n    var bucket = this.map[hashedKey];\n    if (!bucket) {\n      this.map[hashedKey] = bucket = [];\n    }\n    bucket.push([key, value]);\n    this.length += 1;\n  };\n  _ObjectMap.prototype.hash = function (key) {\n    var hashedKey = [];\n    for (var value in key) {\n      hashedKey.push(Object.prototype.toString.call(key[value]));\n    }\n    return hashedKey.join();\n  };\n  _ObjectMap.prototype.get = function (key) {\n    /**\n     * depending on the number of objects to be cloned is faster to just iterate over the items in the map just because the hash function is so costly,\n     * on my tests this number is 180, anything above that using the hash function is faster.\n     */\n    if (this.length <= 180) {\n      for (var p in this.map) {\n        var bucket = this.map[p];\n        for (var i = 0; i < bucket.length; i += 1) {\n          var element = bucket[i];\n          if (element[0] === key) {\n            return element[1];\n          }\n        }\n      }\n      return;\n    }\n    var hashedKey = this.hash(key);\n    var bucket = this.map[hashedKey];\n    if (!bucket) {\n      return;\n    }\n    for (var i = 0; i < bucket.length; i += 1) {\n      var element = bucket[i];\n      if (element[0] === key) {\n        return element[1];\n      }\n    }\n  };\n  return _ObjectMap;\n}();","import _clone from \"./internal/_clone.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Creates a deep copy of the source that can be used in place of the source\n * object without retaining any references to it.\n * The source object may contain (nested) `Array`s and `Object`s,\n * `Number`s, `String`s, `Boolean`s and `Date`s.\n * `Function`s are assigned by reference rather than copied.\n *\n * Dispatches to a `clone` method if present.\n *\n * Note that if the source object has multiple nodes that share a reference,\n * the returned object will have the same structure, but the references will\n * be pointed to the location within the cloned value.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {*} -> {*}\n * @param {*} value The object or array to clone\n * @return {*} A deeply cloned copy of `val`\n * @example\n *\n *      const objects = [{}, {}, {}];\n *      const objectsClone = R.clone(objects);\n *      objects === objectsClone; //=> false\n *      objects[0] === objectsClone[0]; //=> false\n */\nvar clone = /*#__PURE__*/_curry1(function clone(value) {\n  return value != null && typeof value.clone === 'function' ? value.clone() : _clone(value, true);\n});\nexport default clone;","export const defaultJsonSerializer = JSON;\n//# sourceMappingURL=defaultJsonSerializer.js.map","export const uppercase = (str) => str.toUpperCase();\n/**\n * Convert Headers instance into regular object\n */\nexport const HeadersInstanceToPlainObject = (headers) => {\n    const o = {};\n    headers.forEach((v, k) => {\n        o[k] = v;\n    });\n    return o;\n};\n//# sourceMappingURL=helpers.js.map","export const parseRequestArgs = (documentOrOptions, variables, requestHeaders) => {\n    return documentOrOptions.document\n        ? documentOrOptions\n        : {\n            document: documentOrOptions,\n            variables: variables,\n            requestHeaders: requestHeaders,\n            signal: undefined,\n        };\n};\nexport const parseRawRequestArgs = (queryOrOptions, variables, requestHeaders) => {\n    return queryOrOptions.query\n        ? queryOrOptions\n        : {\n            query: queryOrOptions,\n            variables: variables,\n            requestHeaders: requestHeaders,\n            signal: undefined,\n        };\n};\nexport const parseBatchRequestArgs = (documentsOrOptions, requestHeaders) => {\n    return documentsOrOptions.documents\n        ? documentsOrOptions\n        : {\n            documents: documentsOrOptions,\n            requestHeaders: requestHeaders,\n            signal: undefined,\n        };\n};\nexport const parseRequestExtendedArgs = (urlOrOptions, document, ...variablesAndRequestHeaders) => {\n    const [variables, requestHeaders] = variablesAndRequestHeaders;\n    return urlOrOptions.document\n        ? urlOrOptions\n        : {\n            url: urlOrOptions,\n            document: document,\n            variables,\n            requestHeaders,\n            signal: undefined,\n        };\n};\nexport const parseRawRequestExtendedArgs = (urlOrOptions, query, ...variablesAndRequestHeaders) => {\n    const [variables, requestHeaders] = variablesAndRequestHeaders;\n    return urlOrOptions.query\n        ? urlOrOptions\n        : {\n            url: urlOrOptions,\n            query: query,\n            variables,\n            requestHeaders,\n            signal: undefined,\n        };\n};\n//# sourceMappingURL=parseArgs.js.map","export function devAssert(condition, message) {\n  const booleanCondition = Boolean(condition);\n\n  if (!booleanCondition) {\n    throw new Error(message);\n  }\n}\n","/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport function isObjectLike(value) {\n  return typeof value == 'object' && value !== null;\n}\n","export function invariant(condition, message) {\n  const booleanCondition = Boolean(condition);\n\n  if (!booleanCondition) {\n    throw new Error(\n      message != null ? message : 'Unexpected invariant triggered.',\n    );\n  }\n}\n","import { invariant } from '../jsutils/invariant.mjs';\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n  let lastLineStart = 0;\n  let line = 1;\n\n  for (const match of source.body.matchAll(LineRegExp)) {\n    typeof match.index === 'number' || invariant(false);\n\n    if (match.index >= position) {\n      break;\n    }\n\n    lastLineStart = match.index + match[0].length;\n    line += 1;\n  }\n\n  return {\n    line,\n    column: position + 1 - lastLineStart,\n  };\n}\n","import { getLocation } from './location.mjs';\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nexport function printLocation(location) {\n  return printSourceLocation(\n    location.source,\n    getLocation(location.source, location.start),\n  );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n  const firstLineColumnOffset = source.locationOffset.column - 1;\n  const body = ''.padStart(firstLineColumnOffset) + source.body;\n  const lineIndex = sourceLocation.line - 1;\n  const lineOffset = source.locationOffset.line - 1;\n  const lineNum = sourceLocation.line + lineOffset;\n  const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n  const columnNum = sourceLocation.column + columnOffset;\n  const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n  const lines = body.split(/\\r\\n|[\\n\\r]/g);\n  const locationLine = lines[lineIndex]; // Special case for minified documents\n\n  if (locationLine.length > 120) {\n    const subLineIndex = Math.floor(columnNum / 80);\n    const subLineColumnNum = columnNum % 80;\n    const subLines = [];\n\n    for (let i = 0; i < locationLine.length; i += 80) {\n      subLines.push(locationLine.slice(i, i + 80));\n    }\n\n    return (\n      locationStr +\n      printPrefixedLines([\n        [`${lineNum} |`, subLines[0]],\n        ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n        ['|', '^'.padStart(subLineColumnNum)],\n        ['|', subLines[subLineIndex + 1]],\n      ])\n    );\n  }\n\n  return (\n    locationStr +\n    printPrefixedLines([\n      // Lines specified like this: [\"prefix\", \"string\"],\n      [`${lineNum - 1} |`, lines[lineIndex - 1]],\n      [`${lineNum} |`, locationLine],\n      ['|', '^'.padStart(columnNum)],\n      [`${lineNum + 1} |`, lines[lineIndex + 1]],\n    ])\n  );\n}\n\nfunction printPrefixedLines(lines) {\n  const existingLines = lines.filter(([_, line]) => line !== undefined);\n  const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n  return existingLines\n    .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n    .join('\\n');\n}\n","import { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { getLocation } from '../language/location.mjs';\nimport {\n  printLocation,\n  printSourceLocation,\n} from '../language/printLocation.mjs';\n\nfunction toNormalizedOptions(args) {\n  const firstArg = args[0];\n\n  if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n    return {\n      nodes: firstArg,\n      source: args[1],\n      positions: args[2],\n      path: args[3],\n      originalError: args[4],\n      extensions: args[5],\n    };\n  }\n\n  return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport class GraphQLError extends Error {\n  /**\n   * An array of `{ line, column }` locations within the source GraphQL document\n   * which correspond to this error.\n   *\n   * Errors during validation often contain multiple locations, for example to\n   * point out two things with the same name. Errors during execution include a\n   * single location, the field which produced the error.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array describing the JSON-path into the execution response which\n   * corresponds to this error. Only included for errors during execution.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array of GraphQL AST Nodes corresponding to this error.\n   */\n\n  /**\n   * The source GraphQL document for the first location of this error.\n   *\n   * Note that if this Error represents more than one node, the source may not\n   * represent nodes after the first node.\n   */\n\n  /**\n   * An array of character offsets within the source GraphQL document\n   * which correspond to this error.\n   */\n\n  /**\n   * The original error thrown from a field resolver during execution.\n   */\n\n  /**\n   * Extension fields to add to the formatted error.\n   */\n\n  /**\n   * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n   */\n  constructor(message, ...rawArgs) {\n    var _this$nodes, _nodeLocations$, _ref;\n\n    const { nodes, source, positions, path, originalError, extensions } =\n      toNormalizedOptions(rawArgs);\n    super(message);\n    this.name = 'GraphQLError';\n    this.path = path !== null && path !== void 0 ? path : undefined;\n    this.originalError =\n      originalError !== null && originalError !== void 0\n        ? originalError\n        : undefined; // Compute list of blame nodes.\n\n    this.nodes = undefinedIfEmpty(\n      Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n    );\n    const nodeLocations = undefinedIfEmpty(\n      (_this$nodes = this.nodes) === null || _this$nodes === void 0\n        ? void 0\n        : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n    ); // Compute locations in the source for the given nodes/positions.\n\n    this.source =\n      source !== null && source !== void 0\n        ? source\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : (_nodeLocations$ = nodeLocations[0]) === null ||\n          _nodeLocations$ === void 0\n        ? void 0\n        : _nodeLocations$.source;\n    this.positions =\n      positions !== null && positions !== void 0\n        ? positions\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : nodeLocations.map((loc) => loc.start);\n    this.locations =\n      positions && source\n        ? positions.map((pos) => getLocation(source, pos))\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : nodeLocations.map((loc) => getLocation(loc.source, loc.start));\n    const originalExtensions = isObjectLike(\n      originalError === null || originalError === void 0\n        ? void 0\n        : originalError.extensions,\n    )\n      ? originalError === null || originalError === void 0\n        ? void 0\n        : originalError.extensions\n      : undefined;\n    this.extensions =\n      (_ref =\n        extensions !== null && extensions !== void 0\n          ? extensions\n          : originalExtensions) !== null && _ref !== void 0\n        ? _ref\n        : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n    // Keep the rest as non-enumerable.\n\n    Object.defineProperties(this, {\n      message: {\n        writable: true,\n        enumerable: true,\n      },\n      name: {\n        enumerable: false,\n      },\n      nodes: {\n        enumerable: false,\n      },\n      source: {\n        enumerable: false,\n      },\n      positions: {\n        enumerable: false,\n      },\n      originalError: {\n        enumerable: false,\n      },\n    }); // Include (non-enumerable) stack trace.\n\n    /* c8 ignore start */\n    // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n    if (\n      originalError !== null &&\n      originalError !== void 0 &&\n      originalError.stack\n    ) {\n      Object.defineProperty(this, 'stack', {\n        value: originalError.stack,\n        writable: true,\n        configurable: true,\n      });\n    } else if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, GraphQLError);\n    } else {\n      Object.defineProperty(this, 'stack', {\n        value: Error().stack,\n        writable: true,\n        configurable: true,\n      });\n    }\n    /* c8 ignore stop */\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLError';\n  }\n\n  toString() {\n    let output = this.message;\n\n    if (this.nodes) {\n      for (const node of this.nodes) {\n        if (node.loc) {\n          output += '\\n\\n' + printLocation(node.loc);\n        }\n      }\n    } else if (this.source && this.locations) {\n      for (const location of this.locations) {\n        output += '\\n\\n' + printSourceLocation(this.source, location);\n      }\n    }\n\n    return output;\n  }\n\n  toJSON() {\n    const formattedError = {\n      message: this.message,\n    };\n\n    if (this.locations != null) {\n      formattedError.locations = this.locations;\n    }\n\n    if (this.path != null) {\n      formattedError.path = this.path;\n    }\n\n    if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n      formattedError.extensions = this.extensions;\n    }\n\n    return formattedError;\n  }\n}\n\nfunction undefinedIfEmpty(array) {\n  return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nexport function printError(error) {\n  return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nexport function formatError(error) {\n  return error.toJSON();\n}\n","import { GraphQLError } from './GraphQLError.mjs';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n  return new GraphQLError(`Syntax Error: ${description}`, {\n    source,\n    positions: [position],\n  });\n}\n","/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport class Location {\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The Token at which this Node begins.\n   */\n\n  /**\n   * The Token at which this Node ends.\n   */\n\n  /**\n   * The Source document the AST represents.\n   */\n  constructor(startToken, endToken, source) {\n    this.start = startToken.start;\n    this.end = endToken.end;\n    this.startToken = startToken;\n    this.endToken = endToken;\n    this.source = source;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Location';\n  }\n\n  toJSON() {\n    return {\n      start: this.start,\n      end: this.end,\n    };\n  }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport class Token {\n  /**\n   * The kind of Token.\n   */\n\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The 1-indexed line number on which this Token appears.\n   */\n\n  /**\n   * The 1-indexed column number at which this Token begins.\n   */\n\n  /**\n   * For non-punctuation tokens, represents the interpreted value of the token.\n   *\n   * Note: is undefined for punctuation tokens, but typed as string for\n   * convenience in the parser.\n   */\n\n  /**\n   * Tokens exist as nodes in a double-linked-list amongst all tokens\n   * including ignored tokens. <SOF> is always the first node and <EOF>\n   * the last.\n   */\n  constructor(kind, start, end, line, column, value) {\n    this.kind = kind;\n    this.start = start;\n    this.end = end;\n    this.line = line;\n    this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n    this.value = value;\n    this.prev = null;\n    this.next = null;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Token';\n  }\n\n  toJSON() {\n    return {\n      kind: this.kind,\n      value: this.value,\n      line: this.line,\n      column: this.column,\n    };\n  }\n}\n/**\n * The list of all possible AST node types.\n */\n\n/**\n * @internal\n */\nexport const QueryDocumentKeys = {\n  Name: [],\n  Document: ['definitions'],\n  OperationDefinition: [\n    'name',\n    'variableDefinitions',\n    'directives',\n    'selectionSet',\n  ],\n  VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n  Variable: ['name'],\n  SelectionSet: ['selections'],\n  Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n  Argument: ['name', 'value'],\n  FragmentSpread: ['name', 'directives'],\n  InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n  FragmentDefinition: [\n    'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n    'variableDefinitions',\n    'typeCondition',\n    'directives',\n    'selectionSet',\n  ],\n  IntValue: [],\n  FloatValue: [],\n  StringValue: [],\n  BooleanValue: [],\n  NullValue: [],\n  EnumValue: [],\n  ListValue: ['values'],\n  ObjectValue: ['fields'],\n  ObjectField: ['name', 'value'],\n  Directive: ['name', 'arguments'],\n  NamedType: ['name'],\n  ListType: ['type'],\n  NonNullType: ['type'],\n  SchemaDefinition: ['description', 'directives', 'operationTypes'],\n  OperationTypeDefinition: ['type'],\n  ScalarTypeDefinition: ['description', 'name', 'directives'],\n  ObjectTypeDefinition: [\n    'description',\n    'name',\n    'interfaces',\n    'directives',\n    'fields',\n  ],\n  FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n  InputValueDefinition: [\n    'description',\n    'name',\n    'type',\n    'defaultValue',\n    'directives',\n  ],\n  InterfaceTypeDefinition: [\n    'description',\n    'name',\n    'interfaces',\n    'directives',\n    'fields',\n  ],\n  UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n  EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n  EnumValueDefinition: ['description', 'name', 'directives'],\n  InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n  DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n  SchemaExtension: ['directives', 'operationTypes'],\n  ScalarTypeExtension: ['name', 'directives'],\n  ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  UnionTypeExtension: ['name', 'directives', 'types'],\n  EnumTypeExtension: ['name', 'directives', 'values'],\n  InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n  const maybeKind =\n    maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n  return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nvar OperationTypeNode;\n\n(function (OperationTypeNode) {\n  OperationTypeNode['QUERY'] = 'query';\n  OperationTypeNode['MUTATION'] = 'mutation';\n  OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (OperationTypeNode = {}));\n\nexport { OperationTypeNode };\n","/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation;\n\n(function (DirectiveLocation) {\n  DirectiveLocation['QUERY'] = 'QUERY';\n  DirectiveLocation['MUTATION'] = 'MUTATION';\n  DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n  DirectiveLocation['FIELD'] = 'FIELD';\n  DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n  DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n  DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n  DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n  DirectiveLocation['SCHEMA'] = 'SCHEMA';\n  DirectiveLocation['SCALAR'] = 'SCALAR';\n  DirectiveLocation['OBJECT'] = 'OBJECT';\n  DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n  DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n  DirectiveLocation['INTERFACE'] = 'INTERFACE';\n  DirectiveLocation['UNION'] = 'UNION';\n  DirectiveLocation['ENUM'] = 'ENUM';\n  DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n  DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n  DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n\nexport { DirectiveLocation };\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n","/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind;\n\n(function (Kind) {\n  Kind['NAME'] = 'Name';\n  Kind['DOCUMENT'] = 'Document';\n  Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n  Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n  Kind['SELECTION_SET'] = 'SelectionSet';\n  Kind['FIELD'] = 'Field';\n  Kind['ARGUMENT'] = 'Argument';\n  Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n  Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n  Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n  Kind['VARIABLE'] = 'Variable';\n  Kind['INT'] = 'IntValue';\n  Kind['FLOAT'] = 'FloatValue';\n  Kind['STRING'] = 'StringValue';\n  Kind['BOOLEAN'] = 'BooleanValue';\n  Kind['NULL'] = 'NullValue';\n  Kind['ENUM'] = 'EnumValue';\n  Kind['LIST'] = 'ListValue';\n  Kind['OBJECT'] = 'ObjectValue';\n  Kind['OBJECT_FIELD'] = 'ObjectField';\n  Kind['DIRECTIVE'] = 'Directive';\n  Kind['NAMED_TYPE'] = 'NamedType';\n  Kind['LIST_TYPE'] = 'ListType';\n  Kind['NON_NULL_TYPE'] = 'NonNullType';\n  Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n  Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n  Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n  Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n  Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n  Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n  Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n  Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n  Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n  Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n  Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n  Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n  Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n  Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n  Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n  Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n  Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n  Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n  Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (Kind = {}));\n\nexport { Kind };\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n","/**\n * ```\n * WhiteSpace ::\n *   - \"Horizontal Tab (U+0009)\"\n *   - \"Space (U+0020)\"\n * ```\n * @internal\n */\nexport function isWhiteSpace(code) {\n  return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nexport function isDigit(code) {\n  return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n *   - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n *   - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n *   - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n *   - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nexport function isLetter(code) {\n  return (\n    (code >= 0x0061 && code <= 0x007a) || // A-Z\n    (code >= 0x0041 && code <= 0x005a) // a-z\n  );\n}\n/**\n * ```\n * NameStart ::\n *   - Letter\n *   - `_`\n * ```\n * @internal\n */\n\nexport function isNameStart(code) {\n  return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n *   - Letter\n *   - Digit\n *   - `_`\n * ```\n * @internal\n */\n\nexport function isNameContinue(code) {\n  return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n","import { isWhiteSpace } from './characterClasses.mjs';\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\n\nexport function dedentBlockStringLines(lines) {\n  var _firstNonEmptyLine2;\n\n  let commonIndent = Number.MAX_SAFE_INTEGER;\n  let firstNonEmptyLine = null;\n  let lastNonEmptyLine = -1;\n\n  for (let i = 0; i < lines.length; ++i) {\n    var _firstNonEmptyLine;\n\n    const line = lines[i];\n    const indent = leadingWhitespace(line);\n\n    if (indent === line.length) {\n      continue; // skip empty lines\n    }\n\n    firstNonEmptyLine =\n      (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n      _firstNonEmptyLine !== void 0\n        ? _firstNonEmptyLine\n        : i;\n    lastNonEmptyLine = i;\n\n    if (i !== 0 && indent < commonIndent) {\n      commonIndent = indent;\n    }\n  }\n\n  return lines // Remove common indentation from all lines but first.\n    .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n    .slice(\n      (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n        _firstNonEmptyLine2 !== void 0\n        ? _firstNonEmptyLine2\n        : 0,\n      lastNonEmptyLine + 1,\n    );\n}\n\nfunction leadingWhitespace(str) {\n  let i = 0;\n\n  while (i < str.length && isWhiteSpace(str.charCodeAt(i))) {\n    ++i;\n  }\n\n  return i;\n}\n/**\n * @internal\n */\n\nexport function isPrintableAsBlockString(value) {\n  if (value === '') {\n    return true; // empty string is printable\n  }\n\n  let isEmptyLine = true;\n  let hasIndent = false;\n  let hasCommonIndent = true;\n  let seenNonEmptyLine = false;\n\n  for (let i = 0; i < value.length; ++i) {\n    switch (value.codePointAt(i)) {\n      case 0x0000:\n      case 0x0001:\n      case 0x0002:\n      case 0x0003:\n      case 0x0004:\n      case 0x0005:\n      case 0x0006:\n      case 0x0007:\n      case 0x0008:\n      case 0x000b:\n      case 0x000c:\n      case 0x000e:\n      case 0x000f:\n        return false;\n      // Has non-printable characters\n\n      case 0x000d:\n        //  \\r\n        return false;\n      // Has \\r or \\r\\n which will be replaced as \\n\n\n      case 10:\n        //  \\n\n        if (isEmptyLine && !seenNonEmptyLine) {\n          return false; // Has leading new line\n        }\n\n        seenNonEmptyLine = true;\n        isEmptyLine = true;\n        hasIndent = false;\n        break;\n\n      case 9: //   \\t\n\n      case 32:\n        //  <space>\n        hasIndent || (hasIndent = isEmptyLine);\n        break;\n\n      default:\n        hasCommonIndent && (hasCommonIndent = hasIndent);\n        isEmptyLine = false;\n    }\n  }\n\n  if (isEmptyLine) {\n    return false; // Has trailing empty lines\n  }\n\n  if (hasCommonIndent && seenNonEmptyLine) {\n    return false; // Has internal indent\n  }\n\n  return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value, options) {\n  const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n  const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n  const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n  const forceLeadingNewLine =\n    lines.length > 1 &&\n    lines\n      .slice(1)\n      .every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n  const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n  const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n  const hasTrailingSlash = value.endsWith('\\\\');\n  const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n  const printAsMultipleLines =\n    !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n    (!isSingleLine ||\n      value.length > 70 ||\n      forceTrailingNewline ||\n      forceLeadingNewLine ||\n      hasTrailingTripleQuotes);\n  let result = ''; // Format a multi-line block quote to account for leading space.\n\n  const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0));\n\n  if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n    result += '\\n';\n  }\n\n  result += escapedValue;\n\n  if (printAsMultipleLines || forceTrailingNewline) {\n    result += '\\n';\n  }\n\n  return '\"\"\"' + result + '\"\"\"';\n}\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind;\n\n(function (TokenKind) {\n  TokenKind['SOF'] = '<SOF>';\n  TokenKind['EOF'] = '<EOF>';\n  TokenKind['BANG'] = '!';\n  TokenKind['DOLLAR'] = '$';\n  TokenKind['AMP'] = '&';\n  TokenKind['PAREN_L'] = '(';\n  TokenKind['PAREN_R'] = ')';\n  TokenKind['SPREAD'] = '...';\n  TokenKind['COLON'] = ':';\n  TokenKind['EQUALS'] = '=';\n  TokenKind['AT'] = '@';\n  TokenKind['BRACKET_L'] = '[';\n  TokenKind['BRACKET_R'] = ']';\n  TokenKind['BRACE_L'] = '{';\n  TokenKind['PIPE'] = '|';\n  TokenKind['BRACE_R'] = '}';\n  TokenKind['NAME'] = 'Name';\n  TokenKind['INT'] = 'Int';\n  TokenKind['FLOAT'] = 'Float';\n  TokenKind['STRING'] = 'String';\n  TokenKind['BLOCK_STRING'] = 'BlockString';\n  TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n\nexport { TokenKind };\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Token } from './ast.mjs';\nimport { dedentBlockStringLines } from './blockString.mjs';\nimport { isDigit, isNameContinue, isNameStart } from './characterClasses.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport class Lexer {\n  /**\n   * The previously focused non-ignored token.\n   */\n\n  /**\n   * The currently focused non-ignored token.\n   */\n\n  /**\n   * The (1-indexed) line containing the current token.\n   */\n\n  /**\n   * The character offset at which the current line begins.\n   */\n  constructor(source) {\n    const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n    this.source = source;\n    this.lastToken = startOfFileToken;\n    this.token = startOfFileToken;\n    this.line = 1;\n    this.lineStart = 0;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Lexer';\n  }\n  /**\n   * Advances the token stream to the next non-ignored token.\n   */\n\n  advance() {\n    this.lastToken = this.token;\n    const token = (this.token = this.lookahead());\n    return token;\n  }\n  /**\n   * Looks ahead and returns the next non-ignored token, but does not change\n   * the state of Lexer.\n   */\n\n  lookahead() {\n    let token = this.token;\n\n    if (token.kind !== TokenKind.EOF) {\n      do {\n        if (token.next) {\n          token = token.next;\n        } else {\n          // Read the next token and form a link in the token linked-list.\n          const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n          token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n          nextToken.prev = token;\n          token = nextToken;\n        }\n      } while (token.kind === TokenKind.COMMENT);\n    }\n\n    return token;\n  }\n}\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n  return (\n    kind === TokenKind.BANG ||\n    kind === TokenKind.DOLLAR ||\n    kind === TokenKind.AMP ||\n    kind === TokenKind.PAREN_L ||\n    kind === TokenKind.PAREN_R ||\n    kind === TokenKind.SPREAD ||\n    kind === TokenKind.COLON ||\n    kind === TokenKind.EQUALS ||\n    kind === TokenKind.AT ||\n    kind === TokenKind.BRACKET_L ||\n    kind === TokenKind.BRACKET_R ||\n    kind === TokenKind.BRACE_L ||\n    kind === TokenKind.PIPE ||\n    kind === TokenKind.BRACE_R\n  );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n *   - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n  return (\n    (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n  );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n  return (\n    isLeadingSurrogate(body.charCodeAt(location)) &&\n    isTrailingSurrogate(body.charCodeAt(location + 1))\n  );\n}\n\nfunction isLeadingSurrogate(code) {\n  return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n  return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n  const code = lexer.source.body.codePointAt(location);\n\n  if (code === undefined) {\n    return TokenKind.EOF;\n  } else if (code >= 0x0020 && code <= 0x007e) {\n    // Printable ASCII\n    const char = String.fromCodePoint(code);\n    return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n  } // Unicode code point\n\n  return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n  const line = lexer.line;\n  const col = 1 + start - lexer.lineStart;\n  return new Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // SourceCharacter\n\n    switch (code) {\n      // Ignored ::\n      //   - UnicodeBOM\n      //   - WhiteSpace\n      //   - LineTerminator\n      //   - Comment\n      //   - Comma\n      //\n      // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n      //\n      // WhiteSpace ::\n      //   - \"Horizontal Tab (U+0009)\"\n      //   - \"Space (U+0020)\"\n      //\n      // Comma :: ,\n      case 0xfeff: // <BOM>\n\n      case 0x0009: // \\t\n\n      case 0x0020: // <space>\n\n      case 0x002c:\n        // ,\n        ++position;\n        continue;\n      // LineTerminator ::\n      //   - \"New Line (U+000A)\"\n      //   - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n      //   - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n      case 0x000a:\n        // \\n\n        ++position;\n        ++lexer.line;\n        lexer.lineStart = position;\n        continue;\n\n      case 0x000d:\n        // \\r\n        if (body.charCodeAt(position + 1) === 0x000a) {\n          position += 2;\n        } else {\n          ++position;\n        }\n\n        ++lexer.line;\n        lexer.lineStart = position;\n        continue;\n      // Comment\n\n      case 0x0023:\n        // #\n        return readComment(lexer, position);\n      // Token ::\n      //   - Punctuator\n      //   - Name\n      //   - IntValue\n      //   - FloatValue\n      //   - StringValue\n      //\n      // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n      case 0x0021:\n        // !\n        return createToken(lexer, TokenKind.BANG, position, position + 1);\n\n      case 0x0024:\n        // $\n        return createToken(lexer, TokenKind.DOLLAR, position, position + 1);\n\n      case 0x0026:\n        // &\n        return createToken(lexer, TokenKind.AMP, position, position + 1);\n\n      case 0x0028:\n        // (\n        return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n\n      case 0x0029:\n        // )\n        return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n\n      case 0x002e:\n        // .\n        if (\n          body.charCodeAt(position + 1) === 0x002e &&\n          body.charCodeAt(position + 2) === 0x002e\n        ) {\n          return createToken(lexer, TokenKind.SPREAD, position, position + 3);\n        }\n\n        break;\n\n      case 0x003a:\n        // :\n        return createToken(lexer, TokenKind.COLON, position, position + 1);\n\n      case 0x003d:\n        // =\n        return createToken(lexer, TokenKind.EQUALS, position, position + 1);\n\n      case 0x0040:\n        // @\n        return createToken(lexer, TokenKind.AT, position, position + 1);\n\n      case 0x005b:\n        // [\n        return createToken(lexer, TokenKind.BRACKET_L, position, position + 1);\n\n      case 0x005d:\n        // ]\n        return createToken(lexer, TokenKind.BRACKET_R, position, position + 1);\n\n      case 0x007b:\n        // {\n        return createToken(lexer, TokenKind.BRACE_L, position, position + 1);\n\n      case 0x007c:\n        // |\n        return createToken(lexer, TokenKind.PIPE, position, position + 1);\n\n      case 0x007d:\n        // }\n        return createToken(lexer, TokenKind.BRACE_R, position, position + 1);\n      // StringValue\n\n      case 0x0022:\n        // \"\n        if (\n          body.charCodeAt(position + 1) === 0x0022 &&\n          body.charCodeAt(position + 2) === 0x0022\n        ) {\n          return readBlockString(lexer, position);\n        }\n\n        return readString(lexer, position);\n    } // IntValue | FloatValue (Digit | -)\n\n    if (isDigit(code) || code === 0x002d) {\n      return readNumber(lexer, position, code);\n    } // Name\n\n    if (isNameStart(code)) {\n      return readName(lexer, position);\n    }\n\n    throw syntaxError(\n      lexer.source,\n      position,\n      code === 0x0027\n        ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n        : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n        ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n        : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n    );\n  }\n\n  return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n    if (code === 0x000a || code === 0x000d) {\n      break;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      break;\n    }\n  }\n\n  return createToken(\n    lexer,\n    TokenKind.COMMENT,\n    start,\n    position,\n    body.slice(start + 1, position),\n  );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n *   - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *   - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n *   - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n  const body = lexer.source.body;\n  let position = start;\n  let code = firstCode;\n  let isFloat = false; // NegativeSign (-)\n\n  if (code === 0x002d) {\n    code = body.charCodeAt(++position);\n  } // Zero (0)\n\n  if (code === 0x0030) {\n    code = body.charCodeAt(++position);\n\n    if (isDigit(code)) {\n      throw syntaxError(\n        lexer.source,\n        position,\n        `Invalid number, unexpected digit after 0: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  } else {\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // Full stop (.)\n\n  if (code === 0x002e) {\n    isFloat = true;\n    code = body.charCodeAt(++position);\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // E e\n\n  if (code === 0x0045 || code === 0x0065) {\n    isFloat = true;\n    code = body.charCodeAt(++position); // + -\n\n    if (code === 0x002b || code === 0x002d) {\n      code = body.charCodeAt(++position);\n    }\n\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // Numbers cannot be followed by . or NameStart\n\n  if (code === 0x002e || isNameStart(code)) {\n    throw syntaxError(\n      lexer.source,\n      position,\n      `Invalid number, expected digit but got: ${printCodePointAt(\n        lexer,\n        position,\n      )}.`,\n    );\n  }\n\n  return createToken(\n    lexer,\n    isFloat ? TokenKind.FLOAT : TokenKind.INT,\n    start,\n    position,\n    body.slice(start, position),\n  );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n  if (!isDigit(firstCode)) {\n    throw syntaxError(\n      lexer.source,\n      start,\n      `Invalid number, expected digit but got: ${printCodePointAt(\n        lexer,\n        start,\n      )}.`,\n    );\n  }\n\n  const body = lexer.source.body;\n  let position = start + 1; // +1 to skip first firstCode\n\n  while (isDigit(body.charCodeAt(position))) {\n    ++position;\n  }\n\n  return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n *   - `\"\"` [lookahead != `\"`]\n *   - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n *   - SourceCharacter but not `\"` or `\\` or LineTerminator\n *   - `\\u` EscapedUnicode\n *   - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n *   - `{` HexDigit+ `}`\n *   - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n  let chunkStart = position;\n  let value = '';\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // Closing Quote (\")\n\n    if (code === 0x0022) {\n      value += body.slice(chunkStart, position);\n      return createToken(lexer, TokenKind.STRING, start, position + 1, value);\n    } // Escape Sequence (\\)\n\n    if (code === 0x005c) {\n      value += body.slice(chunkStart, position);\n      const escape =\n        body.charCodeAt(position + 1) === 0x0075 // u\n          ? body.charCodeAt(position + 2) === 0x007b // {\n            ? readEscapedUnicodeVariableWidth(lexer, position)\n            : readEscapedUnicodeFixedWidth(lexer, position)\n          : readEscapedCharacter(lexer, position);\n      value += escape.value;\n      position += escape.size;\n      chunkStart = position;\n      continue;\n    } // LineTerminator (\\n | \\r)\n\n    if (code === 0x000a || code === 0x000d) {\n      break;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      throw syntaxError(\n        lexer.source,\n        position,\n        `Invalid character within String: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  }\n\n  throw syntaxError(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n  const body = lexer.source.body;\n  let point = 0;\n  let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n  while (size < 12) {\n    const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n    if (code === 0x007d) {\n      // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n      if (size < 5 || !isUnicodeScalarValue(point)) {\n        break;\n      }\n\n      return {\n        value: String.fromCodePoint(point),\n        size,\n      };\n    } // Append this hex digit to the code point.\n\n    point = (point << 4) | readHexDigit(code);\n\n    if (point < 0) {\n      break;\n    }\n  }\n\n  throw syntaxError(\n    lexer.source,\n    position,\n    `Invalid Unicode escape sequence: \"${body.slice(\n      position,\n      position + size,\n    )}\".`,\n  );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n  const body = lexer.source.body;\n  const code = read16BitHexCode(body, position + 2);\n\n  if (isUnicodeScalarValue(code)) {\n    return {\n      value: String.fromCodePoint(code),\n      size: 6,\n    };\n  } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n  // a valid pair is formed.\n\n  if (isLeadingSurrogate(code)) {\n    // \\u\n    if (\n      body.charCodeAt(position + 6) === 0x005c &&\n      body.charCodeAt(position + 7) === 0x0075\n    ) {\n      const trailingCode = read16BitHexCode(body, position + 8);\n\n      if (isTrailingSurrogate(trailingCode)) {\n        // JavaScript defines strings as a sequence of UTF-16 code units and\n        // encodes Unicode code points above U+FFFF using a surrogate pair of\n        // code units. Since this is a surrogate pair escape sequence, just\n        // include both codes into the JavaScript string value. Had JavaScript\n        // not been internally based on UTF-16, then this surrogate pair would\n        // be decoded to retrieve the supplementary code point.\n        return {\n          value: String.fromCodePoint(code, trailingCode),\n          size: 12,\n        };\n      }\n    }\n  }\n\n  throw syntaxError(\n    lexer.source,\n    position,\n    `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n  );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n  // readHexDigit() returns -1 on error. ORing a negative value with any other\n  // value always produces a negative value.\n  return (\n    (readHexDigit(body.charCodeAt(position)) << 12) |\n    (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n    (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n    readHexDigit(body.charCodeAt(position + 3))\n  );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n *   - `A` `B` `C` `D` `E` `F`\n *   - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n  return code >= 0x0030 && code <= 0x0039 // 0-9\n    ? code - 0x0030\n    : code >= 0x0041 && code <= 0x0046 // A-F\n    ? code - 0x0037\n    : code >= 0x0061 && code <= 0x0066 // a-f\n    ? code - 0x0057\n    : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name               |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"`               | U+0022     | double quote                 |\n * | `\\`               | U+005C     | reverse solidus (back slash) |\n * | `/`               | U+002F     | solidus (forward slash)      |\n * | `b`               | U+0008     | backspace                    |\n * | `f`               | U+000C     | form feed                    |\n * | `n`               | U+000A     | line feed (new line)         |\n * | `r`               | U+000D     | carriage return              |\n * | `t`               | U+0009     | horizontal tab               |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n  const body = lexer.source.body;\n  const code = body.charCodeAt(position + 1);\n\n  switch (code) {\n    case 0x0022:\n      // \"\n      return {\n        value: '\\u0022',\n        size: 2,\n      };\n\n    case 0x005c:\n      // \\\n      return {\n        value: '\\u005c',\n        size: 2,\n      };\n\n    case 0x002f:\n      // /\n      return {\n        value: '\\u002f',\n        size: 2,\n      };\n\n    case 0x0062:\n      // b\n      return {\n        value: '\\u0008',\n        size: 2,\n      };\n\n    case 0x0066:\n      // f\n      return {\n        value: '\\u000c',\n        size: 2,\n      };\n\n    case 0x006e:\n      // n\n      return {\n        value: '\\u000a',\n        size: 2,\n      };\n\n    case 0x0072:\n      // r\n      return {\n        value: '\\u000d',\n        size: 2,\n      };\n\n    case 0x0074:\n      // t\n      return {\n        value: '\\u0009',\n        size: 2,\n      };\n  }\n\n  throw syntaxError(\n    lexer.source,\n    position,\n    `Invalid character escape sequence: \"${body.slice(\n      position,\n      position + 2,\n    )}\".`,\n  );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n *   - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n *   - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n *   - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let lineStart = lexer.lineStart;\n  let position = start + 3;\n  let chunkStart = position;\n  let currentLine = '';\n  const blockLines = [];\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n    if (\n      code === 0x0022 &&\n      body.charCodeAt(position + 1) === 0x0022 &&\n      body.charCodeAt(position + 2) === 0x0022\n    ) {\n      currentLine += body.slice(chunkStart, position);\n      blockLines.push(currentLine);\n      const token = createToken(\n        lexer,\n        TokenKind.BLOCK_STRING,\n        start,\n        position + 3, // Return a string of the lines joined with U+000A.\n        dedentBlockStringLines(blockLines).join('\\n'),\n      );\n      lexer.line += blockLines.length - 1;\n      lexer.lineStart = lineStart;\n      return token;\n    } // Escaped Triple-Quote (\\\"\"\")\n\n    if (\n      code === 0x005c &&\n      body.charCodeAt(position + 1) === 0x0022 &&\n      body.charCodeAt(position + 2) === 0x0022 &&\n      body.charCodeAt(position + 3) === 0x0022\n    ) {\n      currentLine += body.slice(chunkStart, position);\n      chunkStart = position + 1; // skip only slash\n\n      position += 4;\n      continue;\n    } // LineTerminator\n\n    if (code === 0x000a || code === 0x000d) {\n      currentLine += body.slice(chunkStart, position);\n      blockLines.push(currentLine);\n\n      if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n        position += 2;\n      } else {\n        ++position;\n      }\n\n      currentLine = '';\n      chunkStart = position;\n      lineStart = position;\n      continue;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      throw syntaxError(\n        lexer.source,\n        position,\n        `Invalid character within String: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  }\n\n  throw syntaxError(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n *   - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position);\n\n    if (isNameContinue(code)) {\n      ++position;\n    } else {\n      break;\n    }\n  }\n\n  return createToken(\n    lexer,\n    TokenKind.NAME,\n    start,\n    position,\n    body.slice(start, position),\n  );\n}\n","const MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport function inspect(value) {\n  return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n  switch (typeof value) {\n    case 'string':\n      return JSON.stringify(value);\n\n    case 'function':\n      return value.name ? `[function ${value.name}]` : '[function]';\n\n    case 'object':\n      return formatObjectValue(value, seenValues);\n\n    default:\n      return String(value);\n  }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n  if (value === null) {\n    return 'null';\n  }\n\n  if (previouslySeenValues.includes(value)) {\n    return '[Circular]';\n  }\n\n  const seenValues = [...previouslySeenValues, value];\n\n  if (isJSONable(value)) {\n    const jsonValue = value.toJSON(); // check for infinite recursion\n\n    if (jsonValue !== value) {\n      return typeof jsonValue === 'string'\n        ? jsonValue\n        : formatValue(jsonValue, seenValues);\n    }\n  } else if (Array.isArray(value)) {\n    return formatArray(value, seenValues);\n  }\n\n  return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n  return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n  const entries = Object.entries(object);\n\n  if (entries.length === 0) {\n    return '{}';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[' + getObjectTag(object) + ']';\n  }\n\n  const properties = entries.map(\n    ([key, value]) => key + ': ' + formatValue(value, seenValues),\n  );\n  return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n  if (array.length === 0) {\n    return '[]';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[Array]';\n  }\n\n  const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n  const remaining = array.length - len;\n  const items = [];\n\n  for (let i = 0; i < len; ++i) {\n    items.push(formatValue(array[i], seenValues));\n  }\n\n  if (remaining === 1) {\n    items.push('... 1 more item');\n  } else if (remaining > 1) {\n    items.push(`... ${remaining} more items`);\n  }\n\n  return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n  const tag = Object.prototype.toString\n    .call(object)\n    .replace(/^\\[object /, '')\n    .replace(/]$/, '');\n\n  if (tag === 'Object' && typeof object.constructor === 'function') {\n    const name = object.constructor.name;\n\n    if (typeof name === 'string' && name !== '') {\n      return name;\n    }\n  }\n\n  return tag;\n}\n","import { inspect } from './inspect.mjs';\n/* c8 ignore next 3 */\n\nconst isProduction =\n  globalThis.process && // eslint-disable-next-line no-undef\n  process.env.NODE_ENV === 'production';\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nexport const instanceOf =\n  /* c8 ignore next 6 */\n  // FIXME: https://github.com/graphql/graphql-js/issues/2317\n  isProduction\n    ? function instanceOf(value, constructor) {\n        return value instanceof constructor;\n      }\n    : function instanceOf(value, constructor) {\n        if (value instanceof constructor) {\n          return true;\n        }\n\n        if (typeof value === 'object' && value !== null) {\n          var _value$constructor;\n\n          // Prefer Symbol.toStringTag since it is immune to minification.\n          const className = constructor.prototype[Symbol.toStringTag];\n          const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n            Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n              ? value[Symbol.toStringTag]\n              : (_value$constructor = value.constructor) === null ||\n                _value$constructor === void 0\n              ? void 0\n              : _value$constructor.name;\n\n          if (className === valueClassName) {\n            const stringifiedValue = inspect(value);\n            throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n          }\n        }\n\n        return false;\n      };\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n  constructor(\n    body,\n    name = 'GraphQL request',\n    locationOffset = {\n      line: 1,\n      column: 1,\n    },\n  ) {\n    typeof body === 'string' ||\n      devAssert(false, `Body must be a string. Received: ${inspect(body)}.`);\n    this.body = body;\n    this.name = name;\n    this.locationOffset = locationOffset;\n    this.locationOffset.line > 0 ||\n      devAssert(\n        false,\n        'line in locationOffset is 1-indexed and must be positive.',\n      );\n    this.locationOffset.column > 0 ||\n      devAssert(\n        false,\n        'column in locationOffset is 1-indexed and must be positive.',\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Source';\n  }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nexport function isSource(source) {\n  return instanceOf(source, Source);\n}\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Location, OperationTypeNode } from './ast.mjs';\nimport { DirectiveLocation } from './directiveLocation.mjs';\nimport { Kind } from './kinds.mjs';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.mjs';\nimport { isSource, Source } from './source.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n  const parser = new Parser(source, options);\n  const document = parser.parseDocument();\n  Object.defineProperty(document, 'tokenCount', {\n    enumerable: false,\n    value: parser.tokenCount,\n  });\n  return document;\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(TokenKind.SOF);\n  const value = parser.parseValueLiteral(false);\n  parser.expectToken(TokenKind.EOF);\n  return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nexport function parseConstValue(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(TokenKind.SOF);\n  const value = parser.parseConstValueLiteral();\n  parser.expectToken(TokenKind.EOF);\n  return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(TokenKind.SOF);\n  const type = parser.parseTypeReference();\n  parser.expectToken(TokenKind.EOF);\n  return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport class Parser {\n  constructor(source, options = {}) {\n    const sourceObj = isSource(source) ? source : new Source(source);\n    this._lexer = new Lexer(sourceObj);\n    this._options = options;\n    this._tokenCounter = 0;\n  }\n\n  get tokenCount() {\n    return this._tokenCounter;\n  }\n  /**\n   * Converts a name lex token into a name parse node.\n   */\n\n  parseName() {\n    const token = this.expectToken(TokenKind.NAME);\n    return this.node(token, {\n      kind: Kind.NAME,\n      value: token.value,\n    });\n  } // Implements the parsing rules in the Document section.\n\n  /**\n   * Document : Definition+\n   */\n\n  parseDocument() {\n    return this.node(this._lexer.token, {\n      kind: Kind.DOCUMENT,\n      definitions: this.many(\n        TokenKind.SOF,\n        this.parseDefinition,\n        TokenKind.EOF,\n      ),\n    });\n  }\n  /**\n   * Definition :\n   *   - ExecutableDefinition\n   *   - TypeSystemDefinition\n   *   - TypeSystemExtension\n   *\n   * ExecutableDefinition :\n   *   - OperationDefinition\n   *   - FragmentDefinition\n   *\n   * TypeSystemDefinition :\n   *   - SchemaDefinition\n   *   - TypeDefinition\n   *   - DirectiveDefinition\n   *\n   * TypeDefinition :\n   *   - ScalarTypeDefinition\n   *   - ObjectTypeDefinition\n   *   - InterfaceTypeDefinition\n   *   - UnionTypeDefinition\n   *   - EnumTypeDefinition\n   *   - InputObjectTypeDefinition\n   */\n\n  parseDefinition() {\n    if (this.peek(TokenKind.BRACE_L)) {\n      return this.parseOperationDefinition();\n    } // Many definitions begin with a description and require a lookahead.\n\n    const hasDescription = this.peekDescription();\n    const keywordToken = hasDescription\n      ? this._lexer.lookahead()\n      : this._lexer.token;\n\n    if (keywordToken.kind === TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaDefinition();\n\n        case 'scalar':\n          return this.parseScalarTypeDefinition();\n\n        case 'type':\n          return this.parseObjectTypeDefinition();\n\n        case 'interface':\n          return this.parseInterfaceTypeDefinition();\n\n        case 'union':\n          return this.parseUnionTypeDefinition();\n\n        case 'enum':\n          return this.parseEnumTypeDefinition();\n\n        case 'input':\n          return this.parseInputObjectTypeDefinition();\n\n        case 'directive':\n          return this.parseDirectiveDefinition();\n      }\n\n      if (hasDescription) {\n        throw syntaxError(\n          this._lexer.source,\n          this._lexer.token.start,\n          'Unexpected description, descriptions are supported only on type definitions.',\n        );\n      }\n\n      switch (keywordToken.value) {\n        case 'query':\n        case 'mutation':\n        case 'subscription':\n          return this.parseOperationDefinition();\n\n        case 'fragment':\n          return this.parseFragmentDefinition();\n\n        case 'extend':\n          return this.parseTypeSystemExtension();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  } // Implements the parsing rules in the Operations section.\n\n  /**\n   * OperationDefinition :\n   *  - SelectionSet\n   *  - OperationType Name? VariableDefinitions? Directives? SelectionSet\n   */\n\n  parseOperationDefinition() {\n    const start = this._lexer.token;\n\n    if (this.peek(TokenKind.BRACE_L)) {\n      return this.node(start, {\n        kind: Kind.OPERATION_DEFINITION,\n        operation: OperationTypeNode.QUERY,\n        name: undefined,\n        variableDefinitions: [],\n        directives: [],\n        selectionSet: this.parseSelectionSet(),\n      });\n    }\n\n    const operation = this.parseOperationType();\n    let name;\n\n    if (this.peek(TokenKind.NAME)) {\n      name = this.parseName();\n    }\n\n    return this.node(start, {\n      kind: Kind.OPERATION_DEFINITION,\n      operation,\n      name,\n      variableDefinitions: this.parseVariableDefinitions(),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * OperationType : one of query mutation subscription\n   */\n\n  parseOperationType() {\n    const operationToken = this.expectToken(TokenKind.NAME);\n\n    switch (operationToken.value) {\n      case 'query':\n        return OperationTypeNode.QUERY;\n\n      case 'mutation':\n        return OperationTypeNode.MUTATION;\n\n      case 'subscription':\n        return OperationTypeNode.SUBSCRIPTION;\n    }\n\n    throw this.unexpected(operationToken);\n  }\n  /**\n   * VariableDefinitions : ( VariableDefinition+ )\n   */\n\n  parseVariableDefinitions() {\n    return this.optionalMany(\n      TokenKind.PAREN_L,\n      this.parseVariableDefinition,\n      TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n   */\n\n  parseVariableDefinition() {\n    return this.node(this._lexer.token, {\n      kind: Kind.VARIABLE_DEFINITION,\n      variable: this.parseVariable(),\n      type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n      defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n        ? this.parseConstValueLiteral()\n        : undefined,\n      directives: this.parseConstDirectives(),\n    });\n  }\n  /**\n   * Variable : $ Name\n   */\n\n  parseVariable() {\n    const start = this._lexer.token;\n    this.expectToken(TokenKind.DOLLAR);\n    return this.node(start, {\n      kind: Kind.VARIABLE,\n      name: this.parseName(),\n    });\n  }\n  /**\n   * ```\n   * SelectionSet : { Selection+ }\n   * ```\n   */\n\n  parseSelectionSet() {\n    return this.node(this._lexer.token, {\n      kind: Kind.SELECTION_SET,\n      selections: this.many(\n        TokenKind.BRACE_L,\n        this.parseSelection,\n        TokenKind.BRACE_R,\n      ),\n    });\n  }\n  /**\n   * Selection :\n   *   - Field\n   *   - FragmentSpread\n   *   - InlineFragment\n   */\n\n  parseSelection() {\n    return this.peek(TokenKind.SPREAD)\n      ? this.parseFragment()\n      : this.parseField();\n  }\n  /**\n   * Field : Alias? Name Arguments? Directives? SelectionSet?\n   *\n   * Alias : Name :\n   */\n\n  parseField() {\n    const start = this._lexer.token;\n    const nameOrAlias = this.parseName();\n    let alias;\n    let name;\n\n    if (this.expectOptionalToken(TokenKind.COLON)) {\n      alias = nameOrAlias;\n      name = this.parseName();\n    } else {\n      name = nameOrAlias;\n    }\n\n    return this.node(start, {\n      kind: Kind.FIELD,\n      alias,\n      name,\n      arguments: this.parseArguments(false),\n      directives: this.parseDirectives(false),\n      selectionSet: this.peek(TokenKind.BRACE_L)\n        ? this.parseSelectionSet()\n        : undefined,\n    });\n  }\n  /**\n   * Arguments[Const] : ( Argument[?Const]+ )\n   */\n\n  parseArguments(isConst) {\n    const item = isConst ? this.parseConstArgument : this.parseArgument;\n    return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n  }\n  /**\n   * Argument[Const] : Name : Value[?Const]\n   */\n\n  parseArgument(isConst = false) {\n    const start = this._lexer.token;\n    const name = this.parseName();\n    this.expectToken(TokenKind.COLON);\n    return this.node(start, {\n      kind: Kind.ARGUMENT,\n      name,\n      value: this.parseValueLiteral(isConst),\n    });\n  }\n\n  parseConstArgument() {\n    return this.parseArgument(true);\n  } // Implements the parsing rules in the Fragments section.\n\n  /**\n   * Corresponds to both FragmentSpread and InlineFragment in the spec.\n   *\n   * FragmentSpread : ... FragmentName Directives?\n   *\n   * InlineFragment : ... TypeCondition? Directives? SelectionSet\n   */\n\n  parseFragment() {\n    const start = this._lexer.token;\n    this.expectToken(TokenKind.SPREAD);\n    const hasTypeCondition = this.expectOptionalKeyword('on');\n\n    if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n      return this.node(start, {\n        kind: Kind.FRAGMENT_SPREAD,\n        name: this.parseFragmentName(),\n        directives: this.parseDirectives(false),\n      });\n    }\n\n    return this.node(start, {\n      kind: Kind.INLINE_FRAGMENT,\n      typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * FragmentDefinition :\n   *   - fragment FragmentName on TypeCondition Directives? SelectionSet\n   *\n   * TypeCondition : NamedType\n   */\n\n  parseFragmentDefinition() {\n    const start = this._lexer.token;\n    this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n    // the grammar of FragmentDefinition:\n    //   - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n    if (this._options.allowLegacyFragmentVariables === true) {\n      return this.node(start, {\n        kind: Kind.FRAGMENT_DEFINITION,\n        name: this.parseFragmentName(),\n        variableDefinitions: this.parseVariableDefinitions(),\n        typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n        directives: this.parseDirectives(false),\n        selectionSet: this.parseSelectionSet(),\n      });\n    }\n\n    return this.node(start, {\n      kind: Kind.FRAGMENT_DEFINITION,\n      name: this.parseFragmentName(),\n      typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * FragmentName : Name but not `on`\n   */\n\n  parseFragmentName() {\n    if (this._lexer.token.value === 'on') {\n      throw this.unexpected();\n    }\n\n    return this.parseName();\n  } // Implements the parsing rules in the Values section.\n\n  /**\n   * Value[Const] :\n   *   - [~Const] Variable\n   *   - IntValue\n   *   - FloatValue\n   *   - StringValue\n   *   - BooleanValue\n   *   - NullValue\n   *   - EnumValue\n   *   - ListValue[?Const]\n   *   - ObjectValue[?Const]\n   *\n   * BooleanValue : one of `true` `false`\n   *\n   * NullValue : `null`\n   *\n   * EnumValue : Name but not `true`, `false` or `null`\n   */\n\n  parseValueLiteral(isConst) {\n    const token = this._lexer.token;\n\n    switch (token.kind) {\n      case TokenKind.BRACKET_L:\n        return this.parseList(isConst);\n\n      case TokenKind.BRACE_L:\n        return this.parseObject(isConst);\n\n      case TokenKind.INT:\n        this.advanceLexer();\n        return this.node(token, {\n          kind: Kind.INT,\n          value: token.value,\n        });\n\n      case TokenKind.FLOAT:\n        this.advanceLexer();\n        return this.node(token, {\n          kind: Kind.FLOAT,\n          value: token.value,\n        });\n\n      case TokenKind.STRING:\n      case TokenKind.BLOCK_STRING:\n        return this.parseStringLiteral();\n\n      case TokenKind.NAME:\n        this.advanceLexer();\n\n        switch (token.value) {\n          case 'true':\n            return this.node(token, {\n              kind: Kind.BOOLEAN,\n              value: true,\n            });\n\n          case 'false':\n            return this.node(token, {\n              kind: Kind.BOOLEAN,\n              value: false,\n            });\n\n          case 'null':\n            return this.node(token, {\n              kind: Kind.NULL,\n            });\n\n          default:\n            return this.node(token, {\n              kind: Kind.ENUM,\n              value: token.value,\n            });\n        }\n\n      case TokenKind.DOLLAR:\n        if (isConst) {\n          this.expectToken(TokenKind.DOLLAR);\n\n          if (this._lexer.token.kind === TokenKind.NAME) {\n            const varName = this._lexer.token.value;\n            throw syntaxError(\n              this._lexer.source,\n              token.start,\n              `Unexpected variable \"$${varName}\" in constant value.`,\n            );\n          } else {\n            throw this.unexpected(token);\n          }\n        }\n\n        return this.parseVariable();\n\n      default:\n        throw this.unexpected();\n    }\n  }\n\n  parseConstValueLiteral() {\n    return this.parseValueLiteral(true);\n  }\n\n  parseStringLiteral() {\n    const token = this._lexer.token;\n    this.advanceLexer();\n    return this.node(token, {\n      kind: Kind.STRING,\n      value: token.value,\n      block: token.kind === TokenKind.BLOCK_STRING,\n    });\n  }\n  /**\n   * ListValue[Const] :\n   *   - [ ]\n   *   - [ Value[?Const]+ ]\n   */\n\n  parseList(isConst) {\n    const item = () => this.parseValueLiteral(isConst);\n\n    return this.node(this._lexer.token, {\n      kind: Kind.LIST,\n      values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n    });\n  }\n  /**\n   * ```\n   * ObjectValue[Const] :\n   *   - { }\n   *   - { ObjectField[?Const]+ }\n   * ```\n   */\n\n  parseObject(isConst) {\n    const item = () => this.parseObjectField(isConst);\n\n    return this.node(this._lexer.token, {\n      kind: Kind.OBJECT,\n      fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n    });\n  }\n  /**\n   * ObjectField[Const] : Name : Value[?Const]\n   */\n\n  parseObjectField(isConst) {\n    const start = this._lexer.token;\n    const name = this.parseName();\n    this.expectToken(TokenKind.COLON);\n    return this.node(start, {\n      kind: Kind.OBJECT_FIELD,\n      name,\n      value: this.parseValueLiteral(isConst),\n    });\n  } // Implements the parsing rules in the Directives section.\n\n  /**\n   * Directives[Const] : Directive[?Const]+\n   */\n\n  parseDirectives(isConst) {\n    const directives = [];\n\n    while (this.peek(TokenKind.AT)) {\n      directives.push(this.parseDirective(isConst));\n    }\n\n    return directives;\n  }\n\n  parseConstDirectives() {\n    return this.parseDirectives(true);\n  }\n  /**\n   * ```\n   * Directive[Const] : @ Name Arguments[?Const]?\n   * ```\n   */\n\n  parseDirective(isConst) {\n    const start = this._lexer.token;\n    this.expectToken(TokenKind.AT);\n    return this.node(start, {\n      kind: Kind.DIRECTIVE,\n      name: this.parseName(),\n      arguments: this.parseArguments(isConst),\n    });\n  } // Implements the parsing rules in the Types section.\n\n  /**\n   * Type :\n   *   - NamedType\n   *   - ListType\n   *   - NonNullType\n   */\n\n  parseTypeReference() {\n    const start = this._lexer.token;\n    let type;\n\n    if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n      const innerType = this.parseTypeReference();\n      this.expectToken(TokenKind.BRACKET_R);\n      type = this.node(start, {\n        kind: Kind.LIST_TYPE,\n        type: innerType,\n      });\n    } else {\n      type = this.parseNamedType();\n    }\n\n    if (this.expectOptionalToken(TokenKind.BANG)) {\n      return this.node(start, {\n        kind: Kind.NON_NULL_TYPE,\n        type,\n      });\n    }\n\n    return type;\n  }\n  /**\n   * NamedType : Name\n   */\n\n  parseNamedType() {\n    return this.node(this._lexer.token, {\n      kind: Kind.NAMED_TYPE,\n      name: this.parseName(),\n    });\n  } // Implements the parsing rules in the Type Definition section.\n\n  peekDescription() {\n    return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n  }\n  /**\n   * Description : StringValue\n   */\n\n  parseDescription() {\n    if (this.peekDescription()) {\n      return this.parseStringLiteral();\n    }\n  }\n  /**\n   * ```\n   * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n   * ```\n   */\n\n  parseSchemaDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('schema');\n    const directives = this.parseConstDirectives();\n    const operationTypes = this.many(\n      TokenKind.BRACE_L,\n      this.parseOperationTypeDefinition,\n      TokenKind.BRACE_R,\n    );\n    return this.node(start, {\n      kind: Kind.SCHEMA_DEFINITION,\n      description,\n      directives,\n      operationTypes,\n    });\n  }\n  /**\n   * OperationTypeDefinition : OperationType : NamedType\n   */\n\n  parseOperationTypeDefinition() {\n    const start = this._lexer.token;\n    const operation = this.parseOperationType();\n    this.expectToken(TokenKind.COLON);\n    const type = this.parseNamedType();\n    return this.node(start, {\n      kind: Kind.OPERATION_TYPE_DEFINITION,\n      operation,\n      type,\n    });\n  }\n  /**\n   * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n   */\n\n  parseScalarTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('scalar');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: Kind.SCALAR_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n    });\n  }\n  /**\n   * ObjectTypeDefinition :\n   *   Description?\n   *   type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n   */\n\n  parseObjectTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('type');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n    return this.node(start, {\n      kind: Kind.OBJECT_TYPE_DEFINITION,\n      description,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ImplementsInterfaces :\n   *   - implements `&`? NamedType\n   *   - ImplementsInterfaces & NamedType\n   */\n\n  parseImplementsInterfaces() {\n    return this.expectOptionalKeyword('implements')\n      ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n      : [];\n  }\n  /**\n   * ```\n   * FieldsDefinition : { FieldDefinition+ }\n   * ```\n   */\n\n  parseFieldsDefinition() {\n    return this.optionalMany(\n      TokenKind.BRACE_L,\n      this.parseFieldDefinition,\n      TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * FieldDefinition :\n   *   - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n   */\n\n  parseFieldDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseName();\n    const args = this.parseArgumentDefs();\n    this.expectToken(TokenKind.COLON);\n    const type = this.parseTypeReference();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: Kind.FIELD_DEFINITION,\n      description,\n      name,\n      arguments: args,\n      type,\n      directives,\n    });\n  }\n  /**\n   * ArgumentsDefinition : ( InputValueDefinition+ )\n   */\n\n  parseArgumentDefs() {\n    return this.optionalMany(\n      TokenKind.PAREN_L,\n      this.parseInputValueDef,\n      TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * InputValueDefinition :\n   *   - Description? Name : Type DefaultValue? Directives[Const]?\n   */\n\n  parseInputValueDef() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseName();\n    this.expectToken(TokenKind.COLON);\n    const type = this.parseTypeReference();\n    let defaultValue;\n\n    if (this.expectOptionalToken(TokenKind.EQUALS)) {\n      defaultValue = this.parseConstValueLiteral();\n    }\n\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: Kind.INPUT_VALUE_DEFINITION,\n      description,\n      name,\n      type,\n      defaultValue,\n      directives,\n    });\n  }\n  /**\n   * InterfaceTypeDefinition :\n   *   - Description? interface Name Directives[Const]? FieldsDefinition?\n   */\n\n  parseInterfaceTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('interface');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n    return this.node(start, {\n      kind: Kind.INTERFACE_TYPE_DEFINITION,\n      description,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * UnionTypeDefinition :\n   *   - Description? union Name Directives[Const]? UnionMemberTypes?\n   */\n\n  parseUnionTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('union');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const types = this.parseUnionMemberTypes();\n    return this.node(start, {\n      kind: Kind.UNION_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      types,\n    });\n  }\n  /**\n   * UnionMemberTypes :\n   *   - = `|`? NamedType\n   *   - UnionMemberTypes | NamedType\n   */\n\n  parseUnionMemberTypes() {\n    return this.expectOptionalToken(TokenKind.EQUALS)\n      ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n      : [];\n  }\n  /**\n   * EnumTypeDefinition :\n   *   - Description? enum Name Directives[Const]? EnumValuesDefinition?\n   */\n\n  parseEnumTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('enum');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const values = this.parseEnumValuesDefinition();\n    return this.node(start, {\n      kind: Kind.ENUM_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      values,\n    });\n  }\n  /**\n   * ```\n   * EnumValuesDefinition : { EnumValueDefinition+ }\n   * ```\n   */\n\n  parseEnumValuesDefinition() {\n    return this.optionalMany(\n      TokenKind.BRACE_L,\n      this.parseEnumValueDefinition,\n      TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * EnumValueDefinition : Description? EnumValue Directives[Const]?\n   */\n\n  parseEnumValueDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseEnumValueName();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: Kind.ENUM_VALUE_DEFINITION,\n      description,\n      name,\n      directives,\n    });\n  }\n  /**\n   * EnumValue : Name but not `true`, `false` or `null`\n   */\n\n  parseEnumValueName() {\n    if (\n      this._lexer.token.value === 'true' ||\n      this._lexer.token.value === 'false' ||\n      this._lexer.token.value === 'null'\n    ) {\n      throw syntaxError(\n        this._lexer.source,\n        this._lexer.token.start,\n        `${getTokenDesc(\n          this._lexer.token,\n        )} is reserved and cannot be used for an enum value.`,\n      );\n    }\n\n    return this.parseName();\n  }\n  /**\n   * InputObjectTypeDefinition :\n   *   - Description? input Name Directives[Const]? InputFieldsDefinition?\n   */\n\n  parseInputObjectTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('input');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseInputFieldsDefinition();\n    return this.node(start, {\n      kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ```\n   * InputFieldsDefinition : { InputValueDefinition+ }\n   * ```\n   */\n\n  parseInputFieldsDefinition() {\n    return this.optionalMany(\n      TokenKind.BRACE_L,\n      this.parseInputValueDef,\n      TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * TypeSystemExtension :\n   *   - SchemaExtension\n   *   - TypeExtension\n   *\n   * TypeExtension :\n   *   - ScalarTypeExtension\n   *   - ObjectTypeExtension\n   *   - InterfaceTypeExtension\n   *   - UnionTypeExtension\n   *   - EnumTypeExtension\n   *   - InputObjectTypeDefinition\n   */\n\n  parseTypeSystemExtension() {\n    const keywordToken = this._lexer.lookahead();\n\n    if (keywordToken.kind === TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaExtension();\n\n        case 'scalar':\n          return this.parseScalarTypeExtension();\n\n        case 'type':\n          return this.parseObjectTypeExtension();\n\n        case 'interface':\n          return this.parseInterfaceTypeExtension();\n\n        case 'union':\n          return this.parseUnionTypeExtension();\n\n        case 'enum':\n          return this.parseEnumTypeExtension();\n\n        case 'input':\n          return this.parseInputObjectTypeExtension();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  }\n  /**\n   * ```\n   * SchemaExtension :\n   *  - extend schema Directives[Const]? { OperationTypeDefinition+ }\n   *  - extend schema Directives[Const]\n   * ```\n   */\n\n  parseSchemaExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('schema');\n    const directives = this.parseConstDirectives();\n    const operationTypes = this.optionalMany(\n      TokenKind.BRACE_L,\n      this.parseOperationTypeDefinition,\n      TokenKind.BRACE_R,\n    );\n\n    if (directives.length === 0 && operationTypes.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: Kind.SCHEMA_EXTENSION,\n      directives,\n      operationTypes,\n    });\n  }\n  /**\n   * ScalarTypeExtension :\n   *   - extend scalar Name Directives[Const]\n   */\n\n  parseScalarTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('scalar');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n\n    if (directives.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: Kind.SCALAR_TYPE_EXTENSION,\n      name,\n      directives,\n    });\n  }\n  /**\n   * ObjectTypeExtension :\n   *  - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend type Name ImplementsInterfaces? Directives[Const]\n   *  - extend type Name ImplementsInterfaces\n   */\n\n  parseObjectTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('type');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n\n    if (\n      interfaces.length === 0 &&\n      directives.length === 0 &&\n      fields.length === 0\n    ) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: Kind.OBJECT_TYPE_EXTENSION,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * InterfaceTypeExtension :\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]\n   *  - extend interface Name ImplementsInterfaces\n   */\n\n  parseInterfaceTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('interface');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n\n    if (\n      interfaces.length === 0 &&\n      directives.length === 0 &&\n      fields.length === 0\n    ) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: Kind.INTERFACE_TYPE_EXTENSION,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * UnionTypeExtension :\n   *   - extend union Name Directives[Const]? UnionMemberTypes\n   *   - extend union Name Directives[Const]\n   */\n\n  parseUnionTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('union');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const types = this.parseUnionMemberTypes();\n\n    if (directives.length === 0 && types.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: Kind.UNION_TYPE_EXTENSION,\n      name,\n      directives,\n      types,\n    });\n  }\n  /**\n   * EnumTypeExtension :\n   *   - extend enum Name Directives[Const]? EnumValuesDefinition\n   *   - extend enum Name Directives[Const]\n   */\n\n  parseEnumTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('enum');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const values = this.parseEnumValuesDefinition();\n\n    if (directives.length === 0 && values.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: Kind.ENUM_TYPE_EXTENSION,\n      name,\n      directives,\n      values,\n    });\n  }\n  /**\n   * InputObjectTypeExtension :\n   *   - extend input Name Directives[Const]? InputFieldsDefinition\n   *   - extend input Name Directives[Const]\n   */\n\n  parseInputObjectTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('input');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseInputFieldsDefinition();\n\n    if (directives.length === 0 && fields.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n      name,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ```\n   * DirectiveDefinition :\n   *   - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n   * ```\n   */\n\n  parseDirectiveDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('directive');\n    this.expectToken(TokenKind.AT);\n    const name = this.parseName();\n    const args = this.parseArgumentDefs();\n    const repeatable = this.expectOptionalKeyword('repeatable');\n    this.expectKeyword('on');\n    const locations = this.parseDirectiveLocations();\n    return this.node(start, {\n      kind: Kind.DIRECTIVE_DEFINITION,\n      description,\n      name,\n      arguments: args,\n      repeatable,\n      locations,\n    });\n  }\n  /**\n   * DirectiveLocations :\n   *   - `|`? DirectiveLocation\n   *   - DirectiveLocations | DirectiveLocation\n   */\n\n  parseDirectiveLocations() {\n    return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n  }\n  /*\n   * DirectiveLocation :\n   *   - ExecutableDirectiveLocation\n   *   - TypeSystemDirectiveLocation\n   *\n   * ExecutableDirectiveLocation : one of\n   *   `QUERY`\n   *   `MUTATION`\n   *   `SUBSCRIPTION`\n   *   `FIELD`\n   *   `FRAGMENT_DEFINITION`\n   *   `FRAGMENT_SPREAD`\n   *   `INLINE_FRAGMENT`\n   *\n   * TypeSystemDirectiveLocation : one of\n   *   `SCHEMA`\n   *   `SCALAR`\n   *   `OBJECT`\n   *   `FIELD_DEFINITION`\n   *   `ARGUMENT_DEFINITION`\n   *   `INTERFACE`\n   *   `UNION`\n   *   `ENUM`\n   *   `ENUM_VALUE`\n   *   `INPUT_OBJECT`\n   *   `INPUT_FIELD_DEFINITION`\n   */\n\n  parseDirectiveLocation() {\n    const start = this._lexer.token;\n    const name = this.parseName();\n\n    if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) {\n      return name;\n    }\n\n    throw this.unexpected(start);\n  } // Core parsing utility functions\n\n  /**\n   * Returns a node that, if configured to do so, sets a \"loc\" field as a\n   * location object, used to identify the place in the source that created a\n   * given parsed object.\n   */\n\n  node(startToken, node) {\n    if (this._options.noLocation !== true) {\n      node.loc = new Location(\n        startToken,\n        this._lexer.lastToken,\n        this._lexer.source,\n      );\n    }\n\n    return node;\n  }\n  /**\n   * Determines if the next token is of a given kind\n   */\n\n  peek(kind) {\n    return this._lexer.token.kind === kind;\n  }\n  /**\n   * If the next token is of the given kind, return that token after advancing the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n\n  expectToken(kind) {\n    const token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this.advanceLexer();\n      return token;\n    }\n\n    throw syntaxError(\n      this._lexer.source,\n      token.start,\n      `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n    );\n  }\n  /**\n   * If the next token is of the given kind, return \"true\" after advancing the lexer.\n   * Otherwise, do not change the parser state and return \"false\".\n   */\n\n  expectOptionalToken(kind) {\n    const token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this.advanceLexer();\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * If the next token is a given keyword, advance the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n\n  expectKeyword(value) {\n    const token = this._lexer.token;\n\n    if (token.kind === TokenKind.NAME && token.value === value) {\n      this.advanceLexer();\n    } else {\n      throw syntaxError(\n        this._lexer.source,\n        token.start,\n        `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n      );\n    }\n  }\n  /**\n   * If the next token is a given keyword, return \"true\" after advancing the lexer.\n   * Otherwise, do not change the parser state and return \"false\".\n   */\n\n  expectOptionalKeyword(value) {\n    const token = this._lexer.token;\n\n    if (token.kind === TokenKind.NAME && token.value === value) {\n      this.advanceLexer();\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * Helper function for creating an error when an unexpected lexed token is encountered.\n   */\n\n  unexpected(atToken) {\n    const token =\n      atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n    return syntaxError(\n      this._lexer.source,\n      token.start,\n      `Unexpected ${getTokenDesc(token)}.`,\n    );\n  }\n  /**\n   * Returns a possibly empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  any(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    const nodes = [];\n\n    while (!this.expectOptionalToken(closeKind)) {\n      nodes.push(parseFn.call(this));\n    }\n\n    return nodes;\n  }\n  /**\n   * Returns a list of parse nodes, determined by the parseFn.\n   * It can be empty only if open token is missing otherwise it will always return non-empty list\n   * that begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  optionalMany(openKind, parseFn, closeKind) {\n    if (this.expectOptionalToken(openKind)) {\n      const nodes = [];\n\n      do {\n        nodes.push(parseFn.call(this));\n      } while (!this.expectOptionalToken(closeKind));\n\n      return nodes;\n    }\n\n    return [];\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  many(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    const nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (!this.expectOptionalToken(closeKind));\n\n    return nodes;\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n   * Advances the parser to the next lex token after last item in the list.\n   */\n\n  delimitedMany(delimiterKind, parseFn) {\n    this.expectOptionalToken(delimiterKind);\n    const nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (this.expectOptionalToken(delimiterKind));\n\n    return nodes;\n  }\n\n  advanceLexer() {\n    const { maxTokens } = this._options;\n\n    const token = this._lexer.advance();\n\n    if (token.kind !== TokenKind.EOF) {\n      ++this._tokenCounter;\n\n      if (maxTokens !== undefined && this._tokenCounter > maxTokens) {\n        throw syntaxError(\n          this._lexer.source,\n          token.start,\n          `Document contains more that ${maxTokens} tokens. Parsing aborted.`,\n        );\n      }\n    }\n  }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n  const value = token.value;\n  return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n  return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n","/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nexport function printString(str) {\n  return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n  return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n  '\\\\u0000',\n  '\\\\u0001',\n  '\\\\u0002',\n  '\\\\u0003',\n  '\\\\u0004',\n  '\\\\u0005',\n  '\\\\u0006',\n  '\\\\u0007',\n  '\\\\b',\n  '\\\\t',\n  '\\\\n',\n  '\\\\u000B',\n  '\\\\f',\n  '\\\\r',\n  '\\\\u000E',\n  '\\\\u000F',\n  '\\\\u0010',\n  '\\\\u0011',\n  '\\\\u0012',\n  '\\\\u0013',\n  '\\\\u0014',\n  '\\\\u0015',\n  '\\\\u0016',\n  '\\\\u0017',\n  '\\\\u0018',\n  '\\\\u0019',\n  '\\\\u001A',\n  '\\\\u001B',\n  '\\\\u001C',\n  '\\\\u001D',\n  '\\\\u001E',\n  '\\\\u001F',\n  '',\n  '',\n  '\\\\\"',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 2F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 3F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 4F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '\\\\\\\\',\n  '',\n  '',\n  '', // 5F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 6F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '\\\\u007F',\n  '\\\\u0080',\n  '\\\\u0081',\n  '\\\\u0082',\n  '\\\\u0083',\n  '\\\\u0084',\n  '\\\\u0085',\n  '\\\\u0086',\n  '\\\\u0087',\n  '\\\\u0088',\n  '\\\\u0089',\n  '\\\\u008A',\n  '\\\\u008B',\n  '\\\\u008C',\n  '\\\\u008D',\n  '\\\\u008E',\n  '\\\\u008F',\n  '\\\\u0090',\n  '\\\\u0091',\n  '\\\\u0092',\n  '\\\\u0093',\n  '\\\\u0094',\n  '\\\\u0095',\n  '\\\\u0096',\n  '\\\\u0097',\n  '\\\\u0098',\n  '\\\\u0099',\n  '\\\\u009A',\n  '\\\\u009B',\n  '\\\\u009C',\n  '\\\\u009D',\n  '\\\\u009E',\n  '\\\\u009F',\n];\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { isNode, QueryDocumentKeys } from './ast.mjs';\nimport { Kind } from './kinds.mjs';\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport const BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n *   enter(node, key, parent, path, ancestors) {\n *     // @return\n *     //   undefined: no action\n *     //   false: skip visiting this node\n *     //   visitor.BREAK: stop visiting altogether\n *     //   null: delete this node\n *     //   any value: replace this node with the returned value\n *   },\n *   leave(node, key, parent, path, ancestors) {\n *     // @return\n *     //   undefined: no action\n *     //   false: no action\n *     //   visitor.BREAK: stop visiting altogether\n *     //   null: delete this node\n *     //   any value: replace this node with the returned value\n *   }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n *   Kind(node) {\n *     // enter the \"Kind\" node\n *   }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n *   Kind: {\n *     enter(node) {\n *       // enter the \"Kind\" node\n *     }\n *     leave(node) {\n *       // leave the \"Kind\" node\n *     }\n *   }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n *   enter(node) {\n *     // enter any node\n *   },\n *   leave(node) {\n *     // leave any node\n *   }\n * })\n * ```\n */\n\nexport function visit(root, visitor, visitorKeys = QueryDocumentKeys) {\n  const enterLeaveMap = new Map();\n\n  for (const kind of Object.values(Kind)) {\n    enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n  }\n  /* eslint-disable no-undef-init */\n\n  let stack = undefined;\n  let inArray = Array.isArray(root);\n  let keys = [root];\n  let index = -1;\n  let edits = [];\n  let node = root;\n  let key = undefined;\n  let parent = undefined;\n  const path = [];\n  const ancestors = [];\n  /* eslint-enable no-undef-init */\n\n  do {\n    index++;\n    const isLeaving = index === keys.length;\n    const isEdited = isLeaving && edits.length !== 0;\n\n    if (isLeaving) {\n      key = ancestors.length === 0 ? undefined : path[path.length - 1];\n      node = parent;\n      parent = ancestors.pop();\n\n      if (isEdited) {\n        if (inArray) {\n          node = node.slice();\n          let editOffset = 0;\n\n          for (const [editKey, editValue] of edits) {\n            const arrayKey = editKey - editOffset;\n\n            if (editValue === null) {\n              node.splice(arrayKey, 1);\n              editOffset++;\n            } else {\n              node[arrayKey] = editValue;\n            }\n          }\n        } else {\n          node = Object.defineProperties(\n            {},\n            Object.getOwnPropertyDescriptors(node),\n          );\n\n          for (const [editKey, editValue] of edits) {\n            node[editKey] = editValue;\n          }\n        }\n      }\n\n      index = stack.index;\n      keys = stack.keys;\n      edits = stack.edits;\n      inArray = stack.inArray;\n      stack = stack.prev;\n    } else if (parent) {\n      key = inArray ? index : keys[index];\n      node = parent[key];\n\n      if (node === null || node === undefined) {\n        continue;\n      }\n\n      path.push(key);\n    }\n\n    let result;\n\n    if (!Array.isArray(node)) {\n      var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n      isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`);\n      const visitFn = isLeaving\n        ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n          _enterLeaveMap$get === void 0\n          ? void 0\n          : _enterLeaveMap$get.leave\n        : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n          _enterLeaveMap$get2 === void 0\n        ? void 0\n        : _enterLeaveMap$get2.enter;\n      result =\n        visitFn === null || visitFn === void 0\n          ? void 0\n          : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n      if (result === BREAK) {\n        break;\n      }\n\n      if (result === false) {\n        if (!isLeaving) {\n          path.pop();\n          continue;\n        }\n      } else if (result !== undefined) {\n        edits.push([key, result]);\n\n        if (!isLeaving) {\n          if (isNode(result)) {\n            node = result;\n          } else {\n            path.pop();\n            continue;\n          }\n        }\n      }\n    }\n\n    if (result === undefined && isEdited) {\n      edits.push([key, node]);\n    }\n\n    if (isLeaving) {\n      path.pop();\n    } else {\n      var _node$kind;\n\n      stack = {\n        inArray,\n        index,\n        keys,\n        edits,\n        prev: stack,\n      };\n      inArray = Array.isArray(node);\n      keys = inArray\n        ? node\n        : (_node$kind = visitorKeys[node.kind]) !== null &&\n          _node$kind !== void 0\n        ? _node$kind\n        : [];\n      index = -1;\n      edits = [];\n\n      if (parent) {\n        ancestors.push(parent);\n      }\n\n      parent = node;\n    }\n  } while (stack !== undefined);\n\n  if (edits.length !== 0) {\n    // New root\n    return edits[edits.length - 1][1];\n  }\n\n  return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n  const skipping = new Array(visitors.length).fill(null);\n  const mergedVisitor = Object.create(null);\n\n  for (const kind of Object.values(Kind)) {\n    let hasVisitor = false;\n    const enterList = new Array(visitors.length).fill(undefined);\n    const leaveList = new Array(visitors.length).fill(undefined);\n\n    for (let i = 0; i < visitors.length; ++i) {\n      const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n      hasVisitor || (hasVisitor = enter != null || leave != null);\n      enterList[i] = enter;\n      leaveList[i] = leave;\n    }\n\n    if (!hasVisitor) {\n      continue;\n    }\n\n    const mergedEnterLeave = {\n      enter(...args) {\n        const node = args[0];\n\n        for (let i = 0; i < visitors.length; i++) {\n          if (skipping[i] === null) {\n            var _enterList$i;\n\n            const result =\n              (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n                ? void 0\n                : _enterList$i.apply(visitors[i], args);\n\n            if (result === false) {\n              skipping[i] = node;\n            } else if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined) {\n              return result;\n            }\n          }\n        }\n      },\n\n      leave(...args) {\n        const node = args[0];\n\n        for (let i = 0; i < visitors.length; i++) {\n          if (skipping[i] === null) {\n            var _leaveList$i;\n\n            const result =\n              (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n                ? void 0\n                : _leaveList$i.apply(visitors[i], args);\n\n            if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined && result !== false) {\n              return result;\n            }\n          } else if (skipping[i] === node) {\n            skipping[i] = null;\n          }\n        }\n      },\n    };\n    mergedVisitor[kind] = mergedEnterLeave;\n  }\n\n  return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nexport function getEnterLeaveForKind(visitor, kind) {\n  const kindVisitor = visitor[kind];\n\n  if (typeof kindVisitor === 'object') {\n    // { Kind: { enter() {}, leave() {} } }\n    return kindVisitor;\n  } else if (typeof kindVisitor === 'function') {\n    // { Kind() {} }\n    return {\n      enter: kindVisitor,\n      leave: undefined,\n    };\n  } // { enter() {}, leave() {} }\n\n  return {\n    enter: visitor.enter,\n    leave: visitor.leave,\n  };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n  const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n  return isLeaving ? leave : enter;\n}\n","import { printBlockString } from './blockString.mjs';\nimport { printString } from './printString.mjs';\nimport { visit } from './visitor.mjs';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n  return visit(ast, printDocASTReducer);\n}\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n  Name: {\n    leave: (node) => node.value,\n  },\n  Variable: {\n    leave: (node) => '$' + node.name,\n  },\n  // Document\n  Document: {\n    leave: (node) => join(node.definitions, '\\n\\n'),\n  },\n  OperationDefinition: {\n    leave(node) {\n      const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n      const prefix = join(\n        [\n          node.operation,\n          join([node.name, varDefs]),\n          join(node.directives, ' '),\n        ],\n        ' ',\n      ); // Anonymous queries with no directives or variable definitions can use\n      // the query short form.\n\n      return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n    },\n  },\n  VariableDefinition: {\n    leave: ({ variable, type, defaultValue, directives }) =>\n      variable +\n      ': ' +\n      type +\n      wrap(' = ', defaultValue) +\n      wrap(' ', join(directives, ' ')),\n  },\n  SelectionSet: {\n    leave: ({ selections }) => block(selections),\n  },\n  Field: {\n    leave({ alias, name, arguments: args, directives, selectionSet }) {\n      const prefix = wrap('', alias, ': ') + name;\n      let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n      if (argsLine.length > MAX_LINE_LENGTH) {\n        argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n      }\n\n      return join([argsLine, join(directives, ' '), selectionSet], ' ');\n    },\n  },\n  Argument: {\n    leave: ({ name, value }) => name + ': ' + value,\n  },\n  // Fragments\n  FragmentSpread: {\n    leave: ({ name, directives }) =>\n      '...' + name + wrap(' ', join(directives, ' ')),\n  },\n  InlineFragment: {\n    leave: ({ typeCondition, directives, selectionSet }) =>\n      join(\n        [\n          '...',\n          wrap('on ', typeCondition),\n          join(directives, ' '),\n          selectionSet,\n        ],\n        ' ',\n      ),\n  },\n  FragmentDefinition: {\n    leave: (\n      { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n    ) =>\n      // or removed in the future.\n      `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n      `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n      selectionSet,\n  },\n  // Value\n  IntValue: {\n    leave: ({ value }) => value,\n  },\n  FloatValue: {\n    leave: ({ value }) => value,\n  },\n  StringValue: {\n    leave: ({ value, block: isBlockString }) =>\n      isBlockString ? printBlockString(value) : printString(value),\n  },\n  BooleanValue: {\n    leave: ({ value }) => (value ? 'true' : 'false'),\n  },\n  NullValue: {\n    leave: () => 'null',\n  },\n  EnumValue: {\n    leave: ({ value }) => value,\n  },\n  ListValue: {\n    leave: ({ values }) => '[' + join(values, ', ') + ']',\n  },\n  ObjectValue: {\n    leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n  },\n  ObjectField: {\n    leave: ({ name, value }) => name + ': ' + value,\n  },\n  // Directive\n  Directive: {\n    leave: ({ name, arguments: args }) =>\n      '@' + name + wrap('(', join(args, ', '), ')'),\n  },\n  // Type\n  NamedType: {\n    leave: ({ name }) => name,\n  },\n  ListType: {\n    leave: ({ type }) => '[' + type + ']',\n  },\n  NonNullType: {\n    leave: ({ type }) => type + '!',\n  },\n  // Type System Definitions\n  SchemaDefinition: {\n    leave: ({ description, directives, operationTypes }) =>\n      wrap('', description, '\\n') +\n      join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n  },\n  OperationTypeDefinition: {\n    leave: ({ operation, type }) => operation + ': ' + type,\n  },\n  ScalarTypeDefinition: {\n    leave: ({ description, name, directives }) =>\n      wrap('', description, '\\n') +\n      join(['scalar', name, join(directives, ' ')], ' '),\n  },\n  ObjectTypeDefinition: {\n    leave: ({ description, name, interfaces, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(\n        [\n          'type',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  FieldDefinition: {\n    leave: ({ description, name, arguments: args, type, directives }) =>\n      wrap('', description, '\\n') +\n      name +\n      (hasMultilineItems(args)\n        ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n        : wrap('(', join(args, ', '), ')')) +\n      ': ' +\n      type +\n      wrap(' ', join(directives, ' ')),\n  },\n  InputValueDefinition: {\n    leave: ({ description, name, type, defaultValue, directives }) =>\n      wrap('', description, '\\n') +\n      join(\n        [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n        ' ',\n      ),\n  },\n  InterfaceTypeDefinition: {\n    leave: ({ description, name, interfaces, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(\n        [\n          'interface',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  UnionTypeDefinition: {\n    leave: ({ description, name, directives, types }) =>\n      wrap('', description, '\\n') +\n      join(\n        ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n        ' ',\n      ),\n  },\n  EnumTypeDefinition: {\n    leave: ({ description, name, directives, values }) =>\n      wrap('', description, '\\n') +\n      join(['enum', name, join(directives, ' '), block(values)], ' '),\n  },\n  EnumValueDefinition: {\n    leave: ({ description, name, directives }) =>\n      wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n  },\n  InputObjectTypeDefinition: {\n    leave: ({ description, name, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(['input', name, join(directives, ' '), block(fields)], ' '),\n  },\n  DirectiveDefinition: {\n    leave: ({ description, name, arguments: args, repeatable, locations }) =>\n      wrap('', description, '\\n') +\n      'directive @' +\n      name +\n      (hasMultilineItems(args)\n        ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n        : wrap('(', join(args, ', '), ')')) +\n      (repeatable ? ' repeatable' : '') +\n      ' on ' +\n      join(locations, ' | '),\n  },\n  SchemaExtension: {\n    leave: ({ directives, operationTypes }) =>\n      join(\n        ['extend schema', join(directives, ' '), block(operationTypes)],\n        ' ',\n      ),\n  },\n  ScalarTypeExtension: {\n    leave: ({ name, directives }) =>\n      join(['extend scalar', name, join(directives, ' ')], ' '),\n  },\n  ObjectTypeExtension: {\n    leave: ({ name, interfaces, directives, fields }) =>\n      join(\n        [\n          'extend type',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  InterfaceTypeExtension: {\n    leave: ({ name, interfaces, directives, fields }) =>\n      join(\n        [\n          'extend interface',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  UnionTypeExtension: {\n    leave: ({ name, directives, types }) =>\n      join(\n        [\n          'extend union',\n          name,\n          join(directives, ' '),\n          wrap('= ', join(types, ' | ')),\n        ],\n        ' ',\n      ),\n  },\n  EnumTypeExtension: {\n    leave: ({ name, directives, values }) =>\n      join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n  },\n  InputObjectTypeExtension: {\n    leave: ({ name, directives, fields }) =>\n      join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n  },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n  var _maybeArray$filter$jo;\n\n  return (_maybeArray$filter$jo =\n    maybeArray === null || maybeArray === void 0\n      ? void 0\n      : maybeArray.filter((x) => x).join(separator)) !== null &&\n    _maybeArray$filter$jo !== void 0\n    ? _maybeArray$filter$jo\n    : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n  return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n  return maybeString != null && maybeString !== ''\n    ? start + maybeString + end\n    : '';\n}\n\nfunction indent(str) {\n  return wrap('  ', str.replace(/\\n/g, '\\n  '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n  var _maybeArray$some;\n\n  // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n  return (_maybeArray$some =\n    maybeArray === null || maybeArray === void 0\n      ? void 0\n      : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n    _maybeArray$some !== void 0\n    ? _maybeArray$some\n    : false;\n}\n","import { parse, print } from 'graphql';\n/**\n * helpers\n */\nconst extractOperationName = (document) => {\n    let operationName = undefined;\n    const operationDefinitions = document.definitions.filter((definition) => definition.kind === `OperationDefinition`);\n    if (operationDefinitions.length === 1) {\n        operationName = operationDefinitions[0]?.name?.value;\n    }\n    return operationName;\n};\nexport const resolveRequestDocument = (document) => {\n    if (typeof document === `string`) {\n        let operationName = undefined;\n        try {\n            const parsedDocument = parse(document);\n            operationName = extractOperationName(parsedDocument);\n        }\n        catch (err) {\n            // Failed parsing the document, the operationName will be undefined\n        }\n        return { query: document, operationName };\n    }\n    const operationName = extractOperationName(document);\n    return { query: print(document), operationName };\n};\n//# sourceMappingURL=resolveRequestDocument.js.map","export class ClientError extends Error {\n    constructor(response, request) {\n        const message = `${ClientError.extractMessage(response)}: ${JSON.stringify({\n            response,\n            request,\n        })}`;\n        super(message);\n        Object.setPrototypeOf(this, ClientError.prototype);\n        this.response = response;\n        this.request = request;\n        // this is needed as Safari doesn't support .captureStackTrace\n        if (typeof Error.captureStackTrace === `function`) {\n            Error.captureStackTrace(this, ClientError);\n        }\n    }\n    static extractMessage(response) {\n        return response.errors?.[0]?.message ?? `GraphQL Error (Code: ${response.status})`;\n    }\n}\n//# sourceMappingURL=types.js.map","// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n  var global =\n    (typeof globalThis !== 'undefined' && globalThis) ||\n    (typeof self !== 'undefined' && self) ||\n    (typeof global !== 'undefined' && global);\n\n  var support = {\n    searchParams: 'URLSearchParams' in global,\n    iterable: 'Symbol' in global && 'iterator' in Symbol,\n    blob:\n      'FileReader' in global &&\n      'Blob' in global &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in global,\n    arrayBuffer: 'ArrayBuffer' in global\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n      throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      /*\n        fetch-mock wraps the Response object in an ES6 Proxy to\n        provide useful test harness features such as flush. However, on\n        ES5 browsers without fetch or Proxy support pollyfills must be used;\n        the proxy-pollyfill is unable to proxy an attribute unless it exists\n        on the object before the Proxy is created. This change ensures\n        Response.bodyUsed exists on the instance, while maintaining the\n        semantic of setting Request.bodyUsed in the constructor before\n        _initBody is called.\n      */\n      this.bodyUsed = this.bodyUsed;\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          var isConsumed = consumed(this);\n          if (isConsumed) {\n            return isConsumed\n          }\n          if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n            return Promise.resolve(\n              this._bodyArrayBuffer.buffer.slice(\n                this._bodyArrayBuffer.byteOffset,\n                this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n              )\n            )\n          } else {\n            return Promise.resolve(this._bodyArrayBuffer)\n          }\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    if (!(this instanceof Request)) {\n      throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n    }\n\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n\n    if (this.method === 'GET' || this.method === 'HEAD') {\n      if (options.cache === 'no-store' || options.cache === 'no-cache') {\n        // Search for a '_' parameter in the query string\n        var reParamSearch = /([?&])_=[^&]*/;\n        if (reParamSearch.test(this.url)) {\n          // If it already exists then set the value with the current time\n          this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n        } else {\n          // Otherwise add a new '_' parameter to the end with the current time\n          var reQueryString = /\\?/;\n          this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n        }\n      }\n    }\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n    // https://github.com/github/fetch/issues/748\n    // https://github.com/zloirock/core-js/issues/751\n    preProcessedHeaders\n      .split('\\r')\n      .map(function(header) {\n        return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n      })\n      .forEach(function(line) {\n        var parts = line.split(':');\n        var key = parts.shift().trim();\n        if (key) {\n          var value = parts.join(':').trim();\n          headers.append(key, value);\n        }\n      });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!(this instanceof Response)) {\n      throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n    }\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = global.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        setTimeout(function() {\n          resolve(new Response(body, options));\n        }, 0);\n      };\n\n      xhr.onerror = function() {\n        setTimeout(function() {\n          reject(new TypeError('Network request failed'));\n        }, 0);\n      };\n\n      xhr.ontimeout = function() {\n        setTimeout(function() {\n          reject(new TypeError('Network request failed'));\n        }, 0);\n      };\n\n      xhr.onabort = function() {\n        setTimeout(function() {\n          reject(new exports.DOMException('Aborted', 'AbortError'));\n        }, 0);\n      };\n\n      function fixUrl(url) {\n        try {\n          return url === '' && global.location.href ? global.location.href : url\n        } catch (e) {\n          return url\n        }\n      }\n\n      xhr.open(request.method, fixUrl(request.url), true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr) {\n        if (support.blob) {\n          xhr.responseType = 'blob';\n        } else if (\n          support.arrayBuffer &&\n          request.headers.get('Content-Type') &&\n          request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n        ) {\n          xhr.responseType = 'arraybuffer';\n        }\n      }\n\n      if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n        Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n          xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n        });\n      } else {\n        request.headers.forEach(function(value, name) {\n          xhr.setRequestHeader(name, value);\n        });\n      }\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!global.fetch) {\n    global.fetch = fetch;\n    global.Headers = Headers;\n    global.Request = Request;\n    global.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","import { defaultJsonSerializer } from './defaultJsonSerializer.js';\nimport { HeadersInstanceToPlainObject, uppercase } from './helpers.js';\nimport { parseBatchRequestArgs, parseRawRequestArgs, parseRawRequestExtendedArgs, parseRequestArgs, parseRequestExtendedArgs, } from './parseArgs.js';\nimport { resolveRequestDocument } from './resolveRequestDocument.js';\nimport { ClientError, } from './types.js';\nimport crossFetch, * as CrossFetch from 'cross-fetch';\n/**\n * Convert the given headers configuration into a plain object.\n */\nconst resolveHeaders = (headers) => {\n    let oHeaders = {};\n    if (headers) {\n        if ((typeof Headers !== `undefined` && headers instanceof Headers) ||\n            (CrossFetch && CrossFetch.Headers && headers instanceof CrossFetch.Headers)) {\n            oHeaders = HeadersInstanceToPlainObject(headers);\n        }\n        else if (Array.isArray(headers)) {\n            headers.forEach(([name, value]) => {\n                if (name && value !== undefined) {\n                    oHeaders[name] = value;\n                }\n            });\n        }\n        else {\n            oHeaders = headers;\n        }\n    }\n    return oHeaders;\n};\n/**\n * Clean a GraphQL document to send it via a GET query\n */\nconst cleanQuery = (str) => str.replace(/([\\s,]|#[^\\n\\r]+)+/g, ` `).trim();\n/**\n * Create query string for GraphQL request\n */\nconst buildRequestConfig = (params) => {\n    if (!Array.isArray(params.query)) {\n        const params_ = params;\n        const search = [`query=${encodeURIComponent(cleanQuery(params_.query))}`];\n        if (params.variables) {\n            search.push(`variables=${encodeURIComponent(params_.jsonSerializer.stringify(params_.variables))}`);\n        }\n        if (params_.operationName) {\n            search.push(`operationName=${encodeURIComponent(params_.operationName)}`);\n        }\n        return search.join(`&`);\n    }\n    if (typeof params.variables !== `undefined` && !Array.isArray(params.variables)) {\n        throw new Error(`Cannot create query with given variable type, array expected`);\n    }\n    // Batch support\n    const params_ = params;\n    const payload = params.query.reduce((acc, currentQuery, index) => {\n        acc.push({\n            query: cleanQuery(currentQuery),\n            variables: params_.variables ? params_.jsonSerializer.stringify(params_.variables[index]) : undefined,\n        });\n        return acc;\n    }, []);\n    return `query=${encodeURIComponent(params_.jsonSerializer.stringify(payload))}`;\n};\nconst createHttpMethodFetcher = (method) => async (params) => {\n    const { url, query, variables, operationName, fetch, fetchOptions, middleware } = params;\n    const headers = { ...params.headers };\n    let queryParams = ``;\n    let body = undefined;\n    if (method === `POST`) {\n        body = createRequestBody(query, variables, operationName, fetchOptions.jsonSerializer);\n        if (typeof body === `string`) {\n            // @ts-expect-error todo\n            headers[`Content-Type`] = `application/json`;\n        }\n    }\n    else {\n        // @ts-expect-error todo needs ADT for TS to understand the different states\n        queryParams = buildRequestConfig({\n            query,\n            variables,\n            operationName,\n            jsonSerializer: fetchOptions.jsonSerializer ?? defaultJsonSerializer,\n        });\n    }\n    const init = {\n        method,\n        headers,\n        body,\n        ...fetchOptions,\n    };\n    let urlResolved = url;\n    let initResolved = init;\n    if (middleware) {\n        const result = await Promise.resolve(middleware({ ...init, url, operationName, variables }));\n        const { url: urlNew, ...initNew } = result;\n        urlResolved = urlNew;\n        initResolved = initNew;\n    }\n    if (queryParams) {\n        urlResolved = `${urlResolved}?${queryParams}`;\n    }\n    return await fetch(urlResolved, initResolved);\n};\n/**\n * GraphQL Client.\n */\nclass GraphQLClient {\n    constructor(url, requestConfig = {}) {\n        this.url = url;\n        this.requestConfig = requestConfig;\n        /**\n         * Send a GraphQL query to the server.\n         */\n        this.rawRequest = async (...args) => {\n            const [queryOrOptions, variables, requestHeaders] = args;\n            const rawRequestOptions = parseRawRequestArgs(queryOrOptions, variables, requestHeaders);\n            const { headers, fetch = crossFetch, method = `POST`, requestMiddleware, responseMiddleware, ...fetchOptions } = this.requestConfig;\n            const { url } = this;\n            if (rawRequestOptions.signal !== undefined) {\n                fetchOptions.signal = rawRequestOptions.signal;\n            }\n            const { operationName } = resolveRequestDocument(rawRequestOptions.query);\n            return makeRequest({\n                url,\n                query: rawRequestOptions.query,\n                variables: rawRequestOptions.variables,\n                headers: {\n                    ...resolveHeaders(callOrIdentity(headers)),\n                    ...resolveHeaders(rawRequestOptions.requestHeaders),\n                },\n                operationName,\n                fetch,\n                method,\n                fetchOptions,\n                middleware: requestMiddleware,\n            })\n                .then((response) => {\n                if (responseMiddleware) {\n                    responseMiddleware(response);\n                }\n                return response;\n            })\n                .catch((error) => {\n                if (responseMiddleware) {\n                    responseMiddleware(error);\n                }\n                throw error;\n            });\n        };\n    }\n    async request(documentOrOptions, ...variablesAndRequestHeaders) {\n        const [variables, requestHeaders] = variablesAndRequestHeaders;\n        const requestOptions = parseRequestArgs(documentOrOptions, variables, requestHeaders);\n        const { headers, fetch = crossFetch, method = `POST`, requestMiddleware, responseMiddleware, ...fetchOptions } = this.requestConfig;\n        const { url } = this;\n        if (requestOptions.signal !== undefined) {\n            fetchOptions.signal = requestOptions.signal;\n        }\n        const { query, operationName } = resolveRequestDocument(requestOptions.document);\n        return makeRequest({\n            url,\n            query,\n            variables: requestOptions.variables,\n            headers: {\n                ...resolveHeaders(callOrIdentity(headers)),\n                ...resolveHeaders(requestOptions.requestHeaders),\n            },\n            operationName,\n            fetch,\n            method,\n            fetchOptions,\n            middleware: requestMiddleware,\n        })\n            .then((response) => {\n            if (responseMiddleware) {\n                responseMiddleware(response);\n            }\n            return response.data;\n        })\n            .catch((error) => {\n            if (responseMiddleware) {\n                responseMiddleware(error);\n            }\n            throw error;\n        });\n    }\n    // prettier-ignore\n    batchRequests(documentsOrOptions, requestHeaders) {\n        const batchRequestOptions = parseBatchRequestArgs(documentsOrOptions, requestHeaders);\n        const { headers, ...fetchOptions } = this.requestConfig;\n        if (batchRequestOptions.signal !== undefined) {\n            fetchOptions.signal = batchRequestOptions.signal;\n        }\n        const queries = batchRequestOptions.documents.map(({ document }) => resolveRequestDocument(document).query);\n        const variables = batchRequestOptions.documents.map(({ variables }) => variables);\n        return makeRequest({\n            url: this.url,\n            query: queries,\n            // @ts-expect-error TODO reconcile batch variables into system.\n            variables,\n            headers: {\n                ...resolveHeaders(callOrIdentity(headers)),\n                ...resolveHeaders(batchRequestOptions.requestHeaders),\n            },\n            operationName: undefined,\n            fetch: this.requestConfig.fetch ?? crossFetch,\n            method: this.requestConfig.method || `POST`,\n            fetchOptions,\n            middleware: this.requestConfig.requestMiddleware,\n        })\n            .then((response) => {\n            if (this.requestConfig.responseMiddleware) {\n                this.requestConfig.responseMiddleware(response);\n            }\n            return response.data;\n        })\n            .catch((error) => {\n            if (this.requestConfig.responseMiddleware) {\n                this.requestConfig.responseMiddleware(error);\n            }\n            throw error;\n        });\n    }\n    setHeaders(headers) {\n        this.requestConfig.headers = headers;\n        return this;\n    }\n    /**\n     * Attach a header to the client. All subsequent requests will have this header.\n     */\n    setHeader(key, value) {\n        const { headers } = this.requestConfig;\n        if (headers) {\n            // todo what if headers is in nested array form... ?\n            //@ts-expect-error todo\n            headers[key] = value;\n        }\n        else {\n            this.requestConfig.headers = { [key]: value };\n        }\n        return this;\n    }\n    /**\n     * Change the client endpoint. All subsequent requests will send to this endpoint.\n     */\n    setEndpoint(value) {\n        this.url = value;\n        return this;\n    }\n}\nconst makeRequest = async (params) => {\n    const { query, variables, fetchOptions } = params;\n    const fetcher = createHttpMethodFetcher(uppercase(params.method ?? `post`));\n    const isBatchingQuery = Array.isArray(params.query);\n    const response = await fetcher(params);\n    const result = await getResult(response, fetchOptions.jsonSerializer ?? defaultJsonSerializer);\n    const successfullyReceivedData = Array.isArray(result)\n        ? !result.some(({ data }) => !data)\n        : Boolean(result.data);\n    const successfullyPassedErrorPolicy = Array.isArray(result) ||\n        !result.errors ||\n        (Array.isArray(result.errors) && !result.errors.length) ||\n        fetchOptions.errorPolicy === `all` ||\n        fetchOptions.errorPolicy === `ignore`;\n    if (response.ok && successfullyPassedErrorPolicy && successfullyReceivedData) {\n        // @ts-expect-error TODO fixme\n        const { errors: _, ...rest } = Array.isArray(result) ? result : result;\n        const data = fetchOptions.errorPolicy === `ignore` ? rest : result;\n        const dataEnvelope = isBatchingQuery ? { data } : data;\n        // @ts-expect-error TODO\n        return {\n            ...dataEnvelope,\n            headers: response.headers,\n            status: response.status,\n        };\n    }\n    else {\n        const errorResult = typeof result === `string`\n            ? {\n                error: result,\n            }\n            : result;\n        throw new ClientError(\n        // @ts-expect-error TODO\n        { ...errorResult, status: response.status, headers: response.headers }, { query, variables });\n    }\n};\n/**\n * Send a GraphQL Query to the GraphQL server for execution.\n */\nconst rawRequest = async (...args) => {\n    const [urlOrOptions, query, ...variablesAndRequestHeaders] = args;\n    const requestOptions = parseRawRequestExtendedArgs(urlOrOptions, query, ...variablesAndRequestHeaders);\n    const client = new GraphQLClient(requestOptions.url);\n    return client.rawRequest({\n        ...requestOptions,\n    });\n};\n// prettier-ignore\n// eslint-disable-next-line\nasync function request(urlOrOptions, document, ...variablesAndRequestHeaders) {\n    const requestOptions = parseRequestExtendedArgs(urlOrOptions, document, ...variablesAndRequestHeaders);\n    const client = new GraphQLClient(requestOptions.url);\n    return client.request({\n        ...requestOptions,\n    });\n}\n/**\n * Send a batch of GraphQL Document to the GraphQL server for execution.\n *\n * @example\n *\n * ```ts\n * // You can pass a raw string\n *\n * await batchRequests('https://foo.bar/graphql', [\n * {\n *  query: `\n *   {\n *     query {\n *       users\n *     }\n *   }`\n * },\n * {\n *   query: `\n *   {\n *     query {\n *       users\n *     }\n *   }`\n * }])\n *\n * // You can also pass a GraphQL DocumentNode as query. Convenient if you\n * // are using graphql-tag package.\n *\n * import gql from 'graphql-tag'\n *\n * await batchRequests('https://foo.bar/graphql', [{ query: gql`...` }])\n * ```\n */\nconst batchRequests = async (...args) => {\n    const params = parseBatchRequestsArgsExtended(args);\n    const client = new GraphQLClient(params.url);\n    return client.batchRequests(params);\n};\nconst parseBatchRequestsArgsExtended = (args) => {\n    if (args.length === 1) {\n        return args[0];\n    }\n    else {\n        return {\n            url: args[0],\n            documents: args[1],\n            requestHeaders: args[2],\n            signal: undefined,\n        };\n    }\n};\nconst createRequestBody = (query, variables, operationName, jsonSerializer) => {\n    const jsonSerializer_ = jsonSerializer ?? defaultJsonSerializer;\n    if (!Array.isArray(query)) {\n        return jsonSerializer_.stringify({ query, variables, operationName });\n    }\n    if (typeof variables !== `undefined` && !Array.isArray(variables)) {\n        throw new Error(`Cannot create request body with given variable type, array expected`);\n    }\n    // Batch support\n    const payload = query.reduce((acc, currentQuery, index) => {\n        acc.push({ query: currentQuery, variables: variables ? variables[index] : undefined });\n        return acc;\n    }, []);\n    return jsonSerializer_.stringify(payload);\n};\nconst getResult = async (response, jsonSerializer) => {\n    let contentType;\n    response.headers.forEach((value, key) => {\n        if (key.toLowerCase() === `content-type`) {\n            contentType = value;\n        }\n    });\n    if (contentType &&\n        (contentType.toLowerCase().startsWith(`application/json`) ||\n            contentType.toLowerCase().startsWith(`application/graphql+json`) ||\n            contentType.toLowerCase().startsWith(`application/graphql-response+json`))) {\n        return jsonSerializer.parse(await response.text());\n    }\n    else {\n        return response.text();\n    }\n};\nconst callOrIdentity = (value) => {\n    return typeof value === `function` ? value() : value;\n};\n/**\n * Convenience passthrough template tag to get the benefits of tooling for the gql template tag. This does not actually parse the input into a GraphQL DocumentNode like graphql-tag package does. It just returns the string with any variables given interpolated. Can save you a bit of performance and having to install another package.\n *\n * @example\n * ```\n * import { gql } from 'graphql-request'\n *\n * await request('https://foo.bar/graphql', gql`...`)\n * ```\n *\n * @remarks\n *\n * Several tools in the Node GraphQL ecosystem are hardcoded to specially treat any template tag named \"gql\". For example see this prettier issue: https://github.com/prettier/prettier/issues/4360. Using this template tag has no runtime effect beyond variable interpolation.\n */\nexport const gql = (chunks, ...variables) => {\n    return chunks.reduce((acc, chunk, index) => `${acc}${chunk}${index in variables ? String(variables[index]) : ``}`, ``);\n};\nexport { GraphQLWebSocketClient } from './graphql-ws.js';\nexport { resolveRequestDocument } from './resolveRequestDocument.js';\nexport { batchRequests, ClientError, GraphQLClient, rawRequest, request, };\nexport default request;\n//# sourceMappingURL=index.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n    return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n    return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n    var seenKeys = new Set();\n    var definitions = [];\n    ast.definitions.forEach(function (fragmentDefinition) {\n        if (fragmentDefinition.kind === 'FragmentDefinition') {\n            var fragmentName = fragmentDefinition.name.value;\n            var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n            var sourceKeySet = fragmentSourceMap.get(fragmentName);\n            if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n                if (printFragmentWarnings) {\n                    console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n                        + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n                        + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n                }\n            }\n            else if (!sourceKeySet) {\n                fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n            }\n            sourceKeySet.add(sourceKey);\n            if (!seenKeys.has(sourceKey)) {\n                seenKeys.add(sourceKey);\n                definitions.push(fragmentDefinition);\n            }\n        }\n        else {\n            definitions.push(fragmentDefinition);\n        }\n    });\n    return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n    var workSet = new Set(doc.definitions);\n    workSet.forEach(function (node) {\n        if (node.loc)\n            delete node.loc;\n        Object.keys(node).forEach(function (key) {\n            var value = node[key];\n            if (value && typeof value === 'object') {\n                workSet.add(value);\n            }\n        });\n    });\n    var loc = doc.loc;\n    if (loc) {\n        delete loc.startToken;\n        delete loc.endToken;\n    }\n    return doc;\n}\nfunction parseDocument(source) {\n    var cacheKey = normalize(source);\n    if (!docCache.has(cacheKey)) {\n        var parsed = parse(source, {\n            experimentalFragmentVariables: experimentalFragmentVariables,\n            allowLegacyFragmentVariables: experimentalFragmentVariables\n        });\n        if (!parsed || parsed.kind !== 'Document') {\n            throw new Error('Not a valid GraphQL document.');\n        }\n        docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n    }\n    return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (typeof literals === 'string') {\n        literals = [literals];\n    }\n    var result = literals[0];\n    args.forEach(function (arg, i) {\n        if (arg && arg.kind === 'Document') {\n            result += arg.loc.source.body;\n        }\n        else {\n            result += arg;\n        }\n        result += literals[i + 1];\n    });\n    return parseDocument(result);\n}\nexport function resetCaches() {\n    docCache.clear();\n    fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n    printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n    experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n    experimentalFragmentVariables = false;\n}\nvar extras = {\n    gql: gql,\n    resetCaches: resetCaches,\n    disableFragmentWarnings: disableFragmentWarnings,\n    enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n    disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n    gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n//# sourceMappingURL=index.js.map","// src/configs.ts\nvar ZeroBytes32 = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nvar EmptyRoot = \"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\nexport {\n  EmptyRoot,\n  ZeroBytes32\n};\n//# sourceMappingURL=configs.mjs.map","// src/configs.ts\nvar CONTRACT_MAX_SIZE = 16 * 1024;\nvar MAX_WITNESSES = 16;\nvar MAX_SCRIPT_LENGTH = 1024 * 1024 * 1024;\nvar MAX_SCRIPT_DATA_LENGTH = 1024 * 1024 * 1024;\nvar MAX_STATIC_CONTRACTS = 255;\nvar MAX_PREDICATE_LENGTH = 1024 * 1024;\nvar MAX_PREDICATE_DATA_LENGTH = 1024 * 1024;\nvar FAILED_REQUIRE_SIGNAL = \"0xffffffffffff0000\";\nvar FAILED_TRANSFER_TO_ADDRESS_SIGNAL = \"0xffffffffffff0001\";\nvar FAILED_ASSERT_EQ_SIGNAL = \"0xffffffffffff0003\";\nvar FAILED_ASSERT_SIGNAL = \"0xffffffffffff0004\";\nvar FAILED_ASSERT_NE_SIGNAL = \"0xffffffffffff0005\";\nvar REVERT_WITH_LOG_SIGNAL = \"0xffffffffffff0006\";\nvar PANIC_REASONS = [\n  \"ArithmeticError\",\n  \"ArithmeticOverflow\",\n  \"AssetIdNotFound\",\n  \"BalanceOverflow\",\n  \"BlobIdAlreadyUploaded\",\n  \"BlobNotFound\",\n  \"BytecodeAlreadyUploaded\",\n  \"CanNotGetGasPriceInPredicate\",\n  \"ContractIdAlreadyDeployed\",\n  \"ContractInstructionNotAllowed\",\n  \"ContractMaxSize\",\n  \"ContractMismatch\",\n  \"ContractNotFound\",\n  \"ContractNotInInputs\",\n  \"EcalError\",\n  \"ExpectedCoinInput\",\n  \"ExpectedInternalContext\",\n  \"ExpectedNestedCaller\",\n  \"ExpectedOutputVariable\",\n  \"ExpectedParentInternalContext\",\n  \"ExpectedUnallocatedStack\",\n  \"GasCostNotDefined\",\n  \"InputContractDoesNotExist\",\n  \"InputNotFound\",\n  \"InternalBalanceOverflow\",\n  \"InvalidBlockHeight\",\n  \"InvalidEllipticCurvePoint\",\n  \"InvalidFlags\",\n  \"InvalidImmediateValue\",\n  \"InvalidInstruction\",\n  \"InvalidMetadataIdentifier\",\n  \"InvalidUpgradePurposeType\",\n  \"MalformedCallStructure\",\n  \"MaxStaticContractsReached\",\n  \"MemoryGrowthOverlap\",\n  \"MemoryNotExecutable\",\n  \"MemoryOverflow\",\n  \"MemoryOwnership\",\n  \"MemoryWriteOverlap\",\n  \"MessageDataTooLong\",\n  \"NotEnoughBalance\",\n  \"OutOfGas\",\n  \"OutputNotFound\",\n  \"OverridingConsensusParameters\",\n  \"OverridingStateTransactionBytecode\",\n  \"PolicyIsNotSet\",\n  \"PolicyNotFound\",\n  \"PredicateReturnedNonOne\",\n  \"ProofInUploadNotFound\",\n  \"ReservedRegisterNotWritable\",\n  \"Revert\",\n  \"StorageSlotsNotFound\",\n  \"ThePartIsNotSequentiallyConnected\",\n  \"TooManyReceipts\",\n  \"TooManySlots\",\n  \"TransactionMaturity\",\n  \"TransactionValidity\",\n  \"TransferAmountCannotBeZero\",\n  \"TransferZeroCoins\",\n  \"UninitalizedMemoryAccess\",\n  \"UnknownPanicReason\",\n  \"UnknownStateTransactionBytecodeRoot\",\n  \"UnsupportedCurveId\",\n  \"UnsupportedOperationType\",\n  \"WitnessNotFound\"\n];\nvar PANIC_DOC_URL = \"https://docs.rs/fuel-asm/latest/fuel_asm/enum.PanicReason.html\";\nvar SwaySignalErrors = {\n  FAILED_REQUIRE_SIGNAL,\n  FAILED_TRANSFER_TO_ADDRESS_SIGNAL,\n  FAILED_ASSERT_EQ_SIGNAL,\n  FAILED_ASSERT_SIGNAL,\n  FAILED_ASSERT_NE_SIGNAL,\n  REVERT_WITH_LOG_SIGNAL\n};\nexport {\n  CONTRACT_MAX_SIZE,\n  FAILED_ASSERT_EQ_SIGNAL,\n  FAILED_ASSERT_NE_SIGNAL,\n  FAILED_ASSERT_SIGNAL,\n  FAILED_REQUIRE_SIGNAL,\n  FAILED_TRANSFER_TO_ADDRESS_SIGNAL,\n  MAX_PREDICATE_DATA_LENGTH,\n  MAX_PREDICATE_LENGTH,\n  MAX_SCRIPT_DATA_LENGTH,\n  MAX_SCRIPT_LENGTH,\n  MAX_STATIC_CONTRACTS,\n  MAX_WITNESSES,\n  PANIC_DOC_URL,\n  PANIC_REASONS,\n  REVERT_WITH_LOG_SIGNAL,\n  SwaySignalErrors\n};\n//# sourceMappingURL=configs.mjs.map","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nexport function isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\nexport function abytes(item) {\n    if (!isBytes(item))\n        throw new Error('Uint8Array expected');\n}\nexport function abool(title, value) {\n    if (typeof value !== 'boolean')\n        throw new Error(title + ' boolean expected, got ' + value);\n}\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 * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    abytes(bytes);\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}\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// 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 * @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    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// 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. 'private 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/**\n * Copies several Uint8Arrays into one.\n */\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}\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 * @example utf8ToBytes('abc') // new Uint8Array([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// 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 */\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) => (_2n << BigInt(n - 1)) - _1n;\n// DRBG\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\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    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()) => {\n        // HMAC-DRBG reseed() function. Steps D-G\n        k = h(u8fr([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(u8fr([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' });\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 finite fields.\n * A finite field over 11 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 { bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, validateObject, } 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), _8n = /* @__PURE__ */ BigInt(8);\n// prettier-ignore\nconst _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 * @todo use field version && remove\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n    if (power < _0n)\n        throw new Error('invalid exponent, negatives unsupported');\n    if (modulo <= _0n)\n        throw new Error('invalid modulus');\n    if (modulo === _1n)\n        return _0n;\n    let res = _1n;\n    while (power > _0n) {\n        if (power & _1n)\n            res = (res * num) % modulo;\n        num = (num * num) % modulo;\n        power >>= _1n;\n    }\n    return res;\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}\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 * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n    // Legendre constant: used to calculate Legendre symbol (a | p),\n    // which denotes the value of a^((p-1)/2) (mod p).\n    // (a | p) ≡ 1    if a is a square (mod p)\n    // (a | p) ≡ -1   if a is not a square (mod p)\n    // (a | p) ≡ 0    if a ≡ 0 (mod p)\n    const legendreC = (P - _1n) / _2n;\n    let Q, S, Z;\n    // Step 1: By factoring out powers of 2 from p - 1,\n    // find q and s such that p - 1 = q*(2^s) with q odd\n    for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n        ;\n    // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n    for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++) {\n        // Crash instead of infinity loop, we cannot reasonable count until P.\n        if (Z > 1000)\n            throw new Error('Cannot find square root: likely non-prime P');\n    }\n    // Fast-path\n    if (S === 1) {\n        const p1div4 = (P + _1n) / _4n;\n        return function tonelliFast(Fp, n) {\n            const root = Fp.pow(n, p1div4);\n            if (!Fp.eql(Fp.sqr(root), n))\n                throw new Error('Cannot find square root');\n            return root;\n        };\n    }\n    // Slow-path\n    const Q1div2 = (Q + _1n) / _2n;\n    return function tonelliSlow(Fp, n) {\n        // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n        if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE))\n            throw new Error('Cannot find square root');\n        let r = S;\n        // TODO: will fail at Fp2/etc\n        let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n        let x = Fp.pow(n, Q1div2); // first guess at the square root\n        let b = Fp.pow(n, Q); // first guess at the fudge factor\n        while (!Fp.eql(b, Fp.ONE)) {\n            if (Fp.eql(b, Fp.ZERO))\n                return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n            // Find m such b^(2^m)==1\n            let m = 1;\n            for (let t2 = Fp.sqr(b); m < r; m++) {\n                if (Fp.eql(t2, Fp.ONE))\n                    break;\n                t2 = Fp.sqr(t2); // t2 *= t2\n            }\n            // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n            const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n            g = Fp.sqr(ge); // g = ge * ge\n            x = Fp.mul(x, ge); // x *= ge\n            b = Fp.mul(b, g); // b *= g\n            r = m;\n        }\n        return x;\n    };\n}\n/**\n * Square root for a finite field. It will try to check if optimizations are applicable and fall back to 4:\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 = n^((P+1)/4)\n    if (P % _4n === _3n) {\n        // Not all roots possible!\n        // const ORDER =\n        //   0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n        // const NUM = 72057594037927816n;\n        const p1div4 = (P + _1n) / _4n;\n        return function sqrt3mod4(Fp, n) {\n            const root = Fp.pow(n, p1div4);\n            // Throw if root**2 != n\n            if (!Fp.eql(Fp.sqr(root), n))\n                throw new Error('Cannot find square root');\n            return root;\n        };\n    }\n    // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n    if (P % _8n === _5n) {\n        const c1 = (P - _5n) / _8n;\n        return function sqrt5mod8(Fp, n) {\n            const n2 = Fp.mul(n, _2n);\n            const v = Fp.pow(n2, c1);\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            if (!Fp.eql(Fp.sqr(root), n))\n                throw new Error('Cannot find square root');\n            return root;\n        };\n    }\n    // P ≡ 9 (mod 16)\n    if (P % _16n === _9n) {\n        // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n        // Means we cannot use sqrt for constants at all!\n        //\n        // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); //  1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n        // const c2 = Fp.sqrt(c1);                //  2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n        // const c3 = Fp.sqrt(Fp.negate(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        // sqrt = (x) => {\n        //   let tv1 = Fp.pow(x, c4);             //  1. tv1 = x^c4\n        //   let tv2 = Fp.mul(c1, tv1);           //  2. tv2 = c1 * tv1\n        //   const tv3 = Fp.mul(c2, tv1);         //  3. tv3 = c2 * tv1\n        //   let tv4 = Fp.mul(c3, tv1);           //  4. tv4 = c3 * tv1\n        //   const e1 = Fp.equals(Fp.square(tv2), x); //  5.  e1 = (tv2^2) == x\n        //   const e2 = Fp.equals(Fp.square(tv3), x); //  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.equals(Fp.square(tv2), x); //  9.  e3 = (tv2^2) == x\n        //   return Fp.cmov(tv1, tv2, e3); //  10.  z = CMOV(tv1, tv2, e3)  # Select the sqrt from tv1 and tv2\n        // }\n    }\n    // Other cases: 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: 'isSafeInteger',\n        BITS: 'isSafeInteger',\n    };\n    const opts = FIELD_FIELDS.reduce((map, val) => {\n        map[val] = 'function';\n        return map;\n    }, initial);\n    return validateObject(field, opts);\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(f, num, power) {\n    // Should have same speed as pow for bigints\n    // TODO: benchmark!\n    if (power < _0n)\n        throw new Error('invalid exponent, negatives unsupported');\n    if (power === _0n)\n        return f.ONE;\n    if (power === _1n)\n        return num;\n    let p = f.ONE;\n    let d = num;\n    while (power > _0n) {\n        if (power & _1n)\n            p = f.mul(p, d);\n        d = f.sqr(d);\n        power >>= _1n;\n    }\n    return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f, nums) {\n    const tmp = new Array(nums.length);\n    // Walk from first to last, multiply them by each other MOD p\n    const lastMultiplied = nums.reduce((acc, num, i) => {\n        if (f.is0(num))\n            return acc;\n        tmp[i] = acc;\n        return f.mul(acc, num);\n    }, f.ONE);\n    // Invert last element\n    const inverted = f.inv(lastMultiplied);\n    // Walk from last to first, multiply them by inverted each other MOD p\n    nums.reduceRight((acc, num, i) => {\n        if (f.is0(num))\n            return acc;\n        tmp[i] = f.mul(acc, tmp[i]);\n        return f.mul(acc, num);\n    }, inverted);\n    return tmp;\n}\nexport function FpDiv(f, lhs, rhs) {\n    return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n/**\n * Legendre symbol.\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(order) {\n    const legendreConst = (order - _1n) / _2n; // Integer arithmetic\n    return (f, x) => f.pow(x, legendreConst);\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f) {\n    const legendre = FpLegendre(f.ORDER);\n    return (x) => {\n        const p = legendre(f, x);\n        return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n    };\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n    // Bit size, byte size of CURVE.n\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 * Initializes a finite field over prime.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) 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 * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: 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, bitLen, isLE = false, redef = {}) {\n    if (ORDER <= _0n)\n        throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n    const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\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        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        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: redef.sqrt ||\n            ((n) => {\n                if (!sqrtP)\n                    sqrtP = FpSqrt(ORDER);\n                return sqrtP(f, n);\n            }),\n        invertBatch: (lst) => FpInvertBatch(f, lst),\n        // TODO: do we really need constant cmov?\n        // We don't have const-time bigints anyway, so probably will be not very useful\n        cmov: (a, b, c) => (c ? b : a),\n        toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n        fromBytes: (bytes) => {\n            if (bytes.length !== BYTES)\n                throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n            return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n        },\n    });\n    return Object.freeze(f);\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 { nLength, validateField } from './modular.js';\nimport { bitLen, validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nfunction constTimeNegate(condition, item) {\n    const neg = item.negate();\n    return condition ? neg : item;\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, bits) {\n    validateW(W, bits);\n    const windows = Math.ceil(bits / W) + 1; // +1, because\n    const windowSize = 2 ** (W - 1); // -1 because we skip zero\n    return { windows, windowSize };\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\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap(); // This allows use make points immutable (nothing changes inside)\nfunction getW(P) {\n    return pointWindowSizes.get(P) || 1;\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\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 function wNAF(c, bits) {\n    return {\n        constTimeNegate,\n        hasPrecomputes(elm) {\n            return getW(elm) !== 1;\n        },\n        // non-const time multiplication ladder\n        unsafeLadder(elm, n, p = c.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 elm Point instance\n         * @param W window size\n         * @returns precomputed point tables flattened to a single array\n         */\n        precomputeWindow(elm, W) {\n            const { windows, windowSize } = calcWOpts(W, bits);\n            const points = [];\n            let p = elm;\n            let base = p;\n            for (let window = 0; window < windows; window++) {\n                base = p;\n                points.push(base);\n                // =1, because we skip zero\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         * @param W window size\n         * @param precomputes precomputed tables\n         * @param n scalar (we don't check here, but should be less than curve order)\n         * @returns real and fake (for const-time) points\n         */\n        wNAF(W, precomputes, n) {\n            // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n            // But need to carefully remove other checks before wNAF. ORDER == bits here\n            const { windows, windowSize } = calcWOpts(W, bits);\n            let p = c.ZERO;\n            let f = c.BASE;\n            const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n            const maxNumber = 2 ** W;\n            const shiftBy = BigInt(W);\n            for (let window = 0; window < windows; window++) {\n                const offset = window * windowSize;\n                // Extract W bits.\n                let wbits = Number(n & mask);\n                // Shift number by W bits.\n                n >>= shiftBy;\n                // If the bits are bigger than max size, we'll split those.\n                // +224 => 256 - 32\n                if (wbits > windowSize) {\n                    wbits -= maxNumber;\n                    n += _1n;\n                }\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                // Check if we're onto Zero point.\n                // Add random point inside current window to f.\n                const offset1 = offset;\n                const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n                const cond1 = window % 2 !== 0;\n                const cond2 = wbits < 0;\n                if (wbits === 0) {\n                    // The most important part for const-time getPublicKey\n                    f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n                }\n                else {\n                    p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n                }\n            }\n            // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n            // Even if the variable is still unused, there are some checks which will\n            // throw an exception, so compiler needs to prove they won't happen, which is hard.\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 W window size\n         * @param precomputes precomputed tables\n         * @param n scalar (we don't check here, but should be less than curve order)\n         * @param acc accumulator point to add result of multiplication\n         * @returns point\n         */\n        wNAFUnsafe(W, precomputes, n, acc = c.ZERO) {\n            const { windows, windowSize } = calcWOpts(W, bits);\n            const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n            const maxNumber = 2 ** W;\n            const shiftBy = BigInt(W);\n            for (let window = 0; window < windows; window++) {\n                const offset = window * windowSize;\n                if (n === _0n)\n                    break; // No need to go over empty scalar\n                // Extract W bits.\n                let wbits = Number(n & mask);\n                // Shift number by W bits.\n                n >>= shiftBy;\n                // If the bits are bigger than max size, we'll split those.\n                // +224 => 256 - 32\n                if (wbits > windowSize) {\n                    wbits -= maxNumber;\n                    n += _1n;\n                }\n                if (wbits === 0)\n                    continue;\n                let curr = precomputes[offset + Math.abs(wbits) - 1]; // -1 because we skip zero\n                if (wbits < 0)\n                    curr = curr.negate();\n                // NOTE: by re-using acc, we can save a lot of additions in case of MSM\n                acc = acc.add(curr);\n            }\n            return acc;\n        },\n        getPrecomputes(W, P, transform) {\n            // Calculate precomputes on a first run, reuse them after\n            let comp = pointPrecomputes.get(P);\n            if (!comp) {\n                comp = this.precomputeWindow(P, W);\n                if (W !== 1)\n                    pointPrecomputes.set(P, transform(comp));\n            }\n            return comp;\n        },\n        wNAFCached(P, n, transform) {\n            const W = getW(P);\n            return this.wNAF(W, this.getPrecomputes(W, P, transform), n);\n        },\n        wNAFCachedUnsafe(P, n, transform, prev) {\n            const W = getW(P);\n            if (W === 1)\n                return this.unsafeLadder(P, n, prev); // For W=1 ladder is ~x2 faster\n            return this.wNAFUnsafe(W, this.getPrecomputes(W, P, transform), n, 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        setWindowSize(P, W) {\n            validateW(W, bits);\n            pointWindowSizes.set(P, W);\n            pointPrecomputes.delete(P);\n        },\n    };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster with 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 private 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    if (points.length !== scalars.length)\n        throw new Error('arrays of points and scalars must have equal length');\n    const zero = c.ZERO;\n    const wbits = bitLen(BigInt(points.length));\n    const windowSize = wbits > 12 ? wbits - 3 : wbits > 4 ? wbits - 2 : wbits ? 2 : 1; // in bits\n    const MASK = (1 << windowSize) - 1;\n    const buckets = new Array(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 < scalars.length; j++) {\n            const scalar = scalars[j];\n            const wbits = Number((scalar >> BigInt(i)) & BigInt(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 = BigInt((1 << windowSize) - 1);\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}\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}\n//# sourceMappingURL=curve.js.map","/**\n * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.\n *\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n *   `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n *   `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n *   it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance\n * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create\n * unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n *     1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n *     which is hard to debug.\n *     2. Params can be generic and we can't enforce them to be constant value:\n *     if somebody creates curve from non-constant params,\n *     it would be allowed to interact with other curves with non-constant params\n *\n * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { pippenger, validateBasic, wNAF, } from './curve.js';\nimport { Field, getMinHashLength, invert, mapHashToField, mod, validateField, } from './modular.js';\nimport * as ut from './utils.js';\nimport { abool, ensureBytes, memoized } from './utils.js';\nfunction validateSigVerOpts(opts) {\n    if (opts.lowS !== undefined)\n        abool('lowS', opts.lowS);\n    if (opts.prehash !== undefined)\n        abool('prehash', opts.prehash);\n}\nfunction validatePointOpts(curve) {\n    const opts = validateBasic(curve);\n    ut.validateObject(opts, {\n        a: 'field',\n        b: 'field',\n    }, {\n        allowedPrivateKeyLengths: 'array',\n        wrapPrivateKey: 'boolean',\n        isTorsionFree: 'function',\n        clearCofactor: 'function',\n        allowInfinityPoint: 'boolean',\n        fromBytes: 'function',\n        toBytes: 'function',\n    });\n    const { endo, Fp, a } = opts;\n    if (endo) {\n        if (!Fp.eql(a, Fp.ZERO)) {\n            throw new Error('invalid endomorphism, can only be defined for Koblitz curves that have a=0');\n        }\n        if (typeof endo !== 'object' ||\n            typeof endo.beta !== 'bigint' ||\n            typeof endo.splitScalar !== 'function') {\n            throw new Error('invalid endomorphism, expected beta: bigint and splitScalar: function');\n        }\n    }\n    return Object.freeze({ ...opts });\n}\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\nexport class DERErr extends Error {\n    constructor(m = '') {\n        super(m);\n    }\n}\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n *     [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n    // asn.1 DER encoding utils\n    Err: DERErr,\n    // Basic building block is TLV (Tag-Length-Value)\n    _tlv: {\n        encode: (tag, data) => {\n            const { Err: E } = DER;\n            if (tag < 0 || tag > 256)\n                throw new E('tlv.encode: wrong tag');\n            if (data.length & 1)\n                throw new E('tlv.encode: unpadded data');\n            const dataLen = data.length / 2;\n            const len = ut.numberToHexUnpadded(dataLen);\n            if ((len.length / 2) & 128)\n                throw new E('tlv.encode: long form length too big');\n            // length of length with long form flag\n            const lenLen = dataLen > 127 ? ut.numberToHexUnpadded((len.length / 2) | 128) : '';\n            const t = ut.numberToHexUnpadded(tag);\n            return t + lenLen + len + data;\n        },\n        // v - value, l - left bytes (unparsed)\n        decode(tag, data) {\n            const { Err: E } = DER;\n            let pos = 0;\n            if (tag < 0 || tag > 256)\n                throw new E('tlv.encode: wrong tag');\n            if (data.length < 2 || data[pos++] !== tag)\n                throw new E('tlv.decode: wrong tlv');\n            const first = data[pos++];\n            const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form\n            let length = 0;\n            if (!isLong)\n                length = first;\n            else {\n                // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n                const lenLen = first & 127;\n                if (!lenLen)\n                    throw new E('tlv.decode(long): indefinite length not supported');\n                if (lenLen > 4)\n                    throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n                const lengthBytes = data.subarray(pos, pos + lenLen);\n                if (lengthBytes.length !== lenLen)\n                    throw new E('tlv.decode: length bytes not complete');\n                if (lengthBytes[0] === 0)\n                    throw new E('tlv.decode(long): zero leftmost byte');\n                for (const b of lengthBytes)\n                    length = (length << 8) | b;\n                pos += lenLen;\n                if (length < 128)\n                    throw new E('tlv.decode(long): not minimal encoding');\n            }\n            const v = data.subarray(pos, pos + length);\n            if (v.length !== length)\n                throw new E('tlv.decode: wrong value length');\n            return { v, l: data.subarray(pos + length) };\n        },\n    },\n    // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n    // since we always use positive integers here. It must always be empty:\n    // - add zero byte if exists\n    // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n    _int: {\n        encode(num) {\n            const { Err: E } = DER;\n            if (num < _0n)\n                throw new E('integer: negative integers are not allowed');\n            let hex = ut.numberToHexUnpadded(num);\n            // Pad with zero byte if negative flag is present\n            if (Number.parseInt(hex[0], 16) & 0b1000)\n                hex = '00' + hex;\n            if (hex.length & 1)\n                throw new E('unexpected DER parsing assertion: unpadded hex');\n            return hex;\n        },\n        decode(data) {\n            const { Err: E } = DER;\n            if (data[0] & 128)\n                throw new E('invalid signature integer: negative');\n            if (data[0] === 0x00 && !(data[1] & 128))\n                throw new E('invalid signature integer: unnecessary leading zero');\n            return b2n(data);\n        },\n    },\n    toSig(hex) {\n        // parse DER signature\n        const { Err: E, _int: int, _tlv: tlv } = DER;\n        const data = typeof hex === 'string' ? h2b(hex) : hex;\n        ut.abytes(data);\n        const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n        if (seqLeftBytes.length)\n            throw new E('invalid signature: left bytes after parsing');\n        const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n        const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n        if (sLeftBytes.length)\n            throw new E('invalid signature: left bytes after parsing');\n        return { r: int.decode(rBytes), s: int.decode(sBytes) };\n    },\n    hexFromSig(sig) {\n        const { _tlv: tlv, _int: int } = DER;\n        const rs = tlv.encode(0x02, int.encode(sig.r));\n        const ss = tlv.encode(0x02, int.encode(sig.s));\n        const seq = rs + ss;\n        return tlv.encode(0x30, seq);\n    },\n};\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), _3n = BigInt(3), _4n = BigInt(4);\nexport function weierstrassPoints(opts) {\n    const CURVE = validatePointOpts(opts);\n    const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n    const Fn = Field(CURVE.n, CURVE.nBitLength);\n    const toBytes = CURVE.toBytes ||\n        ((_c, point, _isCompressed) => {\n            const a = point.toAffine();\n            return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n        });\n    const fromBytes = CURVE.fromBytes ||\n        ((bytes) => {\n            // const head = bytes[0];\n            const tail = bytes.subarray(1);\n            // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n            const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n            const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n            return { x, y };\n        });\n    /**\n     * y² = x³ + ax + b: Short weierstrass curve formula\n     * @returns y²\n     */\n    function weierstrassEquation(x) {\n        const { a, b } = CURVE;\n        const x2 = Fp.sqr(x); // x * x\n        const x3 = Fp.mul(x2, x); // x2 * x\n        return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n    }\n    // Validate whether the passed curve params are valid.\n    // We check if curve equation works for generator point.\n    // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n    // ProjectivePoint class has not been initialized yet.\n    if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n        throw new Error('bad generator point: equation left != right');\n    // Valid group elements reside in range 1..n-1\n    function isWithinCurveOrder(num) {\n        return ut.inRange(num, _1n, CURVE.n);\n    }\n    // Validates if priv key is valid and converts it to bigint.\n    // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n    function normPrivateKeyToScalar(key) {\n        const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n: N } = CURVE;\n        if (lengths && typeof key !== 'bigint') {\n            if (ut.isBytes(key))\n                key = ut.bytesToHex(key);\n            // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n            if (typeof key !== 'string' || !lengths.includes(key.length))\n                throw new Error('invalid private key');\n            key = key.padStart(nByteLength * 2, '0');\n        }\n        let num;\n        try {\n            num =\n                typeof key === 'bigint'\n                    ? key\n                    : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n        }\n        catch (error) {\n            throw new Error('invalid private key, expected hex or ' + nByteLength + ' bytes, got ' + typeof key);\n        }\n        if (wrapPrivateKey)\n            num = mod(num, N); // disabled by default, enabled for BLS\n        ut.aInRange('private key', num, _1n, N); // num in range [1..N-1]\n        return num;\n    }\n    function assertPrjPoint(other) {\n        if (!(other instanceof Point))\n            throw new Error('ProjectivePoint expected');\n    }\n    // Memoized toAffine / validity check. They are heavy. Points are immutable.\n    // Converts Projective point to affine (x, y) coordinates.\n    // Can accept precomputed Z^-1 - for example, from invertBatch.\n    // (x, y, z) ∋ (x=x/z, y=y/z)\n    const toAffineMemo = memoized((p, iz) => {\n        const { px: x, py: y, pz: z } = p;\n        // Fast-path for normalized points\n        if (Fp.eql(z, Fp.ONE))\n            return { x, y };\n        const is0 = p.is0();\n        // If invZ was 0, we return zero point. However we still want to execute\n        // all operations, so we replace invZ with a random number, 1.\n        if (iz == null)\n            iz = is0 ? Fp.ONE : Fp.inv(z);\n        const ax = Fp.mul(x, iz);\n        const ay = Fp.mul(y, iz);\n        const zz = Fp.mul(z, iz);\n        if (is0)\n            return { x: Fp.ZERO, y: Fp.ZERO };\n        if (!Fp.eql(zz, Fp.ONE))\n            throw new Error('invZ was invalid');\n        return { x: ax, y: ay };\n    });\n    // NOTE: on exception this will crash 'cached' and no value will be set.\n    // Otherwise true will be return\n    const assertValidMemo = memoized((p) => {\n        if (p.is0()) {\n            // (0, 1, 0) aka ZERO is invalid in most contexts.\n            // In BLS, ZERO can be serialized, so we allow it.\n            // (0, 0, 0) is invalid representation of ZERO.\n            if (CURVE.allowInfinityPoint && !Fp.is0(p.py))\n                return;\n            throw new Error('bad point: ZERO');\n        }\n        // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n        const { x, y } = p.toAffine();\n        // Check if x, y are valid field elements\n        if (!Fp.isValid(x) || !Fp.isValid(y))\n            throw new Error('bad point: x or y not FE');\n        const left = Fp.sqr(y); // y²\n        const right = weierstrassEquation(x); // x³ + ax + b\n        if (!Fp.eql(left, right))\n            throw new Error('bad point: equation left != right');\n        if (!p.isTorsionFree())\n            throw new Error('bad point: not in prime-order subgroup');\n        return true;\n    });\n    /**\n     * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n     * Default Point works in 2d / affine coordinates: (x, y)\n     * We're doing calculations in projective, because its operations don't require costly inversion.\n     */\n    class Point {\n        constructor(px, py, pz) {\n            this.px = px;\n            this.py = py;\n            this.pz = pz;\n            if (px == null || !Fp.isValid(px))\n                throw new Error('x required');\n            if (py == null || !Fp.isValid(py))\n                throw new Error('y required');\n            if (pz == null || !Fp.isValid(pz))\n                throw new Error('z required');\n            Object.freeze(this);\n        }\n        // Does not validate if the point is on-curve.\n        // Use fromHex instead, or call assertValidity() later.\n        static fromAffine(p) {\n            const { x, y } = p || {};\n            if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n                throw new Error('invalid affine point');\n            if (p instanceof Point)\n                throw new Error('projective point not allowed');\n            const is0 = (i) => Fp.eql(i, Fp.ZERO);\n            // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n            if (is0(x) && is0(y))\n                return Point.ZERO;\n            return new Point(x, y, Fp.ONE);\n        }\n        get x() {\n            return this.toAffine().x;\n        }\n        get y() {\n            return this.toAffine().y;\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         */\n        static normalizeZ(points) {\n            const toInv = Fp.invertBatch(points.map((p) => p.pz));\n            return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n        }\n        /**\n         * Converts hash string or Uint8Array to Point.\n         * @param hex short/long ECDSA hex\n         */\n        static fromHex(hex) {\n            const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n            P.assertValidity();\n            return P;\n        }\n        // Multiplies generator point by privateKey.\n        static fromPrivateKey(privateKey) {\n            return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n        }\n        // Multiscalar Multiplication\n        static msm(points, scalars) {\n            return pippenger(Point, Fn, points, scalars);\n        }\n        // \"Private method\", don't use it directly\n        _setWindowSize(windowSize) {\n            wnaf.setWindowSize(this, windowSize);\n        }\n        // A point on curve is valid if it conforms to equation.\n        assertValidity() {\n            assertValidMemo(this);\n        }\n        hasEvenY() {\n            const { y } = this.toAffine();\n            if (Fp.isOdd)\n                return !Fp.isOdd(y);\n            throw new Error(\"Field doesn't support isOdd\");\n        }\n        /**\n         * Compare one point to another.\n         */\n        equals(other) {\n            assertPrjPoint(other);\n            const { px: X1, py: Y1, pz: Z1 } = this;\n            const { px: X2, py: Y2, pz: Z2 } = other;\n            const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n            const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n            return U1 && U2;\n        }\n        /**\n         * Flips point to one corresponding to (x, -y) in Affine coordinates.\n         */\n        negate() {\n            return new Point(this.px, Fp.neg(this.py), this.pz);\n        }\n        // Renes-Costello-Batina exception-free doubling formula.\n        // There is 30% faster Jacobian formula, but it is not complete.\n        // https://eprint.iacr.org/2015/1060, algorithm 3\n        // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n        double() {\n            const { a, b } = CURVE;\n            const b3 = Fp.mul(b, _3n);\n            const { px: X1, py: Y1, pz: Z1 } = this;\n            let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n            let t0 = Fp.mul(X1, X1); // step 1\n            let t1 = Fp.mul(Y1, Y1);\n            let t2 = Fp.mul(Z1, Z1);\n            let t3 = Fp.mul(X1, Y1);\n            t3 = Fp.add(t3, t3); // step 5\n            Z3 = Fp.mul(X1, Z1);\n            Z3 = Fp.add(Z3, Z3);\n            X3 = Fp.mul(a, Z3);\n            Y3 = Fp.mul(b3, t2);\n            Y3 = Fp.add(X3, Y3); // step 10\n            X3 = Fp.sub(t1, Y3);\n            Y3 = Fp.add(t1, Y3);\n            Y3 = Fp.mul(X3, Y3);\n            X3 = Fp.mul(t3, X3);\n            Z3 = Fp.mul(b3, Z3); // step 15\n            t2 = Fp.mul(a, t2);\n            t3 = Fp.sub(t0, t2);\n            t3 = Fp.mul(a, t3);\n            t3 = Fp.add(t3, Z3);\n            Z3 = Fp.add(t0, t0); // step 20\n            t0 = Fp.add(Z3, t0);\n            t0 = Fp.add(t0, t2);\n            t0 = Fp.mul(t0, t3);\n            Y3 = Fp.add(Y3, t0);\n            t2 = Fp.mul(Y1, Z1); // step 25\n            t2 = Fp.add(t2, t2);\n            t0 = Fp.mul(t2, t3);\n            X3 = Fp.sub(X3, t0);\n            Z3 = Fp.mul(t2, t1);\n            Z3 = Fp.add(Z3, Z3); // step 30\n            Z3 = Fp.add(Z3, Z3);\n            return new Point(X3, Y3, Z3);\n        }\n        // Renes-Costello-Batina exception-free addition formula.\n        // There is 30% faster Jacobian formula, but it is not complete.\n        // https://eprint.iacr.org/2015/1060, algorithm 1\n        // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n        add(other) {\n            assertPrjPoint(other);\n            const { px: X1, py: Y1, pz: Z1 } = this;\n            const { px: X2, py: Y2, pz: Z2 } = other;\n            let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n            const a = CURVE.a;\n            const b3 = Fp.mul(CURVE.b, _3n);\n            let t0 = Fp.mul(X1, X2); // step 1\n            let t1 = Fp.mul(Y1, Y2);\n            let t2 = Fp.mul(Z1, Z2);\n            let t3 = Fp.add(X1, Y1);\n            let t4 = Fp.add(X2, Y2); // step 5\n            t3 = Fp.mul(t3, t4);\n            t4 = Fp.add(t0, t1);\n            t3 = Fp.sub(t3, t4);\n            t4 = Fp.add(X1, Z1);\n            let t5 = Fp.add(X2, Z2); // step 10\n            t4 = Fp.mul(t4, t5);\n            t5 = Fp.add(t0, t2);\n            t4 = Fp.sub(t4, t5);\n            t5 = Fp.add(Y1, Z1);\n            X3 = Fp.add(Y2, Z2); // step 15\n            t5 = Fp.mul(t5, X3);\n            X3 = Fp.add(t1, t2);\n            t5 = Fp.sub(t5, X3);\n            Z3 = Fp.mul(a, t4);\n            X3 = Fp.mul(b3, t2); // step 20\n            Z3 = Fp.add(X3, Z3);\n            X3 = Fp.sub(t1, Z3);\n            Z3 = Fp.add(t1, Z3);\n            Y3 = Fp.mul(X3, Z3);\n            t1 = Fp.add(t0, t0); // step 25\n            t1 = Fp.add(t1, t0);\n            t2 = Fp.mul(a, t2);\n            t4 = Fp.mul(b3, t4);\n            t1 = Fp.add(t1, t2);\n            t2 = Fp.sub(t0, t2); // step 30\n            t2 = Fp.mul(a, t2);\n            t4 = Fp.add(t4, t2);\n            t0 = Fp.mul(t1, t4);\n            Y3 = Fp.add(Y3, t0);\n            t0 = Fp.mul(t5, t4); // step 35\n            X3 = Fp.mul(t3, X3);\n            X3 = Fp.sub(X3, t0);\n            t0 = Fp.mul(t3, t1);\n            Z3 = Fp.mul(t5, Z3);\n            Z3 = Fp.add(Z3, t0); // step 40\n            return new Point(X3, Y3, Z3);\n        }\n        subtract(other) {\n            return this.add(other.negate());\n        }\n        is0() {\n            return this.equals(Point.ZERO);\n        }\n        wNAF(n) {\n            return wnaf.wNAFCached(this, n, Point.normalizeZ);\n        }\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, which works over *public* keys.\n         */\n        multiplyUnsafe(sc) {\n            const { endo, n: N } = CURVE;\n            ut.aInRange('scalar', sc, _0n, N);\n            const I = Point.ZERO;\n            if (sc === _0n)\n                return I;\n            if (this.is0() || sc === _1n)\n                return this;\n            // Case a: no endomorphism. Case b: has precomputes.\n            if (!endo || wnaf.hasPrecomputes(this))\n                return wnaf.wNAFCachedUnsafe(this, sc, Point.normalizeZ);\n            // Case c: endomorphism\n            let { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n            let k1p = I;\n            let k2p = I;\n            let d = this;\n            while (k1 > _0n || k2 > _0n) {\n                if (k1 & _1n)\n                    k1p = k1p.add(d);\n                if (k2 & _1n)\n                    k2p = k2p.add(d);\n                d = d.double();\n                k1 >>= _1n;\n                k2 >>= _1n;\n            }\n            if (k1neg)\n                k1p = k1p.negate();\n            if (k2neg)\n                k2p = k2p.negate();\n            k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n            return k1p.add(k2p);\n        }\n        /**\n         * Constant time multiplication.\n         * Uses wNAF method. Windowed method may be 10% faster,\n         * but takes 2x longer to generate and consumes 2x memory.\n         * Uses precomputes when available.\n         * Uses endomorphism for Koblitz curves.\n         * @param scalar by which the point would be multiplied\n         * @returns New point\n         */\n        multiply(scalar) {\n            const { endo, n: N } = CURVE;\n            ut.aInRange('scalar', scalar, _1n, N);\n            let point, fake; // Fake point is used to const-time mult\n            if (endo) {\n                const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n                let { p: k1p, f: f1p } = this.wNAF(k1);\n                let { p: k2p, f: f2p } = this.wNAF(k2);\n                k1p = wnaf.constTimeNegate(k1neg, k1p);\n                k2p = wnaf.constTimeNegate(k2neg, k2p);\n                k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n                point = k1p.add(k2p);\n                fake = f1p.add(f2p);\n            }\n            else {\n                const { p, f } = this.wNAF(scalar);\n                point = p;\n                fake = f;\n            }\n            // Normalize `z` for both points, but return only real one\n            return Point.normalizeZ([point, fake])[0];\n        }\n        /**\n         * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n         * Not using Strauss-Shamir trick: precomputation tables are faster.\n         * The trick could be useful if both P and Q are not G (not in our case).\n         * @returns non-zero affine point\n         */\n        multiplyAndAddUnsafe(Q, a, b) {\n            const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n            const mul = (P, a // Select faster multiply() method\n            ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n            const sum = mul(this, a).add(mul(Q, b));\n            return sum.is0() ? undefined : sum;\n        }\n        // Converts Projective point to affine (x, y) coordinates.\n        // Can accept precomputed Z^-1 - for example, from invertBatch.\n        // (x, y, z) ∋ (x=x/z, y=y/z)\n        toAffine(iz) {\n            return toAffineMemo(this, iz);\n        }\n        isTorsionFree() {\n            const { h: cofactor, isTorsionFree } = CURVE;\n            if (cofactor === _1n)\n                return true; // No subgroups, always torsion-free\n            if (isTorsionFree)\n                return isTorsionFree(Point, this);\n            throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n        }\n        clearCofactor() {\n            const { h: cofactor, clearCofactor } = CURVE;\n            if (cofactor === _1n)\n                return this; // Fast-path\n            if (clearCofactor)\n                return clearCofactor(Point, this);\n            return this.multiplyUnsafe(CURVE.h);\n        }\n        toRawBytes(isCompressed = true) {\n            abool('isCompressed', isCompressed);\n            this.assertValidity();\n            return toBytes(Point, this, isCompressed);\n        }\n        toHex(isCompressed = true) {\n            abool('isCompressed', isCompressed);\n            return ut.bytesToHex(this.toRawBytes(isCompressed));\n        }\n    }\n    Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n    Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n    const _bits = CURVE.nBitLength;\n    const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n    // Validate if generator point is on curve\n    return {\n        CURVE,\n        ProjectivePoint: Point,\n        normPrivateKeyToScalar,\n        weierstrassEquation,\n        isWithinCurveOrder,\n    };\n}\nfunction validateOpts(curve) {\n    const opts = validateBasic(curve);\n    ut.validateObject(opts, {\n        hash: 'hash',\n        hmac: 'function',\n        randomBytes: 'function',\n    }, {\n        bits2int: 'function',\n        bits2int_modN: 'function',\n        lowS: 'boolean',\n    });\n    return Object.freeze({ lowS: true, ...opts });\n}\n/**\n * Creates short weierstrass curve and ECDSA signature methods for it.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, b, p, n, Gx, Gy\n * const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n })\n */\nexport function weierstrass(curveDef) {\n    const CURVE = validateOpts(curveDef);\n    const { Fp, n: CURVE_ORDER } = CURVE;\n    const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n    const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n    function modN(a) {\n        return mod(a, CURVE_ORDER);\n    }\n    function invN(a) {\n        return invert(a, CURVE_ORDER);\n    }\n    const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({\n        ...CURVE,\n        toBytes(_c, point, isCompressed) {\n            const a = point.toAffine();\n            const x = Fp.toBytes(a.x);\n            const cat = ut.concatBytes;\n            abool('isCompressed', isCompressed);\n            if (isCompressed) {\n                return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n            }\n            else {\n                return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n            }\n        },\n        fromBytes(bytes) {\n            const len = bytes.length;\n            const head = bytes[0];\n            const tail = bytes.subarray(1);\n            // this.assertValidity() is done inside of fromHex\n            if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n                const x = ut.bytesToNumberBE(tail);\n                if (!ut.inRange(x, _1n, Fp.ORDER))\n                    throw new Error('Point is not on curve');\n                const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n                let y;\n                try {\n                    y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n                }\n                catch (sqrtError) {\n                    const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n                    throw new Error('Point is not on curve' + suffix);\n                }\n                const isYOdd = (y & _1n) === _1n;\n                // ECDSA\n                const isHeadOdd = (head & 1) === 1;\n                if (isHeadOdd !== isYOdd)\n                    y = Fp.neg(y);\n                return { x, y };\n            }\n            else if (len === uncompressedLen && head === 0x04) {\n                const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n                const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n                return { x, y };\n            }\n            else {\n                const cl = compressedLen;\n                const ul = uncompressedLen;\n                throw new Error('invalid Point, expected length of ' + cl + ', or uncompressed ' + ul + ', got ' + len);\n            }\n        },\n    });\n    const numToNByteStr = (num) => ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n    function isBiggerThanHalfOrder(number) {\n        const HALF = CURVE_ORDER >> _1n;\n        return number > HALF;\n    }\n    function normalizeS(s) {\n        return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n    }\n    // slice bytes num\n    const slcNum = (b, from, to) => ut.bytesToNumberBE(b.slice(from, to));\n    /**\n     * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n     */\n    class Signature {\n        constructor(r, s, recovery) {\n            this.r = r;\n            this.s = s;\n            this.recovery = recovery;\n            this.assertValidity();\n        }\n        // pair (bytes of r, bytes of s)\n        static fromCompact(hex) {\n            const l = CURVE.nByteLength;\n            hex = ensureBytes('compactSignature', hex, l * 2);\n            return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n        }\n        // DER encoded ECDSA signature\n        // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n        static fromDER(hex) {\n            const { r, s } = DER.toSig(ensureBytes('DER', hex));\n            return new Signature(r, s);\n        }\n        assertValidity() {\n            ut.aInRange('r', this.r, _1n, CURVE_ORDER); // r in [1..N]\n            ut.aInRange('s', this.s, _1n, CURVE_ORDER); // s in [1..N]\n        }\n        addRecoveryBit(recovery) {\n            return new Signature(this.r, this.s, recovery);\n        }\n        recoverPublicKey(msgHash) {\n            const { r, s, recovery: rec } = this;\n            const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n            if (rec == null || ![0, 1, 2, 3].includes(rec))\n                throw new Error('recovery id invalid');\n            const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n            if (radj >= Fp.ORDER)\n                throw new Error('recovery id 2 or 3 invalid');\n            const prefix = (rec & 1) === 0 ? '02' : '03';\n            const R = Point.fromHex(prefix + numToNByteStr(radj));\n            const ir = invN(radj); // r^-1\n            const u1 = modN(-h * ir); // -hr^-1\n            const u2 = modN(s * ir); // sr^-1\n            const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n            if (!Q)\n                throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n            Q.assertValidity();\n            return Q;\n        }\n        // Signatures should be low-s, to prevent malleability.\n        hasHighS() {\n            return isBiggerThanHalfOrder(this.s);\n        }\n        normalizeS() {\n            return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n        }\n        // DER-encoded\n        toDERRawBytes() {\n            return ut.hexToBytes(this.toDERHex());\n        }\n        toDERHex() {\n            return DER.hexFromSig({ r: this.r, s: this.s });\n        }\n        // padded bytes of r, then padded bytes of s\n        toCompactRawBytes() {\n            return ut.hexToBytes(this.toCompactHex());\n        }\n        toCompactHex() {\n            return numToNByteStr(this.r) + numToNByteStr(this.s);\n        }\n    }\n    const utils = {\n        isValidPrivateKey(privateKey) {\n            try {\n                normPrivateKeyToScalar(privateKey);\n                return true;\n            }\n            catch (error) {\n                return false;\n            }\n        },\n        normPrivateKeyToScalar: normPrivateKeyToScalar,\n        /**\n         * Produces cryptographically secure private key from random of size\n         * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n         */\n        randomPrivateKey: () => {\n            const length = getMinHashLength(CURVE.n);\n            return mapHashToField(CURVE.randomBytes(length), CURVE.n);\n        },\n        /**\n         * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n         * Allows to massively speed-up `point.multiply(scalar)`.\n         * @returns cached point\n         * @example\n         * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n         * fast.multiply(privKey); // much faster ECDH now\n         */\n        precompute(windowSize = 8, point = Point.BASE) {\n            point._setWindowSize(windowSize);\n            point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n            return point;\n        },\n    };\n    /**\n     * Computes public key for a private key. Checks for validity of the private key.\n     * @param privateKey private key\n     * @param isCompressed whether to return compact (default), or full key\n     * @returns Public key, full when isCompressed=false; short when isCompressed=true\n     */\n    function getPublicKey(privateKey, isCompressed = true) {\n        return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n    }\n    /**\n     * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n     */\n    function isProbPub(item) {\n        const arr = ut.isBytes(item);\n        const str = typeof item === 'string';\n        const len = (arr || str) && item.length;\n        if (arr)\n            return len === compressedLen || len === uncompressedLen;\n        if (str)\n            return len === 2 * compressedLen || len === 2 * uncompressedLen;\n        if (item instanceof Point)\n            return true;\n        return false;\n    }\n    /**\n     * ECDH (Elliptic Curve Diffie Hellman).\n     * Computes shared public key from private key and public key.\n     * Checks: 1) private key validity 2) shared key is on-curve.\n     * Does NOT hash the result.\n     * @param privateA private key\n     * @param publicB different public key\n     * @param isCompressed whether to return compact (default), or full key\n     * @returns shared public key\n     */\n    function getSharedSecret(privateA, publicB, isCompressed = true) {\n        if (isProbPub(privateA))\n            throw new Error('first arg must be private key');\n        if (!isProbPub(publicB))\n            throw new Error('second arg must be public key');\n        const b = Point.fromHex(publicB); // check for being on-curve\n        return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n    }\n    // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n    // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n    // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n    // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n    const bits2int = CURVE.bits2int ||\n        function (bytes) {\n            // Our custom check \"just in case\"\n            if (bytes.length > 8192)\n                throw new Error('input is too large');\n            // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n            // for some cases, since bytes.length * 8 is not actual bitLength.\n            const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n            const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n            return delta > 0 ? num >> BigInt(delta) : num;\n        };\n    const bits2int_modN = CURVE.bits2int_modN ||\n        function (bytes) {\n            return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n        };\n    // NOTE: pads output with zero as per spec\n    const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n    /**\n     * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n     */\n    function int2octets(num) {\n        ut.aInRange('num < 2^' + CURVE.nBitLength, num, _0n, ORDER_MASK);\n        // works with order, can have different size than numToField!\n        return ut.numberToBytesBE(num, CURVE.nByteLength);\n    }\n    // Steps A, D of RFC6979 3.2\n    // Creates RFC6979 seed; converts msg/privKey to numbers.\n    // Used only in sign, not in verify.\n    // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order,\n    // this will be invalid at least for P521. Also it can be bigger for P224 + SHA256\n    function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n        if (['recovered', 'canonical'].some((k) => k in opts))\n            throw new Error('sign() legacy options not supported');\n        const { hash, randomBytes } = CURVE;\n        let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n        if (lowS == null)\n            lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n        msgHash = ensureBytes('msgHash', msgHash);\n        validateSigVerOpts(opts);\n        if (prehash)\n            msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n        // We can't later call bits2octets, since nested bits2int is broken for curves\n        // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n        // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n        const h1int = bits2int_modN(msgHash);\n        const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n        const seedArgs = [int2octets(d), int2octets(h1int)];\n        // extraEntropy. RFC6979 3.6: additional k' (optional).\n        if (ent != null && ent !== false) {\n            // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n            const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n            seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n        }\n        const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n        const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n        // Converts signature params into point w r/s, checks result for validity.\n        function k2sig(kBytes) {\n            // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n            const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n            if (!isWithinCurveOrder(k))\n                return; // Important: all mod() calls here must be done over N\n            const ik = invN(k); // k^-1 mod n\n            const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n            const r = modN(q.x); // r = q.x mod n\n            if (r === _0n)\n                return;\n            // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n            // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n            // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n            const s = modN(ik * modN(m + r * d)); // Not using blinding here\n            if (s === _0n)\n                return;\n            let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n            let normS = s;\n            if (lowS && isBiggerThanHalfOrder(s)) {\n                normS = normalizeS(s); // if lowS was passed, ensure s is always\n                recovery ^= 1; // // in the bottom half of N\n            }\n            return new Signature(r, normS, recovery); // use normS, not s\n        }\n        return { seed, k2sig };\n    }\n    const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n    const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n    /**\n     * Signs message hash with a private key.\n     * ```\n     * sign(m, d, k) where\n     *   (x, y) = G × k\n     *   r = x mod n\n     *   s = (m + dr)/k mod n\n     * ```\n     * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n     * @param privKey private key\n     * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n     * @returns signature with recovery param\n     */\n    function sign(msgHash, privKey, opts = defaultSigOpts) {\n        const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n        const C = CURVE;\n        const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n        return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n    }\n    // Enable precomputes. Slows down first publicKey computation by 20ms.\n    Point.BASE._setWindowSize(8);\n    // utils.precompute(8, ProjectivePoint.BASE)\n    /**\n     * Verifies a signature against message hash and public key.\n     * Rejects lowS signatures by default: to override,\n     * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n     *\n     * ```\n     * verify(r, s, h, P) where\n     *   U1 = hs^-1 mod n\n     *   U2 = rs^-1 mod n\n     *   R = U1⋅G - U2⋅P\n     *   mod(R.x, n) == r\n     * ```\n     */\n    function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n        const sg = signature;\n        msgHash = ensureBytes('msgHash', msgHash);\n        publicKey = ensureBytes('publicKey', publicKey);\n        const { lowS, prehash, format } = opts;\n        // Verify opts, deduce signature format\n        validateSigVerOpts(opts);\n        if ('strict' in opts)\n            throw new Error('options.strict was renamed to lowS');\n        if (format !== undefined && format !== 'compact' && format !== 'der')\n            throw new Error('format must be compact or der');\n        const isHex = typeof sg === 'string' || ut.isBytes(sg);\n        const isObj = !isHex &&\n            !format &&\n            typeof sg === 'object' &&\n            sg !== null &&\n            typeof sg.r === 'bigint' &&\n            typeof sg.s === 'bigint';\n        if (!isHex && !isObj)\n            throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');\n        let _sig = undefined;\n        let P;\n        try {\n            if (isObj)\n                _sig = new Signature(sg.r, sg.s);\n            if (isHex) {\n                // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n                // Since DER can also be 2*nByteLength bytes, we check for it first.\n                try {\n                    if (format !== 'compact')\n                        _sig = Signature.fromDER(sg);\n                }\n                catch (derError) {\n                    if (!(derError instanceof DER.Err))\n                        throw derError;\n                }\n                if (!_sig && format !== 'der')\n                    _sig = Signature.fromCompact(sg);\n            }\n            P = Point.fromHex(publicKey);\n        }\n        catch (error) {\n            return false;\n        }\n        if (!_sig)\n            return false;\n        if (lowS && _sig.hasHighS())\n            return false;\n        if (prehash)\n            msgHash = CURVE.hash(msgHash);\n        const { r, s } = _sig;\n        const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n        const is = invN(s); // s^-1\n        const u1 = modN(h * is); // u1 = hs^-1 mod n\n        const u2 = modN(r * is); // u2 = rs^-1 mod n\n        const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n        if (!R)\n            return false;\n        const v = modN(R.x);\n        return v === r;\n    }\n    return {\n        CURVE,\n        getPublicKey,\n        getSharedSecret,\n        sign,\n        verify,\n        ProjectivePoint: Point,\n        Signature,\n        utils,\n    };\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n    // Generic implementation\n    const q = Fp.ORDER;\n    let l = _0n;\n    for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n        l += _1n;\n    const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n    // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n    // 2n ** c1 == 2n << (c1-1)\n    const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n    const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n    const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1)  # Integer arithmetic\n    const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2            # Integer arithmetic\n    const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1                # Integer arithmetic\n    const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1)                  # Integer arithmetic\n    const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n    const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n    let sqrtRatio = (u, v) => {\n        let tv1 = c6; // 1. tv1 = c6\n        let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n        let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n        tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n        let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n        tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n        tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n        tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n        tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n        let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n        tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n        let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n        tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n        tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n        tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n        tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n        // 17. for i in (c1, c1 - 1, ..., 2):\n        for (let i = c1; i > _1n; i--) {\n            let tv5 = i - _2n; // 18.    tv5 = i - 2\n            tv5 = _2n << (tv5 - _1n); // 19.    tv5 = 2^tv5\n            let tvv5 = Fp.pow(tv4, tv5); // 20.    tv5 = tv4^tv5\n            const e1 = Fp.eql(tvv5, Fp.ONE); // 21.    e1 = tv5 == 1\n            tv2 = Fp.mul(tv3, tv1); // 22.    tv2 = tv3 * tv1\n            tv1 = Fp.mul(tv1, tv1); // 23.    tv1 = tv1 * tv1\n            tvv5 = Fp.mul(tv4, tv1); // 24.    tv5 = tv4 * tv1\n            tv3 = Fp.cmov(tv2, tv3, e1); // 25.    tv3 = CMOV(tv2, tv3, e1)\n            tv4 = Fp.cmov(tvv5, tv4, e1); // 26.    tv4 = CMOV(tv5, tv4, e1)\n        }\n        return { isValid: isQR, value: tv3 };\n    };\n    if (Fp.ORDER % _4n === _3n) {\n        // sqrt_ratio_3mod4(u, v)\n        const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4     # Integer arithmetic\n        const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n        sqrtRatio = (u, v) => {\n            let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n            const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n            tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n            let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n            y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n            const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n            const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n            const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n            let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n            return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n        };\n    }\n    // No curves uses that\n    // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n    return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n    validateField(Fp);\n    if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n        throw new Error('mapToCurveSimpleSWU: invalid opts');\n    const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n    if (!Fp.isOdd)\n        throw new Error('Fp.isOdd is not implemented!');\n    // Input: u, an element of F.\n    // Output: (x, y), a point on E.\n    return (u) => {\n        // prettier-ignore\n        let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n        tv1 = Fp.sqr(u); // 1.  tv1 = u^2\n        tv1 = Fp.mul(tv1, opts.Z); // 2.  tv1 = Z * tv1\n        tv2 = Fp.sqr(tv1); // 3.  tv2 = tv1^2\n        tv2 = Fp.add(tv2, tv1); // 4.  tv2 = tv2 + tv1\n        tv3 = Fp.add(tv2, Fp.ONE); // 5.  tv3 = tv2 + 1\n        tv3 = Fp.mul(tv3, opts.B); // 6.  tv3 = B * tv3\n        tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7.  tv4 = CMOV(Z, -tv2, tv2 != 0)\n        tv4 = Fp.mul(tv4, opts.A); // 8.  tv4 = A * tv4\n        tv2 = Fp.sqr(tv3); // 9.  tv2 = tv3^2\n        tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n        tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n        tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n        tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n        tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n        tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n        tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n        x = Fp.mul(tv1, tv3); // 17.   x = tv1 * tv3\n        const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n        y = Fp.mul(tv1, u); // 19.   y = tv1 * u  -> Z * u^3 * y1\n        y = Fp.mul(y, value); // 20.   y = y * y1\n        x = Fp.cmov(x, tv3, isValid); // 21.   x = CMOV(x, tv3, is_gx1_square)\n        y = Fp.cmov(y, value, isValid); // 22.   y = CMOV(y, y1, is_gx1_square)\n        const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23.  e1 = sgn0(u) == sgn0(y)\n        y = Fp.cmov(Fp.neg(y), y, e1); // 24.   y = CMOV(-y, y, e1)\n        x = Fp.div(x, tv4); // 25.   x = x / tv4\n        return { x, y };\n    };\n}\n//# sourceMappingURL=weierstrass.js.map","/**\n * Utilities for short weierstrass curves, combined with noble-hashes.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass } from './abstract/weierstrass.js';\n/** connects noble-curves to noble-hashes */\nexport function getHash(hash) {\n    return {\n        hash,\n        hmac: (key, ...msgs) => hmac(hash, key, concatBytes(...msgs)),\n        randomBytes,\n    };\n}\nexport function createCurve(curveDef, defHash) {\n    const create = (hash) => weierstrass({ ...curveDef, ...getHash(hash) });\n    return { ...create(defHash), create };\n}\n//# sourceMappingURL=_shortw_utils.js.map","/**\n * NIST secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).\n *\n * Seems to be rigid (not backdoored)\n * [as per discussion](https://bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975).\n *\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * [See explanation](https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066).\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { createCurve } from './_shortw_utils.js';\nimport { createHasher, isogenyMap } from './abstract/hash-to-curve.js';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport { aInRange, bytesToNumberBE, concatBytes, ensureBytes, inRange, numberToBytesBE, } from './abstract/utils.js';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.js';\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a, b) => (a + b / _2n) / b;\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n    const P = secp256k1P;\n    // prettier-ignore\n    const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n    // prettier-ignore\n    const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n    const b2 = (y * y * y) % P; // x^3, 11\n    const b3 = (b2 * b2 * y) % P; // x^7\n    const b6 = (pow2(b3, _3n, P) * b3) % P;\n    const b9 = (pow2(b6, _3n, P) * b3) % P;\n    const b11 = (pow2(b9, _2n, P) * b2) % P;\n    const b22 = (pow2(b11, _11n, P) * b11) % P;\n    const b44 = (pow2(b22, _22n, P) * b22) % P;\n    const b88 = (pow2(b44, _44n, P) * b44) % P;\n    const b176 = (pow2(b88, _88n, P) * b88) % P;\n    const b220 = (pow2(b176, _44n, P) * b44) % P;\n    const b223 = (pow2(b220, _3n, P) * b3) % P;\n    const t1 = (pow2(b223, _23n, P) * b22) % P;\n    const t2 = (pow2(t1, _6n, P) * b2) % P;\n    const root = pow2(t2, _2n, P);\n    if (!Fpk1.eql(Fpk1.sqr(root), y))\n        throw new Error('Cannot find square root');\n    return root;\n}\nconst Fpk1 = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\n/**\n * secp256k1 short weierstrass curve and ECDSA signatures over it.\n *\n * @example\n * import { secp256k1 } from '@noble/curves/secp256k1';\n *\n * const priv = secp256k1.utils.randomPrivateKey();\n * const pub = secp256k1.getPublicKey(priv);\n * const msg = new Uint8Array(32).fill(1); // message hash (not message) in ecdsa\n * const sig = secp256k1.sign(msg, priv); // `{prehash: true}` option is available\n * const isValid = secp256k1.verify(sig, msg, pub) === true;\n */\nexport const secp256k1 = createCurve({\n    a: BigInt(0), // equation params: a, b\n    b: BigInt(7),\n    Fp: Fpk1, // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n\n    n: secp256k1N, // Curve order, total count of valid points in the field\n    // Base point (x, y) aka generator point\n    Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n    Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n    h: BigInt(1), // Cofactor\n    lowS: true, // Allow only low-S signatures by default in sign() and verify()\n    endo: {\n        // Endomorphism, see above\n        beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n        splitScalar: (k) => {\n            const n = secp256k1N;\n            const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n            const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n            const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n            const b2 = a1;\n            const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n            const c1 = divNearest(b2 * k, n);\n            const c2 = divNearest(-b1 * k, n);\n            let k1 = mod(k - c1 * a1 - c2 * a2, n);\n            let k2 = mod(-c1 * b1 - c2 * b2, n);\n            const k1neg = k1 > POW_2_128;\n            const k2neg = k2 > POW_2_128;\n            if (k1neg)\n                k1 = n - k1;\n            if (k2neg)\n                k2 = n - k2;\n            if (k1 > POW_2_128 || k2 > POW_2_128) {\n                throw new Error('splitScalar: Endomorphism failed, k=' + k);\n            }\n            return { k1neg, k1, k2neg, k2 };\n        },\n    },\n}, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n    let tagP = TAGGED_HASH_PREFIXES[tag];\n    if (tagP === undefined) {\n        const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n        tagP = concatBytes(tagH, tagH);\n        TAGGED_HASH_PREFIXES[tag] = tagP;\n    }\n    return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n) => numberToBytesBE(n, 32);\nconst modP = (x) => mod(x, secp256k1P);\nconst modN = (x) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n    let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n    let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n    const scalar = p.hasEvenY() ? d_ : modN(-d_);\n    return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n    aInRange('x', x, _1n, secp256k1P); // Fail if x ≥ p.\n    const xx = modP(x * x);\n    const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n    let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n    if (y % _2n !== _0n)\n        y = modP(-y); // Return the unique point P such that x(P) = x and\n    const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n    p.assertValidity();\n    return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n    return modN(num(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey) {\n    return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n    const m = ensureBytes('message', message);\n    const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n    const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n    const t = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n    const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n    const k_ = modN(num(rand)); // Let k' = int(rand) mod n\n    if (k_ === _0n)\n        throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n    const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n    const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n    const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n    sig.set(rx, 0);\n    sig.set(numTo32b(modN(k + e * d)), 32);\n    // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n    if (!schnorrVerify(sig, m, px))\n        throw new Error('sign: Invalid signature produced');\n    return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n    const sig = ensureBytes('signature', signature, 64);\n    const m = ensureBytes('message', message);\n    const pub = ensureBytes('publicKey', publicKey, 32);\n    try {\n        const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n        const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n        if (!inRange(r, _1n, secp256k1P))\n            return false;\n        const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n        if (!inRange(s, _1n, secp256k1N))\n            return false;\n        const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n        const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n        if (!R || !R.hasEvenY() || R.toAffine().x !== r)\n            return false; // -eP == (n-e)P\n        return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n    }\n    catch (error) {\n        return false;\n    }\n}\n/**\n * Schnorr signatures over secp256k1.\n * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n * @example\n * import { schnorr } from '@noble/curves/secp256k1';\n * const priv = schnorr.utils.randomPrivateKey();\n * const pub = schnorr.getPublicKey(priv);\n * const msg = new TextEncoder().encode('hello');\n * const sig = schnorr.sign(msg, priv);\n * const isValid = schnorr.verify(sig, msg, pub);\n */\nexport const schnorr = /* @__PURE__ */ (() => ({\n    getPublicKey: schnorrGetPublicKey,\n    sign: schnorrSign,\n    verify: schnorrVerify,\n    utils: {\n        randomPrivateKey: secp256k1.utils.randomPrivateKey,\n        lift_x,\n        pointToBytes,\n        numberToBytesBE,\n        bytesToNumberBE,\n        taggedHash,\n        mod,\n    },\n}))();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fpk1, [\n    // xNum\n    [\n        '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n        '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n        '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n        '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n    ],\n    // xDen\n    [\n        '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n        '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n        '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n    ],\n    // yNum\n    [\n        '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n        '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n        '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n        '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n    ],\n    // yDen\n    [\n        '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n        '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n        '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n        '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n    ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fpk1, {\n    A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n    B: BigInt('1771'),\n    Z: Fpk1.create(BigInt('-11')),\n}))();\nconst htf = /* @__PURE__ */ (() => createHasher(secp256k1.ProjectivePoint, (scalars) => {\n    const { x, y } = mapSWU(Fpk1.create(scalars[0]));\n    return isoMap(x, y);\n}, {\n    DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n    encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n    p: Fpk1.ORDER,\n    m: 1,\n    k: 128,\n    expand: 'xmd',\n    hash: sha256,\n}))();\n/** secp256k1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\n/** secp256k1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/binary/binaryMerkleTree.ts\nimport { hash } from \"@fuel-ts/hasher\";\n\n// src/common/common.ts\nvar EMPTY = \"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n\n// src/binary/types/node.ts\nvar Node = class {\n  static {\n    __name(this, \"Node\");\n  }\n  left;\n  right;\n  parent;\n  hash;\n  data;\n  index;\n  constructor(left, right, parent, hash5, data, index = 0) {\n    this.left = left;\n    this.right = right;\n    this.parent = parent;\n    this.hash = hash5;\n    this.data = data;\n    this.index = index;\n  }\n};\nvar node_default = Node;\n\n// src/binary/binaryMerkleTree.ts\nfunction hashLeaf(data) {\n  return hash(\"0x00\".concat(data.slice(2)));\n}\n__name(hashLeaf, \"hashLeaf\");\nfunction hashNode(left, right) {\n  return hash(\"0x01\".concat(left.slice(2)).concat(right.slice(2)));\n}\n__name(hashNode, \"hashNode\");\nfunction constructTree(data) {\n  const nodes = [];\n  for (let i = 0; i < data.length; i += 1) {\n    const hashed = hashLeaf(data[i]);\n    const leaf = new node_default(-1, -1, -1, hashed, data[i]);\n    leaf.index = i;\n    nodes.push(leaf);\n  }\n  const nodesList = [...nodes];\n  let pNodes = [...nodes];\n  let size = nodes.length + 1 >> 1;\n  let odd = nodes.length & 1;\n  while (true) {\n    let i = 0;\n    for (; i < size - odd; i += 1) {\n      const j = i << 1;\n      const hashed = hashNode(pNodes[j].hash, pNodes[j + 1].hash);\n      nodes[i] = new node_default(pNodes[j].index, pNodes[j + 1].index, -1, hashed, \"\");\n      const nextIndex = nodesList.length;\n      nodes[i].index = nextIndex;\n      nodesList[pNodes[j].index].parent = nextIndex;\n      nodesList[pNodes[j + 1].index].parent = nextIndex;\n      nodesList.push(nodes[i]);\n    }\n    if (size === 1) {\n      break;\n    }\n    if (odd === 1) {\n      nodes[i] = pNodes[i << 1];\n    }\n    odd = size & 1;\n    size = size + 1 >> 1;\n    pNodes = [...nodes];\n  }\n  return nodesList;\n}\n__name(constructTree, \"constructTree\");\nfunction calcRoot(data) {\n  if (!data.length) {\n    return EMPTY;\n  }\n  const nodes = [];\n  for (let i = 0; i < data.length; i += 1) {\n    const hashed = hashLeaf(data[i]);\n    nodes.push(new node_default(-1, -1, -1, hashed, data[i]));\n  }\n  let pNodes = nodes;\n  let size = nodes.length + 1 >> 1;\n  let odd = nodes.length & 1;\n  while (true) {\n    let i = 0;\n    for (; i < size - odd; i += 1) {\n      const j = i << 1;\n      const hashed = hashNode(pNodes[j].hash, pNodes[j + 1].hash);\n      nodes[i] = new node_default(pNodes[j].index, pNodes[j + 1].index, -1, hashed, \"\");\n    }\n    if (odd === 1) {\n      nodes[i] = pNodes[i << 1];\n    }\n    if (size === 1) {\n      break;\n    }\n    odd = size & 1;\n    size = size + 1 >> 1;\n    pNodes = nodes;\n  }\n  return nodes[0].hash;\n}\n__name(calcRoot, \"calcRoot\");\nfunction getProof(nodes, id) {\n  const proof = [];\n  for (let prev = id, cur = nodes[id].parent; cur !== -1; prev = cur, cur = nodes[cur].parent) {\n    if (nodes[cur].left === prev) {\n      proof.push(nodes[nodes[cur].right].hash);\n    } else {\n      proof.push(nodes[nodes[cur].left].hash);\n    }\n  }\n  return proof;\n}\n__name(getProof, \"getProof\");\n\n// src/sparse/sparseMerkleTree.ts\nimport { hash as hash4 } from \"@fuel-ts/hasher\";\n\n// src/sparse/proofs.ts\nimport { hash as hash3 } from \"@fuel-ts/hasher\";\n\n// src/sparse/treeHasher.ts\nimport { hash as hash2 } from \"@fuel-ts/hasher\";\nvar leafPrefix = \"0x00\";\nvar nodePrefix = \"0x01\";\nfunction hashLeaf2(key, data) {\n  const value = \"0x00\".concat(key.slice(2)).concat(hash2(data).slice(2));\n  return [hash2(value), value];\n}\n__name(hashLeaf2, \"hashLeaf\");\nfunction hashNode2(left, right) {\n  const value = \"0x01\".concat(left.slice(2)).concat(right.slice(2));\n  return [hash2(value), value];\n}\n__name(hashNode2, \"hashNode\");\nfunction parseLeaf(data) {\n  const len = nodePrefix.length;\n  return [\"0x\".concat(data.slice(len, len + 64)), \"0x\".concat(data.slice(len + 64))];\n}\n__name(parseLeaf, \"parseLeaf\");\nfunction parseNode(data) {\n  const len = nodePrefix.length;\n  return [\"0x\".concat(data.slice(len, len + 64)), \"0x\".concat(data.slice(len + 64))];\n}\n__name(parseNode, \"parseNode\");\nfunction isLeaf(data) {\n  return data.slice(0, 4) === leafPrefix;\n}\n__name(isLeaf, \"isLeaf\");\n\n// src/sparse/types/sparseCompactMerkleProof.ts\nvar SparseCompactMerkleProof = class {\n  static {\n    __name(this, \"SparseCompactMerkleProof\");\n  }\n  SideNodes;\n  NonMembershipLeafData;\n  BitMask;\n  NumSideNodes;\n  SiblingData;\n  constructor(SideNodes, NonMembershipLeafData, Bitmask, NumSideNodes, SiblingData) {\n    this.SideNodes = SideNodes;\n    this.NonMembershipLeafData = NonMembershipLeafData;\n    this.BitMask = Bitmask;\n    this.NumSideNodes = NumSideNodes;\n    this.SiblingData = SiblingData;\n  }\n};\nvar sparseCompactMerkleProof_default = SparseCompactMerkleProof;\n\n// src/sparse/types/sparseMerkleProof.ts\nvar SparseMerkleProof = class {\n  static {\n    __name(this, \"SparseMerkleProof\");\n  }\n  SideNodes;\n  NonMembershipLeafData;\n  SiblingData;\n  constructor(sideNodes, NonMembershipLeafData, SiblingData) {\n    this.SideNodes = sideNodes;\n    this.NonMembershipLeafData = NonMembershipLeafData;\n    this.SiblingData = SiblingData;\n  }\n};\nvar sparseMerkleProof_default = SparseMerkleProof;\n\n// src/sparse/utils.ts\nvar ZERO = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nvar MAX_HEIGHT = 256;\nfunction getBitAtFromMSB(data, position) {\n  const slicedData = data.slice(2);\n  const byte = \"0x\".concat(\n    slicedData.slice(Math.floor(position / 8) * 2, Math.floor(position / 8) * 2 + 2)\n  );\n  const bits = Number(byte) & 1 << 8 - 1 - position % 8;\n  if (bits > 0) {\n    return 1;\n  }\n  return 0;\n}\n__name(getBitAtFromMSB, \"getBitAtFromMSB\");\nfunction reverseSideNodes(sideNodes) {\n  let left = 0;\n  let right = sideNodes.length - 1;\n  const reversedSideNodes = sideNodes;\n  while (left < right) {\n    [reversedSideNodes[left], reversedSideNodes[right]] = [\n      reversedSideNodes[right],\n      reversedSideNodes[left]\n    ];\n    left += 1;\n    right -= 1;\n  }\n  return reversedSideNodes;\n}\n__name(reverseSideNodes, \"reverseSideNodes\");\nfunction countCommonPrefix(data1, data2) {\n  let count = 0;\n  for (let i = 0; i < MAX_HEIGHT; i += 1) {\n    if (getBitAtFromMSB(data1, i) === getBitAtFromMSB(data2, i)) {\n      count += 1;\n    } else {\n      break;\n    }\n  }\n  return count;\n}\n__name(countCommonPrefix, \"countCommonPrefix\");\n\n// src/sparse/proofs.ts\nfunction compactProof(proof) {\n  const bitMask = [];\n  const compactedSideNodes = [];\n  let node;\n  for (let i = 0; i < proof.SideNodes.length; i += 1) {\n    node = proof.SideNodes[i];\n    if (node === ZERO) {\n      bitMask.push(0);\n    } else {\n      compactedSideNodes.push(node);\n      bitMask.push(1);\n    }\n  }\n  const compactedProof = new sparseCompactMerkleProof_default(\n    compactedSideNodes,\n    proof.NonMembershipLeafData,\n    bitMask,\n    proof.SideNodes.length,\n    proof.SiblingData\n  );\n  return compactedProof;\n}\n__name(compactProof, \"compactProof\");\n\n// src/sparse/sparseMerkleTree.ts\nvar SparseMerkleTree = class {\n  static {\n    __name(this, \"SparseMerkleTree\");\n  }\n  ms;\n  root;\n  constructor() {\n    const ms = {};\n    this.ms = ms;\n    this.root = ZERO;\n    this.ms[this.root] = ZERO;\n  }\n  get(key) {\n    return this.ms[key];\n  }\n  set(key, value) {\n    this.ms[key] = value;\n  }\n  setRoot(root) {\n    this.root = root;\n  }\n  sideNodesForRoot(key, root) {\n    const sideNodes = [];\n    if (root === ZERO) {\n      return [sideNodes, ZERO, \"\", \"\"];\n    }\n    let currentData = this.get(root);\n    if (isLeaf(currentData)) {\n      return [sideNodes, root, currentData, \"\"];\n    }\n    let leftNode;\n    let rightNode;\n    let nodeHash = \"\";\n    let sideNode = \"\";\n    for (let i = 0; i < MAX_HEIGHT; i += 1) {\n      [leftNode, rightNode] = parseNode(currentData);\n      if (getBitAtFromMSB(key, i) === 1) {\n        sideNode = leftNode;\n        nodeHash = rightNode;\n      } else {\n        sideNode = rightNode;\n        nodeHash = leftNode;\n      }\n      sideNodes.push(sideNode);\n      if (nodeHash === ZERO) {\n        currentData = \"\";\n        break;\n      }\n      currentData = this.get(nodeHash);\n      if (isLeaf(currentData)) {\n        break;\n      }\n    }\n    const siblingData = this.get(sideNode);\n    return [reverseSideNodes(sideNodes), nodeHash, currentData, siblingData];\n  }\n  deleteWithSideNodes(key, sideNodes, oldLeafHash, oldLeafData) {\n    if (oldLeafHash === ZERO) {\n      return this.root;\n    }\n    const [actualPath] = parseLeaf(oldLeafData);\n    if (actualPath !== key) {\n      return this.root;\n    }\n    let currentHash = \"\";\n    let currentData = \"\";\n    let sideNode = \"\";\n    let sideNodeValue = \"\";\n    let nonPlaceholderReached = false;\n    for (let i = 0; i < sideNodes.length; i += 1) {\n      if (sideNodes[i] === \"\") {\n        continue;\n      }\n      sideNode = sideNodes[i];\n      if (currentData === \"\") {\n        sideNodeValue = this.get(sideNode);\n        if (isLeaf(sideNodeValue)) {\n          currentHash = sideNode;\n          currentData = sideNode;\n          continue;\n        } else {\n          currentData = ZERO;\n          nonPlaceholderReached = true;\n        }\n      }\n      if (!nonPlaceholderReached && sideNode === ZERO) {\n        continue;\n      } else if (!nonPlaceholderReached) {\n        nonPlaceholderReached = true;\n      }\n      if (getBitAtFromMSB(key, sideNodes.length - 1 - i) === 1) {\n        [currentHash, currentData] = hashNode2(sideNode, currentData);\n      } else {\n        [currentHash, currentData] = hashNode2(currentData, sideNode);\n      }\n      this.set(currentHash, currentData);\n      currentData = currentHash;\n    }\n    if (currentHash === \"\") {\n      currentHash = ZERO;\n    }\n    return currentHash;\n  }\n  updateWithSideNodes(key, value, sideNodes, oldLeafHash, oldLeafData) {\n    let currentHash;\n    let currentData;\n    this.set(hash4(value), value);\n    [currentHash, currentData] = hashLeaf2(key, value);\n    this.set(currentHash, currentData);\n    currentData = currentHash;\n    let commonPrefixCount;\n    if (oldLeafHash === ZERO) {\n      commonPrefixCount = MAX_HEIGHT;\n    } else {\n      const [actualPath] = parseLeaf(oldLeafData);\n      commonPrefixCount = countCommonPrefix(key, actualPath);\n    }\n    if (commonPrefixCount !== MAX_HEIGHT) {\n      if (getBitAtFromMSB(key, commonPrefixCount) === 1) {\n        [currentHash, currentData] = hashNode2(oldLeafHash, currentData);\n      } else {\n        [currentHash, currentData] = hashNode2(currentData, oldLeafHash);\n      }\n      this.set(currentHash, currentData);\n      currentData = currentHash;\n    }\n    for (let i = 0; i < MAX_HEIGHT; i += 1) {\n      let sideNode;\n      const offsetOfSideNodes = MAX_HEIGHT - sideNodes.length;\n      if (i - offsetOfSideNodes < 0 || sideNodes[i - offsetOfSideNodes] === \"\") {\n        if (commonPrefixCount !== MAX_HEIGHT && commonPrefixCount > MAX_HEIGHT - 1 - i) {\n          sideNode = ZERO;\n        } else {\n          continue;\n        }\n      } else {\n        sideNode = sideNodes[i - offsetOfSideNodes];\n      }\n      if (getBitAtFromMSB(key, MAX_HEIGHT - 1 - i) === 1) {\n        [currentHash, currentData] = hashNode2(sideNode, currentData);\n      } else {\n        [currentHash, currentData] = hashNode2(currentData, sideNode);\n      }\n      this.set(currentHash, currentData);\n      currentData = currentHash;\n    }\n    return currentHash;\n  }\n  update(key, value) {\n    const [sideNodes, oldLeafHash, oldLeafData] = this.sideNodesForRoot(key, this.root);\n    const newRoot = this.updateWithSideNodes(key, value, sideNodes, oldLeafHash, oldLeafData);\n    this.setRoot(newRoot);\n  }\n  delete(key) {\n    const [sideNodes, oldLeafHash, oldLeafData] = this.sideNodesForRoot(key, this.root);\n    const newRoot = this.deleteWithSideNodes(key, sideNodes, oldLeafHash, oldLeafData);\n    this.setRoot(newRoot);\n  }\n  prove(key) {\n    const [sideNodes, leafHash, leafData, siblingData] = this.sideNodesForRoot(key, this.root);\n    const nonEmptySideNodes = [];\n    for (let i = 0; i < sideNodes.length; i += 1) {\n      if (sideNodes[i] !== \"\") {\n        nonEmptySideNodes.push(sideNodes[i]);\n      }\n    }\n    let nonMembershipLeafData = \"\";\n    if (leafHash !== ZERO) {\n      const [actualPath] = parseLeaf(leafData);\n      if (actualPath !== key) {\n        nonMembershipLeafData = leafData;\n      }\n    }\n    const proof = new sparseMerkleProof_default(nonEmptySideNodes, nonMembershipLeafData, siblingData);\n    return proof;\n  }\n  proveCompacted(key) {\n    const proof = this.prove(key);\n    const compactedProof = compactProof(proof);\n    return compactedProof;\n  }\n};\nexport {\n  SparseMerkleTree,\n  calcRoot,\n  constructTree,\n  getProof,\n  hashLeaf,\n  hashNode\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/providers/chains.ts\nvar CHAIN_IDS = {\n  eth: {\n    mainnet: 1,\n    sepolia: 11155111,\n    foundry: 31337\n  },\n  fuel: {\n    devnet: 0,\n    testnet: 0,\n    mainnet: 9889\n  }\n};\n\n// src/assets/utils/network.ts\nvar getDefaultChainId = /* @__PURE__ */ __name((networkType) => {\n  if (networkType === \"ethereum\") {\n    return CHAIN_IDS.eth.sepolia;\n  }\n  if (networkType === \"fuel\") {\n    return CHAIN_IDS.fuel.testnet;\n  }\n  return void 0;\n}, \"getDefaultChainId\");\nvar getAssetNetwork = /* @__PURE__ */ __name(({\n  asset,\n  chainId,\n  networkType\n}) => {\n  const network = asset.networks.find(\n    (item) => item.chainId === chainId && item.type === networkType\n  );\n  return network;\n}, \"getAssetNetwork\");\nvar getAssetWithNetwork = /* @__PURE__ */ __name(({\n  asset,\n  chainId,\n  networkType\n}) => {\n  const { networks: _, ...assetRest } = asset;\n  const chainIdToUse = chainId ?? getDefaultChainId(networkType);\n  if (chainIdToUse === void 0) {\n    return void 0;\n  }\n  const assetNetwork = getAssetNetwork({\n    asset,\n    chainId: chainIdToUse,\n    networkType\n  });\n  if (!assetNetwork) {\n    return void 0;\n  }\n  return {\n    ...assetRest,\n    ...assetNetwork\n  };\n}, \"getAssetWithNetwork\");\nvar getAssetEth = /* @__PURE__ */ __name((asset, chainId) => getAssetWithNetwork({\n  asset,\n  networkType: \"ethereum\",\n  chainId\n}), \"getAssetEth\");\nvar getAssetFuel = /* @__PURE__ */ __name((asset, chainId) => getAssetWithNetwork({\n  asset,\n  networkType: \"fuel\",\n  chainId\n}), \"getAssetFuel\");\n\n// src/assets/utils/url.ts\nvar DELIMITER_PATH = \"/\";\nvar trimRegex = /^\\/|\\/$/g;\nvar trimPath = /* @__PURE__ */ __name((path = \"\") => path.replace(trimRegex, \"\"), \"trimPath\");\nfunction urlJoin(baseUrl, ...paths) {\n  const hasBaseUrl = baseUrl !== null && baseUrl !== void 0;\n  const rootPath = baseUrl?.[0] === \"/\" && baseUrl.length > 1;\n  const allPaths = [baseUrl, ...paths].filter(Boolean).map(trimPath);\n  if (rootPath && hasBaseUrl) {\n    allPaths.unshift(\"\");\n  }\n  return allPaths.join(DELIMITER_PATH);\n}\n__name(urlJoin, \"urlJoin\");\n\n// src/assets/utils/resolveIconPaths.ts\nfunction resolveIconPaths(assets2, basePath = \"./\") {\n  return assets2.map((asset) => ({\n    ...asset,\n    icon: urlJoin(basePath, asset.icon)\n  }));\n}\n__name(resolveIconPaths, \"resolveIconPaths\");\n\n// src/assets/utils/fuelAssetsBaseUrl.ts\nvar fuelAssetsBaseUrl = \"https://assets.fuel.network/providers/\";\n\n// src/assets/assets.ts\nvar rawAssets = [\n  {\n    name: \"Ethereum\",\n    symbol: \"ETH\",\n    icon: \"eth.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.sepolia,\n        decimals: 18\n      },\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.foundry,\n        decimals: 18\n      },\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.devnet,\n        decimals: 9,\n        assetId: \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.testnet,\n        decimals: 9,\n        assetId: \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        decimals: 9,\n        assetId: \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n      }\n    ]\n  },\n  {\n    name: \"WETH\",\n    symbol: \"WETH\",\n    icon: \"weth.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xa38a5a8beeb08d95744bc7f58528073f4052b254def59eba20c99c202b5acaa3\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"weETH\",\n    symbol: \"weETH\",\n    icon: \"weETH.webp\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x239ed6e12b7ce4089ee245244e3bf906999a6429c2a9a445a1e1faf56914a4ab\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"rsETH\",\n    symbol: \"rsETH\",\n    icon: \"rsETH.webp\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xbae80f7fb8aa6b90d9b01ef726ec847cc4f59419c4d5f2ea88fec785d1b0e849\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"rETH\",\n    symbol: \"rETH\",\n    icon: \"reth.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xae78736cd615f374d3085123a210448e74fc6393\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xf3f9a0ed0ce8eac5f89d6b83e41b3848212d5b5f56108c54a205bb228ca30c16\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"wbETH\",\n    symbol: \"wbETH\",\n    icon: \"wbeth.png\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xa2E3356610840701BDf5611a53974510Ae27E2e1\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x7843c74bef935e837f2bcf67b5d64ecb46dd53ff86375530b0caf3699e8ffafe\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"rstETH\",\n    symbol: \"rstETH\",\n    icon: \"rstETH.webp\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x7a4EffD87C2f3C55CA251080b1343b605f327E3a\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x962792286fbc9b1d5860b4551362a12249362c21594c77abf4b3fe2bbe8d977a\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"amphrETH\",\n    symbol: \"amphrETH\",\n    icon: \"amphrETH.png\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x5fD13359Ba15A84B76f7F87568309040176167cd\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x05fc623e57bd7bc1258efa8e4f62b05af5471d73df6f2c2dc11ecc81134c4f36\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"Manta mBTC\",\n    symbol: \"Manta mBTC\",\n    icon: \"manta-mbtc.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x4041381e947CFD3D483d67a25C6aa9Dc924250c5\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xaf3111a248ff7a3238cdeea845bb2d43cf3835f1f6b8c9d28360728b55b9ce5b\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"Manta mETH\",\n    symbol: \"Manta mETH\",\n    icon: \"manta-meth.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x8CdF550C04Bc9B9F10938368349C9c8051A772b6\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xafd219f513317b1750783c6581f55530d6cf189a5863fd18bd1b3ffcec1714b4\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"Manta mUSD\",\n    symbol: \"Manta mUSD\",\n    icon: \"manta-musd.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x3f24E1d7a973867fC2A03fE199E5502514E0e11E\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x89cb9401e55d49c3269654dd1cdfb0e80e57823a4a7db98ba8fc5953b120fef4\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"pumpBTC\",\n    symbol: \"pumpBTC\",\n    icon: \"pumpbtc.webp\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xf469fbd2abcd6b9de8e169d128226c0fc90a012e\",\n        decimals: 8\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x0aa5eb2bb97ca915288b653a2529355d4dc66de2b37533213f0e4aeee3d3421f\",\n        decimals: 8\n      }\n    ]\n  },\n  {\n    name: \"FBTC\",\n    symbol: \"FBTC\",\n    icon: \"fbtc.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xc96de26018a54d51c097160568752c4e3bd6c364\",\n        decimals: 8\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xb5ecb0a1e08e2abbabf624ffea089df933376855f468ade35c6375b00c33996a\",\n        decimals: 8\n      }\n    ]\n  },\n  {\n    name: \"SolvBTC\",\n    symbol: \"SolvBTC\",\n    icon: \"solvBTC.webp\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x7a56e1c57c7475ccf742a1832b028f0456652f97\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x1186afea9affb88809c210e13e2330b5258c2cef04bb8fff5eff372b7bd3f40f\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"SolvBTC.BBN\",\n    symbol: \"SolvBTC.BBN\",\n    icon: \"SolvBTC.BBN.png\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xd9d920aa40f578ab794426f5c90f6c731d159def\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x7a4f087c957d30218223c2baaaa365355c9ca81b6ea49004cfb1590a5399216f\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"Mantle mETH\",\n    symbol: \"Mantle mETH\",\n    icon: \"mantle-meth.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x642a5db59ec323c2f846d4d4cf3e58d78aff64accf4f8f6455ba0aa3ef000a3b\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"sDAI\",\n    symbol: \"sDAI\",\n    icon: \"sdai.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x83f20f44975d03b1b09e64809b757c47f942beea\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x9e46f919fbf978f3cad7cd34cca982d5613af63ff8aab6c379e4faa179552958\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"USDT\",\n    symbol: \"USDT\",\n    icon: \"usdt.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n        decimals: 6\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xa0265fb5c32f6e8db3197af3c7eb05c48ae373605b8165b6f4a51c5b0ba4812e\",\n        decimals: 6\n      }\n    ]\n  },\n  {\n    name: \"USDC\",\n    symbol: \"USDC\",\n    icon: \"usdc.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n        decimals: 6\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x286c479da40dc953bddc3bb4c453b608bba2e0ac483b077bd475174115395e6b\",\n        decimals: 6\n      }\n    ]\n  },\n  {\n    name: \"USDe\",\n    symbol: \"USDe\",\n    icon: \"USDe.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x4c9edd5852cd905f086c759e8383e09bff1e68b3\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xb6133b2ef9f6153eb869125d23dcf20d1e735331b5e41b15a6a7a6cec70e8651\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"sUSDe\",\n    symbol: \"sUSDe\",\n    icon: \"sUSDe.webp\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x9d39a5de30e57443bff2a8307a4256c8797a3497\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xd05563025104fc36496c15c7021ad6b31034b0e89a356f4f818045d1f48808bc\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"rsUSDe\",\n    symbol: \"rsUSDe\",\n    icon: \"rsUSDe.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x82f5104b23FF2FA54C2345F821dAc9369e9E0B26\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x78d4522ec607f6e8efb66ea49439d1ee48623cf763f9688a8eada025def033d9\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"wstETH\",\n    symbol: \"wstETH\",\n    icon: \"wsteth.svg\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x1a7815cc9f75db5c24a5b0814bfb706bb9fe485333e98254015de8f48f84c67b\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"ezETH\",\n    symbol: \"ezETH\",\n    icon: \"ezeth.webp\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xbf5495Efe5DB9ce00f80364C8B423567e58d2110\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x91b3559edb2619cde8ffb2aa7b3c3be97efd794ea46700db7092abeee62281b0\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"pzETH\",\n    symbol: \"pzETH\",\n    icon: \"pzETH.webp\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x8c9532a60e0e7c6bbd2b2c1303f63ace1c3e9811\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x1493d4ec82124de8f9b625682de69dcccda79e882b89a55a8c737b12de67bd68\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"Re7LRT\",\n    symbol: \"Re7LRT\",\n    icon: \"Re7LRT.png\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0x84631c0d0081FDe56DeB72F6DE77abBbF6A9f93a\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0xf2fc648c23a5db24610a1cf696acc4f0f6d9a7d6028dd9944964ab23f6e35995\",\n        decimals: 9\n      }\n    ]\n  },\n  {\n    name: \"steakLRT\",\n    symbol: \"steakLRT\",\n    icon: \"steakLRT.png\",\n    networks: [\n      {\n        type: \"ethereum\",\n        chainId: CHAIN_IDS.eth.mainnet,\n        address: \"0xBEEF69Ac7870777598A04B2bd4771c71212E6aBc\",\n        decimals: 18\n      },\n      {\n        type: \"fuel\",\n        chainId: CHAIN_IDS.fuel.mainnet,\n        contractId: \"0x4ea6ccef1215d9479f1024dff70fc055ca538215d2c8c348beddffd54583d0e8\",\n        assetId: \"0x4fc8ac9f101df07e2c2dec4a53c8c42c439bdbe5e36ea2d863a61ff60afafc30\",\n        decimals: 9\n      }\n    ]\n  }\n];\nvar assets = resolveIconPaths(rawAssets, fuelAssetsBaseUrl);\n\n// src/assets/asset-api.ts\nvar networks = {\n  mainnet: \"https://mainnet-explorer.fuel.network\",\n  testnet: \"https://explorer-indexer-testnet.fuel.network\"\n};\nvar request = /* @__PURE__ */ __name(async (url, slug) => {\n  const response = await fetch(`${url}${slug}`, {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"Accept\": \"application/json\"\n    }\n  });\n  try {\n    return await response.json();\n  } catch (error) {\n    return null;\n  }\n}, \"request\");\nvar buildQueryString = /* @__PURE__ */ __name((parameters) => {\n  const query = new URLSearchParams();\n  Object.entries(parameters).forEach(([key, value]) => {\n    query.set(key, value.toString());\n  });\n  return query.size > 0 ? `?${query.toString()}` : \"\";\n}, \"buildQueryString\");\nvar getAssetById = /* @__PURE__ */ __name((opts) => {\n  const { network = \"mainnet\", assetId } = opts;\n  const url = networks[network];\n  return request(url, `/assets/${assetId}`);\n}, \"getAssetById\");\nvar getAssetsByOwner = /* @__PURE__ */ __name(async (opts) => {\n  const { network = \"mainnet\", owner, pagination = { last: 10 } } = opts;\n  const url = networks[network];\n  const { last } = pagination;\n  const queryString = buildQueryString({ last });\n  const response = await request(url, `/accounts/${owner}/assets${queryString}`);\n  if (!response) {\n    return { data: [], pageInfo: { count: 0 } };\n  }\n  return response;\n}, \"getAssetsByOwner\");\n\n// src/account.ts\nimport { UTXO_ID_LEN as UTXO_ID_LEN3 } from \"@fuel-ts/abi-coder\";\nimport { Address as Address4 } from \"@fuel-ts/address\";\nimport { randomBytes as randomBytes2 } from \"@fuel-ts/crypto\";\nimport { ErrorCode as ErrorCode19, FuelError as FuelError21 } from \"@fuel-ts/errors\";\nimport { bn as bn21 } from \"@fuel-ts/math\";\nimport { InputType as InputType8, OutputType as OutputType9 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify17, hexlify as hexlify18, isDefined as isDefined4 } from \"@fuel-ts/utils\";\nimport { clone as clone9 } from \"ramda\";\n\n// src/providers/coin-quantity.ts\nimport { bn } from \"@fuel-ts/math\";\nimport { hexlify } from \"@fuel-ts/utils\";\nvar coinQuantityfy = /* @__PURE__ */ __name((coinQuantityLike) => {\n  let assetId;\n  let amount;\n  let max;\n  if (Array.isArray(coinQuantityLike)) {\n    amount = coinQuantityLike[0];\n    assetId = coinQuantityLike[1];\n    max = coinQuantityLike[2] ?? void 0;\n  } else {\n    amount = coinQuantityLike.amount;\n    assetId = coinQuantityLike.assetId;\n    max = coinQuantityLike.max ?? void 0;\n  }\n  return {\n    assetId: hexlify(assetId),\n    amount: bn(amount),\n    max: max ? bn(max) : void 0\n  };\n}, \"coinQuantityfy\");\nvar addAmountToCoinQuantities = /* @__PURE__ */ __name((params) => {\n  const { amount, assetId } = params;\n  const coinQuantities = [...params.coinQuantities];\n  const assetIdx = coinQuantities.findIndex((coinQuantity) => coinQuantity.assetId === assetId);\n  if (assetIdx !== -1) {\n    coinQuantities[assetIdx].amount = coinQuantities[assetIdx].amount.add(amount);\n  } else {\n    coinQuantities.push({ assetId, amount });\n  }\n  return coinQuantities;\n}, \"addAmountToCoinQuantities\");\n\n// src/providers/provider.ts\nimport { Address as Address2, isB256 } from \"@fuel-ts/address\";\nimport { ErrorCode as ErrorCode17, FuelError as FuelError19 } from \"@fuel-ts/errors\";\nimport { bn as bn18 } from \"@fuel-ts/math\";\nimport { InputMessageCoder as InputMessageCoder2, TransactionCoder as TransactionCoder7, TransactionType as TransactionType11 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify13, hexlify as hexlify17, DateTime as DateTime2, isDefined as isDefined3, sleep as sleep2 } from \"@fuel-ts/utils\";\nimport { checkFuelCoreVersionCompatibility, versions } from \"@fuel-ts/versions\";\nimport { GraphQLClient } from \"graphql-request\";\nimport gql2 from \"graphql-tag\";\nimport { clone as clone8 } from \"ramda\";\n\n// src/providers/__generated__/operations.ts\nimport gql from \"graphql-tag\";\nvar InputCoinFragmentDoc = gql`\n    fragment InputCoinFragment on InputCoin {\n  type: __typename\n  utxoId\n  owner\n  amount\n  assetId\n  txPointer\n  coinWitnessIndex: witnessIndex\n  predicateGasUsed\n  predicate\n  predicateData\n}\n    `;\nvar InputMessageFragmentDoc = gql`\n    fragment InputMessageFragment on InputMessage {\n  type: __typename\n  sender\n  recipient\n  amount\n  nonce\n  messageWitnessIndex: witnessIndex\n  predicateGasUsed\n  data\n  predicate\n  predicateData\n}\n    `;\nvar InputContractFragmentDoc = gql`\n    fragment InputContractFragment on InputContract {\n  type: __typename\n  utxoId\n  balanceRoot\n  stateRoot\n  txPointer\n  contractId\n}\n    `;\nvar OutputCoinFragmentDoc = gql`\n    fragment OutputCoinFragment on CoinOutput {\n  type: __typename\n  to\n  amount\n  assetId\n}\n    `;\nvar OutputContractFragmentDoc = gql`\n    fragment OutputContractFragment on ContractOutput {\n  type: __typename\n  inputIndex\n  balanceRoot\n  stateRoot\n}\n    `;\nvar OutputChangeFragmentDoc = gql`\n    fragment OutputChangeFragment on ChangeOutput {\n  type: __typename\n  to\n  amount\n  assetId\n}\n    `;\nvar OutputVariableFragmentDoc = gql`\n    fragment OutputVariableFragment on VariableOutput {\n  type: __typename\n  to\n  amount\n  assetId\n}\n    `;\nvar OutputContractCreatedFragmentDoc = gql`\n    fragment OutputContractCreatedFragment on ContractCreated {\n  type: __typename\n  contract\n  stateRoot\n}\n    `;\nvar SubmittedStatusFragmentDoc = gql`\n    fragment SubmittedStatusFragment on SubmittedStatus {\n  type: __typename\n  time\n}\n    `;\nvar ReceiptFragmentDoc = gql`\n    fragment receiptFragment on Receipt {\n  id\n  pc\n  is\n  to\n  toAddress\n  amount\n  assetId\n  gas\n  param1\n  param2\n  val\n  ptr\n  digest\n  reason\n  ra\n  rb\n  rc\n  rd\n  len\n  receiptType\n  result\n  gasUsed\n  data\n  sender\n  recipient\n  nonce\n  contractId\n  subId\n}\n    `;\nvar SuccessStatusFragmentDoc = gql`\n    fragment SuccessStatusFragment on SuccessStatus {\n  type: __typename\n  time\n  programState {\n    returnType\n    data\n  }\n  receipts {\n    ...receiptFragment\n  }\n  totalGas\n  totalFee\n}\n    ${ReceiptFragmentDoc}`;\nvar SuccessStatusWithBlockIdFragmentDoc = gql`\n    fragment SuccessStatusWithBlockIdFragment on SuccessStatus {\n  ...SuccessStatusFragment\n  block {\n    id\n  }\n}\n    ${SuccessStatusFragmentDoc}`;\nvar MalleableTransactionFieldsFragmentDoc = gql`\n    fragment malleableTransactionFieldsFragment on Transaction {\n  receiptsRoot\n  inputs {\n    type: __typename\n    ... on InputCoin {\n      txPointer\n    }\n    ... on InputContract {\n      txPointer\n    }\n  }\n  outputs {\n    type: __typename\n    ... on CoinOutput {\n      to\n      amount\n      assetId\n    }\n    ... on ContractOutput {\n      inputIndex\n      balanceRoot\n      stateRoot\n    }\n    ... on ChangeOutput {\n      to\n      amount\n      assetId\n    }\n    ... on VariableOutput {\n      to\n      amount\n      assetId\n    }\n    ... on ContractCreated {\n      contract\n      stateRoot\n    }\n  }\n}\n    `;\nvar FailureStatusFragmentDoc = gql`\n    fragment FailureStatusFragment on FailureStatus {\n  type: __typename\n  totalGas\n  totalFee\n  time\n  reason\n  receipts {\n    ...receiptFragment\n  }\n}\n    ${ReceiptFragmentDoc}`;\nvar FailureStatusWithBlockIdFragmentDoc = gql`\n    fragment FailureStatusWithBlockIdFragment on FailureStatus {\n  ...FailureStatusFragment\n  block {\n    id\n  }\n}\n    ${FailureStatusFragmentDoc}`;\nvar SqueezedOutStatusFragmentDoc = gql`\n    fragment SqueezedOutStatusFragment on SqueezedOutStatus {\n  type: __typename\n  reason\n}\n    `;\nvar PreconfirmationSuccessStatusFragmentDoc = gql`\n    fragment PreconfirmationSuccessStatusFragment on PreconfirmationSuccessStatus {\n  type: __typename\n  totalGas\n  totalFee\n  resolvedOutputs {\n    utxoId\n    output {\n      type: __typename\n      ... on CoinOutput {\n        to\n        amount\n        assetId\n      }\n      ... on ContractOutput {\n        inputIndex\n        balanceRoot\n        stateRoot\n      }\n      ... on ChangeOutput {\n        to\n        amount\n        assetId\n      }\n      ... on VariableOutput {\n        to\n        amount\n        assetId\n      }\n      ... on ContractCreated {\n        contract\n        stateRoot\n      }\n    }\n  }\n  preconfirmationReceipts: receipts {\n    ...receiptFragment\n  }\n}\n    ${ReceiptFragmentDoc}`;\nvar PreconfirmationFailureStatusFragmentDoc = gql`\n    fragment PreconfirmationFailureStatusFragment on PreconfirmationFailureStatus {\n  type: __typename\n  reason\n  totalGas\n  totalFee\n  resolvedOutputs {\n    utxoId\n    output {\n      type: __typename\n      ... on CoinOutput {\n        to\n        amount\n        assetId\n      }\n      ... on ContractOutput {\n        inputIndex\n        balanceRoot\n        stateRoot\n      }\n      ... on ChangeOutput {\n        to\n        amount\n        assetId\n      }\n      ... on VariableOutput {\n        to\n        amount\n        assetId\n      }\n      ... on ContractCreated {\n        contract\n        stateRoot\n      }\n    }\n  }\n  preconfirmationReceipts: receipts {\n    ...receiptFragment\n  }\n}\n    ${ReceiptFragmentDoc}`;\nvar TransactionStatusSubscriptionFragmentDoc = gql`\n    fragment transactionStatusSubscriptionFragment on TransactionStatus {\n  ... on SubmittedStatus {\n    ...SubmittedStatusFragment\n  }\n  ... on SuccessStatus {\n    ...SuccessStatusWithBlockIdFragment\n    transaction {\n      ...malleableTransactionFieldsFragment\n    }\n  }\n  ... on FailureStatus {\n    ...FailureStatusWithBlockIdFragment\n    transaction {\n      ...malleableTransactionFieldsFragment\n    }\n  }\n  ... on SqueezedOutStatus {\n    ...SqueezedOutStatusFragment\n  }\n  ... on PreconfirmationSuccessStatus {\n    ...PreconfirmationSuccessStatusFragment\n  }\n  ... on PreconfirmationFailureStatus {\n    ...PreconfirmationFailureStatusFragment\n  }\n}\n    ${SubmittedStatusFragmentDoc}\n${SuccessStatusWithBlockIdFragmentDoc}\n${MalleableTransactionFieldsFragmentDoc}\n${FailureStatusWithBlockIdFragmentDoc}\n${SqueezedOutStatusFragmentDoc}\n${PreconfirmationSuccessStatusFragmentDoc}\n${PreconfirmationFailureStatusFragmentDoc}`;\nvar TransactionStatusFragmentDoc = gql`\n    fragment transactionStatusFragment on TransactionStatus {\n  ... on SubmittedStatus {\n    ...SubmittedStatusFragment\n  }\n  ... on SuccessStatus {\n    ...SuccessStatusFragment\n  }\n  ... on FailureStatus {\n    ...FailureStatusFragment\n  }\n  ... on SqueezedOutStatus {\n    ...SqueezedOutStatusFragment\n  }\n}\n    ${SubmittedStatusFragmentDoc}\n${SuccessStatusFragmentDoc}\n${FailureStatusFragmentDoc}\n${SqueezedOutStatusFragmentDoc}`;\nvar TransactionFragmentDoc = gql`\n    fragment transactionFragment on Transaction {\n  id\n  rawPayload\n  status {\n    ...transactionStatusFragment\n  }\n}\n    ${TransactionStatusFragmentDoc}`;\nvar TransactionRawPayloadFragmentDoc = gql`\n    fragment transactionRawPayloadFragment on Transaction {\n  id\n  rawPayload\n}\n    `;\nvar InputEstimatePredicatesFragmentDoc = gql`\n    fragment inputEstimatePredicatesFragment on Input {\n  ... on InputCoin {\n    predicateGasUsed\n  }\n  ... on InputMessage {\n    predicateGasUsed\n  }\n}\n    `;\nvar TransactionEstimatePredicatesFragmentDoc = gql`\n    fragment transactionEstimatePredicatesFragment on Transaction {\n  inputs {\n    ...inputEstimatePredicatesFragment\n  }\n}\n    ${InputEstimatePredicatesFragmentDoc}`;\nvar DryRunFailureAssembleTxFragmentDoc = gql`\n    fragment dryRunFailureAssembleTxFragment on DryRunFailureStatus {\n  type: __typename\n  reason\n  receipts {\n    ...receiptFragment\n  }\n}\n    ${ReceiptFragmentDoc}`;\nvar DryRunSuccessAssembleTxFragmentDoc = gql`\n    fragment dryRunSuccessAssembleTxFragment on DryRunSuccessStatus {\n  type: __typename\n  receipts {\n    ...receiptFragment\n  }\n}\n    ${ReceiptFragmentDoc}`;\nvar DryRunFailureStatusFragmentDoc = gql`\n    fragment dryRunFailureStatusFragment on DryRunFailureStatus {\n  type: __typename\n  totalGas\n  totalFee\n  reason\n  programState {\n    returnType\n    data\n  }\n}\n    `;\nvar DryRunSuccessStatusFragmentDoc = gql`\n    fragment dryRunSuccessStatusFragment on DryRunSuccessStatus {\n  type: __typename\n  totalGas\n  totalFee\n  programState {\n    returnType\n    data\n  }\n}\n    `;\nvar DryRunTransactionStatusFragmentDoc = gql`\n    fragment dryRunTransactionStatusFragment on DryRunTransactionStatus {\n  ... on DryRunFailureStatus {\n    ...dryRunFailureStatusFragment\n  }\n  ... on DryRunSuccessStatus {\n    ...dryRunSuccessStatusFragment\n  }\n}\n    ${DryRunFailureStatusFragmentDoc}\n${DryRunSuccessStatusFragmentDoc}`;\nvar DryRunTransactionExecutionStatusFragmentDoc = gql`\n    fragment dryRunTransactionExecutionStatusFragment on DryRunTransactionExecutionStatus {\n  id\n  status {\n    ...dryRunTransactionStatusFragment\n  }\n  receipts {\n    ...receiptFragment\n  }\n}\n    ${DryRunTransactionStatusFragmentDoc}\n${ReceiptFragmentDoc}`;\nvar BlockFragmentDoc = gql`\n    fragment blockFragment on Block {\n  id\n  height\n  header {\n    time\n    daHeight\n    stateTransitionBytecodeVersion\n    transactionsCount\n    transactionsRoot\n    messageOutboxRoot\n    eventInboxRoot\n    prevRoot\n    applicationHash\n  }\n  transactions {\n    id\n  }\n}\n    `;\nvar CoinFragmentDoc = gql`\n    fragment coinFragment on Coin {\n  type: __typename\n  utxoId\n  amount\n  assetId\n  blockCreated\n  txCreatedIdx\n}\n    `;\nvar MessageCoinFragmentDoc = gql`\n    fragment messageCoinFragment on MessageCoin {\n  type: __typename\n  sender\n  recipient\n  nonce\n  amount\n  assetId\n  daHeight\n}\n    `;\nvar MessageFragmentDoc = gql`\n    fragment messageFragment on Message {\n  amount\n  sender\n  recipient\n  data\n  daHeight\n}\n    `;\nvar GetMessageFragmentDoc = gql`\n    fragment getMessageFragment on Message {\n  ...messageFragment\n  nonce\n}\n    ${MessageFragmentDoc}`;\nvar MessageProofFragmentDoc = gql`\n    fragment messageProofFragment on MessageProof {\n  messageProof {\n    proofSet\n    proofIndex\n  }\n  blockProof {\n    proofSet\n    proofIndex\n  }\n  messageBlockHeader {\n    version\n    id\n    daHeight\n    consensusParametersVersion\n    stateTransitionBytecodeVersion\n    transactionsCount\n    messageReceiptCount\n    transactionsRoot\n    messageOutboxRoot\n    eventInboxRoot\n    height\n    prevRoot\n    time\n    applicationHash\n  }\n  commitBlockHeader {\n    version\n    id\n    daHeight\n    consensusParametersVersion\n    stateTransitionBytecodeVersion\n    transactionsCount\n    messageReceiptCount\n    transactionsRoot\n    messageOutboxRoot\n    eventInboxRoot\n    height\n    prevRoot\n    time\n    applicationHash\n  }\n  sender\n  recipient\n  amount\n  data\n}\n    `;\nvar TxParametersFragmentDoc = gql`\n    fragment TxParametersFragment on TxParameters {\n  version\n  maxInputs\n  maxOutputs\n  maxWitnesses\n  maxGasPerTx\n  maxSize\n  maxBytecodeSubsections\n}\n    `;\nvar PredicateParametersFragmentDoc = gql`\n    fragment PredicateParametersFragment on PredicateParameters {\n  version\n  maxPredicateLength\n  maxPredicateDataLength\n  maxGasPerPredicate\n  maxMessageDataLength\n}\n    `;\nvar ScriptParametersFragmentDoc = gql`\n    fragment ScriptParametersFragment on ScriptParameters {\n  version\n  maxScriptLength\n  maxScriptDataLength\n}\n    `;\nvar ContractParametersFragmentDoc = gql`\n    fragment ContractParametersFragment on ContractParameters {\n  version\n  contractMaxSize\n  maxStorageSlots\n}\n    `;\nvar FeeParametersFragmentDoc = gql`\n    fragment FeeParametersFragment on FeeParameters {\n  version\n  gasPriceFactor\n  gasPerByte\n}\n    `;\nvar DependentCostFragmentDoc = gql`\n    fragment DependentCostFragment on DependentCost {\n  ... on LightOperation {\n    type: __typename\n    base\n    unitsPerGas\n  }\n  ... on HeavyOperation {\n    type: __typename\n    base\n    gasPerUnit\n  }\n}\n    `;\nvar GasCostsFragmentDoc = gql`\n    fragment GasCostsFragment on GasCosts {\n  contractRoot {\n    ...DependentCostFragment\n  }\n  stateRoot {\n    ...DependentCostFragment\n  }\n  vmInitialization {\n    ...DependentCostFragment\n  }\n  s256 {\n    ...DependentCostFragment\n  }\n  ecr1\n  newStoragePerByte\n}\n    ${DependentCostFragmentDoc}`;\nvar ConsensusParametersFragmentDoc = gql`\n    fragment consensusParametersFragment on ConsensusParameters {\n  version\n  txParams {\n    ...TxParametersFragment\n  }\n  predicateParams {\n    ...PredicateParametersFragment\n  }\n  scriptParams {\n    ...ScriptParametersFragment\n  }\n  contractParams {\n    ...ContractParametersFragment\n  }\n  feeParams {\n    ...FeeParametersFragment\n  }\n  gasCosts {\n    ...GasCostsFragment\n  }\n  baseAssetId\n  chainId\n}\n    ${TxParametersFragmentDoc}\n${PredicateParametersFragmentDoc}\n${ScriptParametersFragmentDoc}\n${ContractParametersFragmentDoc}\n${FeeParametersFragmentDoc}\n${GasCostsFragmentDoc}`;\nvar ChainInfoFragmentDoc = gql`\n    fragment chainInfoFragment on ChainInfo {\n  name\n  daHeight\n  consensusParameters {\n    ...consensusParametersFragment\n  }\n  latestBlock {\n    header {\n      consensusParametersVersion\n    }\n  }\n}\n    ${ConsensusParametersFragmentDoc}`;\nvar ContractBalanceFragmentDoc = gql`\n    fragment contractBalanceFragment on ContractBalance {\n  contract\n  amount\n  assetId\n}\n    `;\nvar PageInfoFragmentDoc = gql`\n    fragment pageInfoFragment on PageInfo {\n  hasPreviousPage\n  hasNextPage\n  startCursor\n  endCursor\n}\n    `;\nvar NodeInfoFragmentDoc = gql`\n    fragment nodeInfoFragment on NodeInfo {\n  utxoValidation\n  vmBacktrace\n  maxTx\n  maxDepth\n  nodeVersion\n  indexation {\n    balances\n    coinsToSpend\n    assetMetadata\n  }\n}\n    `;\nvar RelayedTransactionStatusFragmentDoc = gql`\n    fragment relayedTransactionStatusFragment on RelayedTransactionStatus {\n  ... on RelayedTransactionFailed {\n    blockHeight\n    failure\n  }\n}\n    `;\nvar GetVersionDocument = gql`\n    query getVersion {\n  nodeInfo {\n    nodeVersion\n  }\n}\n    `;\nvar GetNodeInfoDocument = gql`\n    query getNodeInfo {\n  nodeInfo {\n    ...nodeInfoFragment\n  }\n}\n    ${NodeInfoFragmentDoc}`;\nvar GetChainDocument = gql`\n    query getChain {\n  chain {\n    ...chainInfoFragment\n  }\n}\n    ${ChainInfoFragmentDoc}`;\nvar GetChainAndNodeInfoDocument = gql`\n    query getChainAndNodeInfo {\n  chain {\n    ...chainInfoFragment\n  }\n  nodeInfo {\n    ...nodeInfoFragment\n  }\n}\n    ${ChainInfoFragmentDoc}\n${NodeInfoFragmentDoc}`;\nvar GetTransactionDocument = gql`\n    query getTransaction($transactionId: TransactionId!) {\n  transaction(id: $transactionId) {\n    ...transactionFragment\n  }\n}\n    ${TransactionFragmentDoc}`;\nvar GetTransactionWithReceiptsDocument = gql`\n    query getTransactionWithReceipts($transactionId: TransactionId!) {\n  transaction(id: $transactionId) {\n    id\n    rawPayload\n    status {\n      ... on SubmittedStatus {\n        ...SubmittedStatusFragment\n      }\n      ... on SuccessStatus {\n        ...SuccessStatusWithBlockIdFragment\n      }\n      ... on FailureStatus {\n        ...FailureStatusWithBlockIdFragment\n      }\n      ... on SqueezedOutStatus {\n        ...SqueezedOutStatusFragment\n      }\n      ... on PreconfirmationSuccessStatus {\n        ...PreconfirmationSuccessStatusFragment\n      }\n      ... on PreconfirmationFailureStatus {\n        ...PreconfirmationFailureStatusFragment\n      }\n    }\n  }\n}\n    ${SubmittedStatusFragmentDoc}\n${SuccessStatusWithBlockIdFragmentDoc}\n${FailureStatusWithBlockIdFragmentDoc}\n${SqueezedOutStatusFragmentDoc}\n${PreconfirmationSuccessStatusFragmentDoc}\n${PreconfirmationFailureStatusFragmentDoc}`;\nvar GetTransactionsDocument = gql`\n    query getTransactions($after: String, $before: String, $first: Int, $last: Int) {\n  transactions(after: $after, before: $before, first: $first, last: $last) {\n    edges {\n      node {\n        rawPayload\n      }\n    }\n    pageInfo {\n      ...pageInfoFragment\n    }\n  }\n}\n    ${PageInfoFragmentDoc}`;\nvar GetTransactionsByOwnerDocument = gql`\n    query getTransactionsByOwner($owner: Address!, $after: String, $before: String, $first: Int, $last: Int) {\n  transactionsByOwner(\n    owner: $owner\n    after: $after\n    before: $before\n    first: $first\n    last: $last\n  ) {\n    pageInfo {\n      ...pageInfoFragment\n    }\n    edges {\n      node {\n        ...transactionFragment\n      }\n    }\n  }\n}\n    ${PageInfoFragmentDoc}\n${TransactionFragmentDoc}`;\nvar EstimatePredicatesDocument = gql`\n    query estimatePredicates($encodedTransaction: HexString!) {\n  estimatePredicates(tx: $encodedTransaction) {\n    ...transactionEstimatePredicatesFragment\n  }\n}\n    ${TransactionEstimatePredicatesFragmentDoc}`;\nvar EstimatePredicatesAndGasPriceDocument = gql`\n    query estimatePredicatesAndGasPrice($encodedTransaction: HexString!, $blockHorizon: U32!) {\n  estimatePredicates(tx: $encodedTransaction) {\n    ...transactionEstimatePredicatesFragment\n  }\n  estimateGasPrice(blockHorizon: $blockHorizon) {\n    gasPrice\n  }\n}\n    ${TransactionEstimatePredicatesFragmentDoc}`;\nvar GetLatestBlockDocument = gql`\n    query getLatestBlock {\n  chain {\n    latestBlock {\n      ...blockFragment\n    }\n  }\n}\n    ${BlockFragmentDoc}`;\nvar GetLatestBlockHeightDocument = gql`\n    query getLatestBlockHeight {\n  chain {\n    latestBlock {\n      height\n    }\n  }\n}\n    `;\nvar GetBlockDocument = gql`\n    query getBlock($blockId: BlockId, $height: U32) {\n  block(id: $blockId, height: $height) {\n    ...blockFragment\n  }\n}\n    ${BlockFragmentDoc}`;\nvar GetBlockWithTransactionsDocument = gql`\n    query getBlockWithTransactions($blockId: BlockId, $blockHeight: U32) {\n  block(id: $blockId, height: $blockHeight) {\n    ...blockFragment\n    transactions {\n      ...transactionRawPayloadFragment\n    }\n  }\n}\n    ${BlockFragmentDoc}\n${TransactionRawPayloadFragmentDoc}`;\nvar GetBlocksDocument = gql`\n    query getBlocks($after: String, $before: String, $first: Int, $last: Int) {\n  blocks(after: $after, before: $before, first: $first, last: $last) {\n    pageInfo {\n      ...pageInfoFragment\n    }\n    edges {\n      node {\n        ...blockFragment\n      }\n    }\n  }\n}\n    ${PageInfoFragmentDoc}\n${BlockFragmentDoc}`;\nvar GetCoinDocument = gql`\n    query getCoin($coinId: UtxoId!) {\n  coin(utxoId: $coinId) {\n    ...coinFragment\n    owner\n  }\n}\n    ${CoinFragmentDoc}`;\nvar GetCoinsDocument = gql`\n    query getCoins($filter: CoinFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {\n  coins(\n    filter: $filter\n    after: $after\n    before: $before\n    first: $first\n    last: $last\n  ) {\n    pageInfo {\n      ...pageInfoFragment\n    }\n    edges {\n      node {\n        ...coinFragment\n      }\n    }\n  }\n}\n    ${PageInfoFragmentDoc}\n${CoinFragmentDoc}`;\nvar GetCoinsToSpendDocument = gql`\n    query getCoinsToSpend($owner: Address!, $queryPerAsset: [SpendQueryElementInput!]!, $excludedIds: ExcludeInput) {\n  coinsToSpend(\n    owner: $owner\n    queryPerAsset: $queryPerAsset\n    excludedIds: $excludedIds\n  ) {\n    ...coinFragment\n    ...messageCoinFragment\n  }\n}\n    ${CoinFragmentDoc}\n${MessageCoinFragmentDoc}`;\nvar GetContractDocument = gql`\n    query getContract($contractId: ContractId!) {\n  contract(id: $contractId) {\n    bytecode\n    id\n  }\n}\n    `;\nvar GetContractBalanceDocument = gql`\n    query getContractBalance($contract: ContractId!, $asset: AssetId!) {\n  contractBalance(contract: $contract, asset: $asset) {\n    ...contractBalanceFragment\n  }\n}\n    ${ContractBalanceFragmentDoc}`;\nvar GetBalanceDocument = gql`\n    query getBalance($owner: Address!, $assetId: AssetId!) {\n  balance(owner: $owner, assetId: $assetId) {\n    amount\n  }\n}\n    `;\nvar GetBalanceV2Document = gql`\n    query getBalanceV2($owner: Address!, $assetId: AssetId!) {\n  balance(owner: $owner, assetId: $assetId) {\n    amountU128\n  }\n}\n    `;\nvar GetLatestGasPriceDocument = gql`\n    query getLatestGasPrice {\n  latestGasPrice {\n    gasPrice\n  }\n}\n    `;\nvar EstimateGasPriceDocument = gql`\n    query estimateGasPrice($blockHorizon: U32!) {\n  estimateGasPrice(blockHorizon: $blockHorizon) {\n    gasPrice\n  }\n}\n    `;\nvar GetBalancesDocument = gql`\n    query getBalances($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {\n  balances(\n    filter: $filter\n    after: $after\n    before: $before\n    first: $first\n    last: $last\n  ) {\n    edges {\n      node {\n        assetId\n        amount\n      }\n    }\n  }\n}\n    `;\nvar GetBalancesV2Document = gql`\n    query getBalancesV2($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int, $supportsPagination: Boolean!) {\n  balances(\n    filter: $filter\n    after: $after\n    before: $before\n    first: $first\n    last: $last\n  ) {\n    pageInfo @include(if: $supportsPagination) {\n      ...pageInfoFragment\n    }\n    edges {\n      node {\n        assetId\n        amountU128\n      }\n    }\n  }\n}\n    ${PageInfoFragmentDoc}`;\nvar GetMessagesDocument = gql`\n    query getMessages($owner: Address!, $after: String, $before: String, $first: Int, $last: Int) {\n  messages(\n    owner: $owner\n    after: $after\n    before: $before\n    first: $first\n    last: $last\n  ) {\n    pageInfo {\n      ...pageInfoFragment\n    }\n    edges {\n      node {\n        ...getMessageFragment\n      }\n    }\n  }\n}\n    ${PageInfoFragmentDoc}\n${GetMessageFragmentDoc}`;\nvar DaCompressedBlockDocument = gql`\n    query daCompressedBlock($height: U32!) {\n  daCompressedBlock(height: $height) {\n    bytes\n  }\n}\n    `;\nvar GetMessageProofDocument = gql`\n    query getMessageProof($transactionId: TransactionId!, $nonce: Nonce!, $commitBlockId: BlockId, $commitBlockHeight: U32) {\n  messageProof(\n    transactionId: $transactionId\n    nonce: $nonce\n    commitBlockId: $commitBlockId\n    commitBlockHeight: $commitBlockHeight\n  ) {\n    ...messageProofFragment\n  }\n}\n    ${MessageProofFragmentDoc}`;\nvar GetMessageStatusDocument = gql`\n    query getMessageStatus($nonce: Nonce!) {\n  messageStatus(nonce: $nonce) {\n    state\n  }\n}\n    `;\nvar GetRelayedTransactionStatusDocument = gql`\n    query getRelayedTransactionStatus($relayedTransactionId: RelayedTransactionId!) {\n  relayedTransactionStatus(id: $relayedTransactionId) {\n    ...relayedTransactionStatusFragment\n  }\n}\n    ${RelayedTransactionStatusFragmentDoc}`;\nvar GetAssetDetailsDocument = gql`\n    query getAssetDetails($assetId: AssetId!) {\n  assetDetails(id: $assetId) {\n    subId\n    contractId\n    totalSupply\n  }\n}\n    `;\nvar AssembleTxDocument = gql`\n    query assembleTx($tx: HexString!, $blockHorizon: U32!, $requiredBalances: [RequiredBalance!]!, $feeAddressIndex: U16!, $excludeInput: ExcludeInput, $estimatePredicates: Boolean, $reserveGas: U64) {\n  assembleTx(\n    tx: $tx\n    blockHorizon: $blockHorizon\n    requiredBalances: $requiredBalances\n    feeAddressIndex: $feeAddressIndex\n    excludeInput: $excludeInput\n    estimatePredicates: $estimatePredicates\n    reserveGas: $reserveGas\n  ) {\n    transaction {\n      id\n      inputs {\n        ... on InputCoin {\n          ...InputCoinFragment\n        }\n        ... on InputContract {\n          ...InputContractFragment\n        }\n        ... on InputMessage {\n          ...InputMessageFragment\n        }\n      }\n      outputs {\n        ... on CoinOutput {\n          ...OutputCoinFragment\n        }\n        ... on ContractOutput {\n          ...OutputContractFragment\n        }\n        ... on ChangeOutput {\n          ...OutputChangeFragment\n        }\n        ... on VariableOutput {\n          ...OutputVariableFragment\n        }\n        ... on ContractCreated {\n          ...OutputContractCreatedFragment\n        }\n      }\n      policies {\n        tip\n        witnessLimit\n        maturity\n        maxFee\n      }\n      witnesses\n      scriptGasLimit\n    }\n    status {\n      ... on DryRunFailureStatus {\n        ...dryRunFailureAssembleTxFragment\n      }\n      ... on DryRunSuccessStatus {\n        ...dryRunSuccessAssembleTxFragment\n      }\n    }\n    gasPrice\n  }\n}\n    ${InputCoinFragmentDoc}\n${InputContractFragmentDoc}\n${InputMessageFragmentDoc}\n${OutputCoinFragmentDoc}\n${OutputContractFragmentDoc}\n${OutputChangeFragmentDoc}\n${OutputVariableFragmentDoc}\n${OutputContractCreatedFragmentDoc}\n${DryRunFailureAssembleTxFragmentDoc}\n${DryRunSuccessAssembleTxFragmentDoc}`;\nvar DryRunDocument = gql`\n    query dryRun($encodedTransactions: [HexString!]!, $utxoValidation: Boolean, $gasPrice: U64) {\n  dryRun(\n    txs: $encodedTransactions\n    utxoValidation: $utxoValidation\n    gasPrice: $gasPrice\n  ) {\n    ...dryRunTransactionExecutionStatusFragment\n  }\n}\n    ${DryRunTransactionExecutionStatusFragmentDoc}`;\nvar SubmitDocument = gql`\n    mutation submit($encodedTransaction: HexString!) {\n  submit(tx: $encodedTransaction) {\n    id\n  }\n}\n    `;\nvar ProduceBlocksDocument = gql`\n    mutation produceBlocks($startTimestamp: Tai64Timestamp, $blocksToProduce: U32!) {\n  produceBlocks(\n    blocksToProduce: $blocksToProduce\n    startTimestamp: $startTimestamp\n  )\n}\n    `;\nvar GetMessageByNonceDocument = gql`\n    query getMessageByNonce($nonce: Nonce!) {\n  message(nonce: $nonce) {\n    ...messageFragment\n  }\n}\n    ${MessageFragmentDoc}`;\nvar IsUserAccountDocument = gql`\n    query isUserAccount($blobId: BlobId!, $contractId: ContractId!, $transactionId: TransactionId!) {\n  blob(id: $blobId) {\n    id\n  }\n  contract(id: $contractId) {\n    id\n  }\n  transaction(id: $transactionId) {\n    id\n  }\n}\n    `;\nvar GetConsensusParametersVersionDocument = gql`\n    query getConsensusParametersVersion {\n  chain {\n    latestBlock {\n      header {\n        consensusParametersVersion\n      }\n    }\n  }\n}\n    `;\nvar SubmitAndAwaitStatusDocument = gql`\n    subscription submitAndAwaitStatus($encodedTransaction: HexString!, $estimatePredicates: Boolean, $includePreConfirmation: Boolean) {\n  submitAndAwaitStatus(\n    tx: $encodedTransaction\n    estimatePredicates: $estimatePredicates\n    includePreconfirmation: $includePreConfirmation\n  ) {\n    ...transactionStatusSubscriptionFragment\n  }\n}\n    ${TransactionStatusSubscriptionFragmentDoc}`;\nvar StatusChangeDocument = gql`\n    subscription statusChange($transactionId: TransactionId!, $includePreConfirmation: Boolean) {\n  statusChange(\n    id: $transactionId\n    includePreconfirmation: $includePreConfirmation\n  ) {\n    ...transactionStatusSubscriptionFragment\n  }\n}\n    ${TransactionStatusSubscriptionFragmentDoc}`;\nfunction getSdk(requester) {\n  return {\n    getVersion(variables, options) {\n      return requester(GetVersionDocument, variables, options);\n    },\n    getNodeInfo(variables, options) {\n      return requester(GetNodeInfoDocument, variables, options);\n    },\n    getChain(variables, options) {\n      return requester(GetChainDocument, variables, options);\n    },\n    getChainAndNodeInfo(variables, options) {\n      return requester(GetChainAndNodeInfoDocument, variables, options);\n    },\n    getTransaction(variables, options) {\n      return requester(GetTransactionDocument, variables, options);\n    },\n    getTransactionWithReceipts(variables, options) {\n      return requester(GetTransactionWithReceiptsDocument, variables, options);\n    },\n    getTransactions(variables, options) {\n      return requester(GetTransactionsDocument, variables, options);\n    },\n    getTransactionsByOwner(variables, options) {\n      return requester(GetTransactionsByOwnerDocument, variables, options);\n    },\n    estimatePredicates(variables, options) {\n      return requester(EstimatePredicatesDocument, variables, options);\n    },\n    estimatePredicatesAndGasPrice(variables, options) {\n      return requester(EstimatePredicatesAndGasPriceDocument, variables, options);\n    },\n    getLatestBlock(variables, options) {\n      return requester(GetLatestBlockDocument, variables, options);\n    },\n    getLatestBlockHeight(variables, options) {\n      return requester(GetLatestBlockHeightDocument, variables, options);\n    },\n    getBlock(variables, options) {\n      return requester(GetBlockDocument, variables, options);\n    },\n    getBlockWithTransactions(variables, options) {\n      return requester(GetBlockWithTransactionsDocument, variables, options);\n    },\n    getBlocks(variables, options) {\n      return requester(GetBlocksDocument, variables, options);\n    },\n    getCoin(variables, options) {\n      return requester(GetCoinDocument, variables, options);\n    },\n    getCoins(variables, options) {\n      return requester(GetCoinsDocument, variables, options);\n    },\n    getCoinsToSpend(variables, options) {\n      return requester(GetCoinsToSpendDocument, variables, options);\n    },\n    getContract(variables, options) {\n      return requester(GetContractDocument, variables, options);\n    },\n    getContractBalance(variables, options) {\n      return requester(GetContractBalanceDocument, variables, options);\n    },\n    getBalance(variables, options) {\n      return requester(GetBalanceDocument, variables, options);\n    },\n    getBalanceV2(variables, options) {\n      return requester(GetBalanceV2Document, variables, options);\n    },\n    getLatestGasPrice(variables, options) {\n      return requester(GetLatestGasPriceDocument, variables, options);\n    },\n    estimateGasPrice(variables, options) {\n      return requester(EstimateGasPriceDocument, variables, options);\n    },\n    getBalances(variables, options) {\n      return requester(GetBalancesDocument, variables, options);\n    },\n    getBalancesV2(variables, options) {\n      return requester(GetBalancesV2Document, variables, options);\n    },\n    getMessages(variables, options) {\n      return requester(GetMessagesDocument, variables, options);\n    },\n    daCompressedBlock(variables, options) {\n      return requester(DaCompressedBlockDocument, variables, options);\n    },\n    getMessageProof(variables, options) {\n      return requester(GetMessageProofDocument, variables, options);\n    },\n    getMessageStatus(variables, options) {\n      return requester(GetMessageStatusDocument, variables, options);\n    },\n    getRelayedTransactionStatus(variables, options) {\n      return requester(GetRelayedTransactionStatusDocument, variables, options);\n    },\n    getAssetDetails(variables, options) {\n      return requester(GetAssetDetailsDocument, variables, options);\n    },\n    assembleTx(variables, options) {\n      return requester(AssembleTxDocument, variables, options);\n    },\n    dryRun(variables, options) {\n      return requester(DryRunDocument, variables, options);\n    },\n    submit(variables, options) {\n      return requester(SubmitDocument, variables, options);\n    },\n    produceBlocks(variables, options) {\n      return requester(ProduceBlocksDocument, variables, options);\n    },\n    getMessageByNonce(variables, options) {\n      return requester(GetMessageByNonceDocument, variables, options);\n    },\n    isUserAccount(variables, options) {\n      return requester(IsUserAccountDocument, variables, options);\n    },\n    getConsensusParametersVersion(variables, options) {\n      return requester(GetConsensusParametersVersionDocument, variables, options);\n    },\n    submitAndAwaitStatus(variables, options) {\n      return requester(SubmitAndAwaitStatusDocument, variables, options);\n    },\n    statusChange(variables, options) {\n      return requester(StatusChangeDocument, variables, options);\n    }\n  };\n}\n__name(getSdk, \"getSdk\");\n\n// src/providers/assemble-tx-helpers.ts\nimport { FuelError, ErrorCode } from \"@fuel-ts/errors\";\nimport { bn as bn2 } from \"@fuel-ts/math\";\nimport { TransactionType } from \"@fuel-ts/transactions\";\nimport { hexlify as hexlify2, isDefined } from \"@fuel-ts/utils\";\nvar resolveAccountForAssembleTxParams = /* @__PURE__ */ __name((account) => {\n  const assembleTxAccount = {};\n  const accountIsPredicate = \"bytes\" in account;\n  if (accountIsPredicate) {\n    assembleTxAccount.predicate = {\n      predicate: hexlify2(account.bytes),\n      predicateAddress: account.address.toB256(),\n      predicateData: hexlify2(account.getPredicateData())\n    };\n  } else {\n    assembleTxAccount.address = account.address.toB256();\n  }\n  return assembleTxAccount;\n}, \"resolveAccountForAssembleTxParams\");\nvar setAndValidateGasAndFeeForAssembledTx = /* @__PURE__ */ __name(async (params) => {\n  const { gasPrice, transactionRequest, setGasLimit, setMaxFee, provider } = params;\n  const gasLimitSpecified = isDefined(setGasLimit);\n  const maxFeeSpecified = isDefined(setMaxFee);\n  const isScriptTx = transactionRequest.type === TransactionType.Script;\n  if (gasLimitSpecified && isScriptTx) {\n    const requiredGasLimit = transactionRequest.gasLimit;\n    if (bn2(setGasLimit).lt(bn2(requiredGasLimit))) {\n      throw new FuelError(\n        ErrorCode.GAS_LIMIT_TOO_LOW,\n        `Gas limit '${setGasLimit}' is lower than the required: '${requiredGasLimit}'.`\n      );\n    }\n    transactionRequest.gasLimit = bn2(setGasLimit);\n  }\n  if (maxFeeSpecified) {\n    const requiredMaxFee = transactionRequest.maxFee;\n    if (bn2(setMaxFee).lt(requiredMaxFee)) {\n      throw new FuelError(\n        ErrorCode.MAX_FEE_TOO_LOW,\n        `Max fee '${setMaxFee}' is lower than the required: '${requiredMaxFee}'.`\n      );\n    }\n    transactionRequest.maxFee = bn2(setMaxFee);\n  }\n  if (gasLimitSpecified && !maxFeeSpecified) {\n    const { maxFee: feeForGasPrice } = await provider.estimateTxGasAndFee({\n      transactionRequest,\n      gasPrice\n    });\n    transactionRequest.maxFee = feeForGasPrice;\n  }\n  return transactionRequest;\n}, \"setAndValidateGasAndFeeForAssembledTx\");\n\n// src/providers/fuel-graphql-subscriber.ts\nimport { ErrorCode as ErrorCode3, FuelError as FuelError3 } from \"@fuel-ts/errors\";\nimport { print } from \"graphql\";\n\n// src/providers/utils/handle-gql-error-message.ts\nimport { ErrorCode as ErrorCode2, FuelError as FuelError2 } from \"@fuel-ts/errors\";\nvar gqlErrorMessage = {\n  RPC_CONSISTENCY: /The required fuel block height is higher than the current block height. Required: \\d+, Current: \\d+/,\n  NOT_ENOUGH_COINS_MAX_COINS: /the target cannot be met due to no coins available or exceeding the \\d+ coin limit./,\n  ASSET_NOT_FOUND: /resource was not found in table/,\n  MULTIPLE_CHANGE_POLICIES: /The asset ([a-fA-F0-9]{64}) has multiple change policies/,\n  DUPLICATE_CHANGE_OUTPUT_ACCOUNT: /required balances contain duplicate \\(asset, account\\) pair/,\n  INSUFFICIENT_FEE_AMOUNT: /InsufficientFeeAmount { expected: (\\d+), provided: (\\d+) }/\n};\nvar mapGqlErrorMessage = /* @__PURE__ */ __name((error) => {\n  if (gqlErrorMessage.NOT_ENOUGH_COINS_MAX_COINS.test(error.message)) {\n    return new FuelError2(\n      ErrorCode2.INSUFFICIENT_FUNDS_OR_MAX_COINS,\n      `Insufficient funds or too many small value coins. Consider combining UTXOs.`,\n      {},\n      error\n    );\n  }\n  if (gqlErrorMessage.MULTIPLE_CHANGE_POLICIES.test(error.message)) {\n    const match = error.message.match(/asset ([a-fA-F0-9]{64})/);\n    const assetId = match?.[1] || \"\";\n    return new FuelError2(\n      ErrorCode2.CHANGE_OUTPUT_COLLISION,\n      `OutputChange address for asset 0x${assetId} differs between transaction request and assembleTx parameters.`,\n      {},\n      error\n    );\n  }\n  if (gqlErrorMessage.DUPLICATE_CHANGE_OUTPUT_ACCOUNT.test(error.message)) {\n    return new FuelError2(\n      ErrorCode2.DUPLICATE_CHANGE_OUTPUT_ACCOUNT,\n      `The parameter 'accountCoinQuantities' of assembleTx contains duplicate entries for the same assetId with different 'changeOutputAccount'.`,\n      {},\n      error\n    );\n  }\n  if (gqlErrorMessage.ASSET_NOT_FOUND.test(error.message)) {\n    return new FuelError2(\n      ErrorCode2.ASSET_NOT_FOUND,\n      `Asset not found for given asset id.`,\n      {},\n      error\n    );\n  }\n  if (gqlErrorMessage.RPC_CONSISTENCY.test(error.message)) {\n    return new FuelError2(ErrorCode2.RPC_CONSISTENCY, error.message, {}, error);\n  }\n  if (gqlErrorMessage.INSUFFICIENT_FEE_AMOUNT.test(error.message)) {\n    const match = error.message.match(gqlErrorMessage.INSUFFICIENT_FEE_AMOUNT);\n    return new FuelError2(ErrorCode2.FUNDS_TOO_LOW, match?.[0] || error.message, {}, error);\n  }\n  return new FuelError2(ErrorCode2.INVALID_REQUEST, error.message, {}, error);\n}, \"mapGqlErrorMessage\");\nvar mapGqlErrorWithIncompatibleNodeVersion = /* @__PURE__ */ __name((error, incompatibleNodeVersionMessage) => {\n  if (!incompatibleNodeVersionMessage) {\n    return error;\n  }\n  return new FuelError2(\n    error.code,\n    `${error.message}\n\n${incompatibleNodeVersionMessage}`,\n    error.metadata,\n    error.rawError\n  );\n}, \"mapGqlErrorWithIncompatibleNodeVersion\");\nvar assertGqlResponseHasNoErrors = /* @__PURE__ */ __name((errors, incompatibleNodeVersionMessage = false) => {\n  if (!Array.isArray(errors)) {\n    return;\n  }\n  const mappedErrors = errors.map(mapGqlErrorMessage);\n  if (mappedErrors.length === 1) {\n    throw mapGqlErrorWithIncompatibleNodeVersion(mappedErrors[0], incompatibleNodeVersionMessage);\n  }\n  const errorMessage = mappedErrors.map((err) => err.message).join(\"\\n\");\n  throw mapGqlErrorWithIncompatibleNodeVersion(\n    new FuelError2(ErrorCode2.INVALID_REQUEST, errorMessage, {}, mappedErrors),\n    incompatibleNodeVersionMessage\n  );\n}, \"assertGqlResponseHasNoErrors\");\n\n// src/providers/fuel-graphql-subscriber.ts\nvar FuelGraphqlSubscriber = class _FuelGraphqlSubscriber {\n  constructor(stream, onEvent) {\n    this.stream = stream;\n    this.onEvent = onEvent;\n  }\n  static {\n    __name(this, \"FuelGraphqlSubscriber\");\n  }\n  static incompatibleNodeVersionMessage = false;\n  static textDecoder = new TextDecoder();\n  static async create(options) {\n    const { url, query, variables, fetchFn, operationName, onEvent } = options;\n    const response = await fetchFn(`${url}-sub`, {\n      method: \"POST\",\n      body: JSON.stringify({\n        query: print(query),\n        variables,\n        operationName\n      }),\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Accept: \"text/event-stream\"\n      }\n    });\n    const [errorReader, resultReader] = response.body.tee().map((stream) => stream.getReader());\n    await new _FuelGraphqlSubscriber(errorReader).next();\n    return new _FuelGraphqlSubscriber(resultReader, onEvent);\n  }\n  /**\n   * This method will take a stream reader and parse the event from the stream.\n   *\n   * @param reader - The reader of the SSE stream\n   * @param parsingLeftover - The leftover string from parsing the previous event\n   * @returns The event parsed as a full GraphQL response, whether the stream is done and the leftover string after parsing\n   */\n  static async readEvent(reader, parsingLeftover = \"\") {\n    let text = parsingLeftover;\n    const regex = /data:.*\\n\\n/g;\n    while (true) {\n      const matches = [...text.matchAll(regex)].flatMap((match) => match);\n      if (matches.length > 0) {\n        try {\n          const event = JSON.parse(matches[0].replace(/^data:/, \"\"));\n          return {\n            event,\n            done: false,\n            parsingLeftover: text.replace(matches[0], \"\")\n          };\n        } catch (e) {\n          throw new FuelError3(\n            ErrorCode3.STREAM_PARSING_ERROR,\n            `Error while parsing stream data response: ${text}`\n          );\n        }\n      }\n      const { value, done } = await reader.read();\n      if (done) {\n        return { event: void 0, done, parsingLeftover: \"\" };\n      }\n      const decoded = _FuelGraphqlSubscriber.textDecoder.decode(value).replace(\":keep-alive-text\\n\\n\", \"\");\n      text += decoded;\n    }\n  }\n  events = [];\n  parsingLeftover = \"\";\n  /**\n   * Gets automatically called when iterating in a `for-await-of` loop.\n   * It can also be called manually.\n   *\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/next\n   */\n  async next() {\n    while (true) {\n      const nextEvent = this.events.shift();\n      if (nextEvent) {\n        this.onEvent?.(nextEvent);\n        assertGqlResponseHasNoErrors(\n          nextEvent.errors,\n          _FuelGraphqlSubscriber.incompatibleNodeVersionMessage\n        );\n        return { value: nextEvent.data, done: false };\n      }\n      const { event, done, parsingLeftover } = await _FuelGraphqlSubscriber.readEvent(\n        this.stream,\n        this.parsingLeftover\n      );\n      this.parsingLeftover = parsingLeftover;\n      if (done) {\n        return { value: void 0, done: true };\n      }\n      this.events.push(event);\n    }\n  }\n  /**\n   * Gets called when `break` is called in a `for-await-of` loop.\n   */\n  return() {\n    return Promise.resolve({ done: true, value: void 0 });\n  }\n  [Symbol.asyncIterator]() {\n    return this;\n  }\n};\n\n// src/providers/resource-cache.ts\nimport { FuelError as FuelError13, ErrorCode as ErrorCode11 } from \"@fuel-ts/errors\";\nimport { hexlify as hexlify15 } from \"@fuel-ts/utils\";\n\n// src/providers/transaction-request/input.ts\nimport { BYTES_32, UTXO_ID_LEN } from \"@fuel-ts/abi-coder\";\nimport { ZeroBytes32 } from \"@fuel-ts/address/configs\";\nimport { ErrorCode as ErrorCode4, FuelError as FuelError4 } from \"@fuel-ts/errors\";\nimport { bn as bn3, toNumber } from \"@fuel-ts/math\";\nimport { InputType } from \"@fuel-ts/transactions\";\nimport { arrayify, hexlify as hexlify3 } from \"@fuel-ts/utils\";\nvar inputify = /* @__PURE__ */ __name((value) => {\n  const { type } = value;\n  switch (value.type) {\n    case InputType.Coin: {\n      const predicate = arrayify(value.predicate ?? \"0x\");\n      const predicateData = arrayify(value.predicateData ?? \"0x\");\n      return {\n        type: InputType.Coin,\n        txID: hexlify3(arrayify(value.id).slice(0, BYTES_32)),\n        outputIndex: toNumber(arrayify(value.id).slice(BYTES_32, UTXO_ID_LEN)),\n        owner: hexlify3(value.owner),\n        amount: bn3(value.amount),\n        assetId: hexlify3(value.assetId),\n        txPointer: {\n          blockHeight: toNumber(arrayify(value.txPointer).slice(0, 8)),\n          txIndex: toNumber(arrayify(value.txPointer).slice(8, 16))\n        },\n        witnessIndex: value.witnessIndex,\n        predicateGasUsed: bn3(value.predicateGasUsed),\n        predicateLength: bn3(predicate.length),\n        predicateDataLength: bn3(predicateData.length),\n        predicate: hexlify3(predicate),\n        predicateData: hexlify3(predicateData)\n      };\n    }\n    case InputType.Contract: {\n      return {\n        type: InputType.Contract,\n        txID: hexlify3(value.txID || ZeroBytes32),\n        outputIndex: 0,\n        balanceRoot: ZeroBytes32,\n        stateRoot: ZeroBytes32,\n        txPointer: {\n          blockHeight: toNumber(arrayify(value.txPointer).slice(0, 8)),\n          txIndex: toNumber(arrayify(value.txPointer).slice(8, 16))\n        },\n        contractID: hexlify3(value.contractId)\n      };\n    }\n    case InputType.Message: {\n      const predicate = arrayify(value.predicate ?? \"0x\");\n      const predicateData = arrayify(value.predicateData ?? \"0x\");\n      const data = arrayify(value.data ?? \"0x\");\n      return {\n        type: InputType.Message,\n        sender: hexlify3(value.sender),\n        recipient: hexlify3(value.recipient),\n        amount: bn3(value.amount),\n        nonce: hexlify3(value.nonce),\n        witnessIndex: value.witnessIndex,\n        predicateGasUsed: bn3(value.predicateGasUsed),\n        predicateLength: bn3(predicate.length),\n        predicateDataLength: bn3(predicateData.length),\n        predicate: hexlify3(predicate),\n        predicateData: hexlify3(predicateData),\n        data: hexlify3(data),\n        dataLength: data.length\n      };\n    }\n    default: {\n      throw new FuelError4(\n        ErrorCode4.INVALID_TRANSACTION_INPUT,\n        `Invalid transaction input type: ${type}.`\n      );\n    }\n  }\n}, \"inputify\");\n\n// src/providers/transaction-request/output.ts\nimport { ZeroBytes32 as ZeroBytes322 } from \"@fuel-ts/address/configs\";\nimport { ErrorCode as ErrorCode5, FuelError as FuelError5 } from \"@fuel-ts/errors\";\nimport { bn as bn4 } from \"@fuel-ts/math\";\nimport { OutputType } from \"@fuel-ts/transactions\";\nimport { hexlify as hexlify4 } from \"@fuel-ts/utils\";\nvar outputify = /* @__PURE__ */ __name((value) => {\n  const { type } = value;\n  switch (type) {\n    case OutputType.Coin: {\n      return {\n        type: OutputType.Coin,\n        to: hexlify4(value.to),\n        amount: bn4(value.amount),\n        assetId: hexlify4(value.assetId)\n      };\n    }\n    case OutputType.Contract: {\n      return {\n        type: OutputType.Contract,\n        inputIndex: value.inputIndex,\n        balanceRoot: ZeroBytes322,\n        stateRoot: ZeroBytes322\n      };\n    }\n    case OutputType.Change: {\n      return {\n        type: OutputType.Change,\n        to: hexlify4(value.to),\n        amount: bn4(0),\n        assetId: hexlify4(value.assetId)\n      };\n    }\n    case OutputType.Variable: {\n      return {\n        type: OutputType.Variable,\n        to: hexlify4(value.to || ZeroBytes322),\n        amount: bn4(value.amount),\n        assetId: hexlify4(value.assetId || ZeroBytes322)\n      };\n    }\n    case OutputType.ContractCreated: {\n      return {\n        type: OutputType.ContractCreated,\n        contractId: hexlify4(value.contractId),\n        stateRoot: hexlify4(value.stateRoot)\n      };\n    }\n    default: {\n      throw new FuelError5(\n        ErrorCode5.INVALID_TRANSACTION_INPUT,\n        `Invalid transaction output type: ${type}.`\n      );\n    }\n  }\n}, \"outputify\");\n\n// src/providers/transaction-request/transaction-request.ts\nimport { UTXO_ID_LEN as UTXO_ID_LEN2 } from \"@fuel-ts/abi-coder\";\nimport { Address, addressify } from \"@fuel-ts/address\";\nimport { ZeroBytes32 as ZeroBytes324 } from \"@fuel-ts/address/configs\";\nimport { randomBytes } from \"@fuel-ts/crypto\";\nimport { FuelError as FuelError10 } from \"@fuel-ts/errors\";\nimport { bn as bn9 } from \"@fuel-ts/math\";\nimport {\n  PolicyType,\n  TransactionCoder,\n  InputType as InputType4,\n  OutputType as OutputType4,\n  TransactionType as TransactionType2\n} from \"@fuel-ts/transactions\";\nimport { concat, hexlify as hexlify9, isDefined as isDefined2 } from \"@fuel-ts/utils\";\n\n// src/providers/message.ts\nvar isMessageCoin = /* @__PURE__ */ __name((message) => !(\"data\" in message), \"isMessageCoin\");\n\n// src/providers/resource.ts\nvar isRawCoin = /* @__PURE__ */ __name((resource) => \"utxoId\" in resource, \"isRawCoin\");\nvar isRawMessage = /* @__PURE__ */ __name((resource) => \"recipient\" in resource, \"isRawMessage\");\nvar isCoin = /* @__PURE__ */ __name((resource) => \"id\" in resource, \"isCoin\");\nvar isMessage = /* @__PURE__ */ __name((resource) => \"recipient\" in resource, \"isMessage\");\n\n// src/providers/utils/receipts.ts\nimport { ReceiptType as ReceiptType2 } from \"@fuel-ts/transactions\";\nimport { FAILED_TRANSFER_TO_ADDRESS_SIGNAL } from \"@fuel-ts/transactions/configs\";\n\n// src/providers/utils/serialization.ts\nimport { ZeroBytes32 as ZeroBytes323 } from \"@fuel-ts/address/configs\";\nimport { ErrorCode as ErrorCode6, FuelError as FuelError6 } from \"@fuel-ts/errors\";\nimport { bn as bn5 } from \"@fuel-ts/math\";\nimport {\n  getMintedAssetId,\n  InputMessageCoder,\n  InputType as InputType2,\n  OutputType as OutputType2,\n  ReceiptType\n} from \"@fuel-ts/transactions\";\nimport { hexlify as hexlify5, arrayify as arrayify2, assertUnreachable } from \"@fuel-ts/utils\";\nvar deserializeChain = /* @__PURE__ */ __name((chain) => {\n  const { name, daHeight, consensusParameters, latestBlock } = chain;\n  const {\n    contractParams,\n    feeParams,\n    predicateParams,\n    scriptParams,\n    txParams,\n    gasCosts,\n    baseAssetId,\n    chainId,\n    version\n  } = consensusParameters;\n  return {\n    name,\n    baseChainHeight: bn5(daHeight),\n    consensusParameters: {\n      version,\n      chainId: bn5(chainId),\n      baseAssetId,\n      feeParameters: {\n        version: feeParams.version,\n        gasPerByte: bn5(feeParams.gasPerByte),\n        gasPriceFactor: bn5(feeParams.gasPriceFactor)\n      },\n      contractParameters: {\n        version: contractParams.version,\n        contractMaxSize: bn5(contractParams.contractMaxSize),\n        maxStorageSlots: bn5(contractParams.maxStorageSlots)\n      },\n      txParameters: {\n        version: txParams.version,\n        maxInputs: bn5(txParams.maxInputs),\n        maxOutputs: bn5(txParams.maxOutputs),\n        maxWitnesses: bn5(txParams.maxWitnesses),\n        maxGasPerTx: bn5(txParams.maxGasPerTx),\n        maxSize: bn5(txParams.maxSize),\n        maxBytecodeSubsections: bn5(txParams.maxBytecodeSubsections)\n      },\n      predicateParameters: {\n        version: predicateParams.version,\n        maxPredicateLength: bn5(predicateParams.maxPredicateLength),\n        maxPredicateDataLength: bn5(predicateParams.maxPredicateDataLength),\n        maxGasPerPredicate: bn5(predicateParams.maxGasPerPredicate),\n        maxMessageDataLength: bn5(predicateParams.maxMessageDataLength)\n      },\n      scriptParameters: {\n        version: scriptParams.version,\n        maxScriptLength: bn5(scriptParams.maxScriptLength),\n        maxScriptDataLength: bn5(scriptParams.maxScriptDataLength)\n      },\n      gasCosts\n    },\n    latestBlock\n  };\n}, \"deserializeChain\");\nvar serializeChain = /* @__PURE__ */ __name((chain) => {\n  const { name, baseChainHeight, consensusParameters, latestBlock } = chain;\n  const {\n    contractParameters,\n    feeParameters,\n    predicateParameters,\n    scriptParameters,\n    txParameters,\n    gasCosts,\n    baseAssetId,\n    chainId,\n    version\n  } = consensusParameters;\n  return {\n    name,\n    daHeight: baseChainHeight.toString(),\n    consensusParameters: {\n      version,\n      chainId: chainId.toString(),\n      baseAssetId,\n      feeParams: {\n        version: feeParameters.version,\n        gasPerByte: feeParameters.gasPerByte.toString(),\n        gasPriceFactor: feeParameters.gasPriceFactor.toString()\n      },\n      contractParams: {\n        version: contractParameters.version,\n        contractMaxSize: contractParameters.contractMaxSize.toString(),\n        maxStorageSlots: contractParameters.maxStorageSlots.toString()\n      },\n      txParams: {\n        version: txParameters.version,\n        maxInputs: txParameters.maxInputs.toString(),\n        maxOutputs: txParameters.maxOutputs.toString(),\n        maxWitnesses: txParameters.maxWitnesses.toString(),\n        maxGasPerTx: txParameters.maxGasPerTx.toString(),\n        maxSize: txParameters.maxSize.toString(),\n        maxBytecodeSubsections: txParameters.maxBytecodeSubsections.toString()\n      },\n      predicateParams: {\n        version: predicateParameters.version,\n        maxPredicateLength: predicateParameters.maxPredicateLength.toString(),\n        maxPredicateDataLength: predicateParameters.maxPredicateDataLength.toString(),\n        maxGasPerPredicate: predicateParameters.maxGasPerPredicate.toString(),\n        maxMessageDataLength: predicateParameters.maxMessageDataLength.toString()\n      },\n      scriptParams: {\n        version: scriptParameters.version,\n        maxScriptLength: scriptParameters.maxScriptLength.toString(),\n        maxScriptDataLength: scriptParameters.maxScriptDataLength.toString()\n      },\n      gasCosts\n    },\n    latestBlock\n  };\n}, \"serializeChain\");\nvar deserializeNodeInfo = /* @__PURE__ */ __name((nodeInfo) => {\n  const { maxDepth, maxTx, nodeVersion, utxoValidation, vmBacktrace, indexation } = nodeInfo;\n  return {\n    maxDepth: bn5(maxDepth),\n    maxTx: bn5(maxTx),\n    nodeVersion,\n    utxoValidation,\n    vmBacktrace,\n    indexation\n  };\n}, \"deserializeNodeInfo\");\nvar serializeNodeInfo = /* @__PURE__ */ __name((nodeInfo) => {\n  const { maxDepth, maxTx, nodeVersion, utxoValidation, vmBacktrace, indexation } = nodeInfo;\n  return {\n    maxDepth: maxDepth.toString(),\n    maxTx: maxTx.toString(),\n    nodeVersion,\n    utxoValidation,\n    vmBacktrace,\n    indexation\n  };\n}, \"serializeNodeInfo\");\nvar deserializeProviderCache = /* @__PURE__ */ __name((cache2) => ({\n  consensusParametersTimestamp: cache2.consensusParametersTimestamp,\n  chain: deserializeChain(cache2.chain),\n  nodeInfo: deserializeNodeInfo(cache2.nodeInfo)\n}), \"deserializeProviderCache\");\nvar serializeProviderCache = /* @__PURE__ */ __name(async (provider) => ({\n  consensusParametersTimestamp: provider.consensusParametersTimestamp,\n  chain: serializeChain(await provider.getChain()),\n  nodeInfo: serializeNodeInfo(await provider.getNode())\n}), \"serializeProviderCache\");\nvar hexOrZero = /* @__PURE__ */ __name((hex) => hex || ZeroBytes323, \"hexOrZero\");\nvar deserializeReceipt = /* @__PURE__ */ __name((receipt) => {\n  const { receiptType } = receipt;\n  switch (receiptType) {\n    case \"CALL\" /* Call */: {\n      const id = hexOrZero(receipt.id || receipt.contractId);\n      const callReceipt = {\n        type: ReceiptType.Call,\n        id,\n        to: hexOrZero(receipt?.to),\n        amount: bn5(receipt.amount),\n        assetId: hexOrZero(receipt.assetId),\n        gas: bn5(receipt.gas),\n        param1: bn5(receipt.param1),\n        param2: bn5(receipt.param2),\n        pc: bn5(receipt.pc),\n        is: bn5(receipt.is)\n      };\n      return callReceipt;\n    }\n    case \"RETURN\" /* Return */: {\n      const returnReceipt = {\n        type: ReceiptType.Return,\n        id: hexOrZero(receipt.id || receipt.contractId),\n        val: bn5(receipt.val),\n        pc: bn5(receipt.pc),\n        is: bn5(receipt.is)\n      };\n      return returnReceipt;\n    }\n    case \"RETURN_DATA\" /* ReturnData */: {\n      const returnDataReceipt = {\n        type: ReceiptType.ReturnData,\n        id: hexOrZero(receipt.id || receipt.contractId),\n        ptr: bn5(receipt.ptr),\n        len: bn5(receipt.len),\n        digest: hexOrZero(receipt.digest),\n        pc: bn5(receipt.pc),\n        data: hexOrZero(receipt.data),\n        is: bn5(receipt.is)\n      };\n      return returnDataReceipt;\n    }\n    case \"PANIC\" /* Panic */: {\n      const panicReceipt = {\n        type: ReceiptType.Panic,\n        id: hexOrZero(receipt.id),\n        reason: bn5(receipt.reason),\n        pc: bn5(receipt.pc),\n        is: bn5(receipt.is),\n        contractId: hexOrZero(receipt.contractId)\n      };\n      return panicReceipt;\n    }\n    case \"REVERT\" /* Revert */: {\n      const revertReceipt = {\n        type: ReceiptType.Revert,\n        id: hexOrZero(receipt.id || receipt.contractId),\n        val: bn5(receipt.ra),\n        pc: bn5(receipt.pc),\n        is: bn5(receipt.is)\n      };\n      return revertReceipt;\n    }\n    case \"LOG\" /* Log */: {\n      const ra = bn5(receipt.ra);\n      const rb = bn5(receipt.rb);\n      const rc = bn5(receipt.rc);\n      const rd = bn5(receipt.rd);\n      const logReceipt = {\n        type: ReceiptType.Log,\n        id: hexOrZero(receipt.id || receipt.contractId),\n        ra,\n        rb,\n        rc,\n        rd,\n        pc: bn5(receipt.pc),\n        is: bn5(receipt.is)\n      };\n      return logReceipt;\n    }\n    case \"LOG_DATA\" /* LogData */: {\n      const ra = bn5(receipt.ra);\n      const rb = bn5(receipt.rb);\n      const logDataReceipt = {\n        type: ReceiptType.LogData,\n        id: hexOrZero(receipt.id || receipt.contractId),\n        ra,\n        rb,\n        ptr: bn5(receipt.ptr),\n        len: bn5(receipt.len),\n        digest: hexOrZero(receipt.digest),\n        pc: bn5(receipt.pc),\n        data: hexOrZero(receipt.data),\n        is: bn5(receipt.is)\n      };\n      return logDataReceipt;\n    }\n    case \"TRANSFER\" /* Transfer */: {\n      const id = hexOrZero(receipt.id || receipt.contractId);\n      const transferReceipt = {\n        type: ReceiptType.Transfer,\n        id,\n        to: hexOrZero(receipt.toAddress || receipt?.to),\n        amount: bn5(receipt.amount),\n        assetId: hexOrZero(receipt.assetId),\n        pc: bn5(receipt.pc),\n        is: bn5(receipt.is)\n      };\n      return transferReceipt;\n    }\n    case \"TRANSFER_OUT\" /* TransferOut */: {\n      const id = hexOrZero(receipt.id || receipt.contractId);\n      const transferOutReceipt = {\n        type: ReceiptType.TransferOut,\n        id,\n        to: hexOrZero(receipt.toAddress || receipt.to),\n        amount: bn5(receipt.amount),\n        assetId: hexOrZero(receipt.assetId),\n        pc: bn5(receipt.pc),\n        is: bn5(receipt.is)\n      };\n      return transferOutReceipt;\n    }\n    case \"SCRIPT_RESULT\" /* ScriptResult */: {\n      const scriptResultReceipt = {\n        type: ReceiptType.ScriptResult,\n        result: bn5(receipt.result),\n        gasUsed: bn5(receipt.gasUsed)\n      };\n      return scriptResultReceipt;\n    }\n    case \"MESSAGE_OUT\" /* MessageOut */: {\n      const sender = hexOrZero(receipt.sender);\n      const recipient = hexOrZero(receipt.recipient);\n      const nonce = hexOrZero(receipt.nonce);\n      const amount = bn5(receipt.amount);\n      const data = receipt.data ? arrayify2(receipt.data) : Uint8Array.from([]);\n      const digest = hexOrZero(receipt.digest);\n      const len = bn5(receipt.len).toNumber();\n      const messageId = InputMessageCoder.getMessageId({\n        sender,\n        recipient,\n        nonce,\n        amount,\n        data: hexlify5(data)\n      });\n      const receiptMessageOut = {\n        type: ReceiptType.MessageOut,\n        sender,\n        recipient,\n        amount,\n        nonce,\n        len,\n        data,\n        digest,\n        messageId\n      };\n      return receiptMessageOut;\n    }\n    case \"MINT\" /* Mint */: {\n      const contractId = hexOrZero(receipt.id || receipt.contractId);\n      const subId = hexOrZero(receipt.subId);\n      const assetId = getMintedAssetId(contractId, subId);\n      const mintReceipt = {\n        type: ReceiptType.Mint,\n        subId,\n        contractId,\n        assetId,\n        val: bn5(receipt.val),\n        pc: bn5(receipt.pc),\n        is: bn5(receipt.is)\n      };\n      return mintReceipt;\n    }\n    case \"BURN\" /* Burn */: {\n      const contractId = hexOrZero(receipt.id || receipt.contractId);\n      const subId = hexOrZero(receipt.subId);\n      const assetId = getMintedAssetId(contractId, subId);\n      const burnReceipt = {\n        type: ReceiptType.Burn,\n        subId,\n        contractId,\n        assetId,\n        val: bn5(receipt.val),\n        pc: bn5(receipt.pc),\n        is: bn5(receipt.is)\n      };\n      return burnReceipt;\n    }\n    default:\n      throw new FuelError6(ErrorCode6.INVALID_RECEIPT_TYPE, `Invalid receipt type: ${receiptType}.`);\n  }\n}, \"deserializeReceipt\");\nvar deserializeInput = /* @__PURE__ */ __name((input) => {\n  let parsedInput;\n  switch (input.type) {\n    case \"InputCoin\":\n      parsedInput = {\n        type: InputType2.Coin,\n        id: input.utxoId,\n        amount: bn5(input.amount),\n        assetId: input.assetId,\n        owner: input.owner,\n        txPointer: `0x${input.txPointer}`,\n        witnessIndex: Number(input.coinWitnessIndex),\n        predicate: input.predicate,\n        predicateData: input.predicateData,\n        predicateGasUsed: bn5(input.predicateGasUsed)\n      };\n      break;\n    case \"InputMessage\":\n      parsedInput = {\n        type: InputType2.Message,\n        nonce: input.nonce,\n        amount: bn5(input.amount),\n        recipient: input.recipient,\n        sender: input.sender,\n        data: input.data,\n        witnessIndex: Number(input.messageWitnessIndex),\n        predicate: input.predicate,\n        predicateData: input.predicateData,\n        predicateGasUsed: bn5(input.predicateGasUsed)\n      };\n      break;\n    case \"InputContract\":\n      parsedInput = {\n        type: InputType2.Contract,\n        contractId: input.contractId,\n        txPointer: `0x${input.txPointer}`,\n        txID: hexlify5(arrayify2(input.utxoId).slice(0, 32))\n      };\n      break;\n    default:\n      assertUnreachable(input);\n  }\n  return parsedInput;\n}, \"deserializeInput\");\nvar deserializeOutput = /* @__PURE__ */ __name((output) => {\n  let parsedOutput;\n  switch (output.type) {\n    case \"CoinOutput\":\n      parsedOutput = {\n        type: OutputType2.Coin,\n        amount: bn5(output.amount),\n        assetId: output.assetId,\n        to: output.to\n      };\n      break;\n    case \"ContractOutput\":\n      parsedOutput = {\n        type: OutputType2.Contract,\n        inputIndex: Number(output.inputIndex)\n      };\n      break;\n    case \"ChangeOutput\":\n      parsedOutput = {\n        type: OutputType2.Change,\n        assetId: output.assetId,\n        to: output.to\n      };\n      break;\n    case \"ContractCreated\":\n      parsedOutput = {\n        type: OutputType2.ContractCreated,\n        stateRoot: output.stateRoot,\n        contractId: output.contract\n      };\n      break;\n    case \"VariableOutput\":\n      parsedOutput = {\n        type: OutputType2.Variable,\n        amount: bn5(output.amount),\n        assetId: output.assetId,\n        to: output.to\n      };\n      break;\n    default:\n      assertUnreachable(output);\n  }\n  return parsedOutput;\n}, \"deserializeOutput\");\nvar deserializeProcessedTxOutput = /* @__PURE__ */ __name((output) => {\n  let parsedOutput;\n  switch (output.type) {\n    case \"CoinOutput\":\n      parsedOutput = {\n        type: OutputType2.Coin,\n        amount: bn5(output.amount),\n        assetId: output.assetId,\n        to: output.to\n      };\n      break;\n    case \"ContractOutput\":\n      parsedOutput = {\n        type: OutputType2.Contract,\n        inputIndex: Number(output.inputIndex),\n        balanceRoot: output.balanceRoot,\n        stateRoot: output.stateRoot\n      };\n      break;\n    case \"ChangeOutput\":\n      parsedOutput = {\n        type: OutputType2.Change,\n        assetId: output.assetId,\n        to: output.to,\n        amount: bn5(output.amount)\n      };\n      break;\n    case \"ContractCreated\":\n      parsedOutput = {\n        type: OutputType2.ContractCreated,\n        stateRoot: output.stateRoot,\n        contractId: output.contract\n      };\n      break;\n    case \"VariableOutput\":\n      parsedOutput = {\n        type: OutputType2.Variable,\n        amount: bn5(output.amount),\n        assetId: output.assetId,\n        to: output.to\n      };\n      break;\n    default:\n      assertUnreachable(output);\n  }\n  return parsedOutput;\n}, \"deserializeProcessedTxOutput\");\n\n// src/providers/utils/receipts.ts\nvar doesReceiptHaveMissingOutputVariables = /* @__PURE__ */ __name((receipt) => receipt.type === ReceiptType2.Revert && receipt.val.toString(\"hex\") === FAILED_TRANSFER_TO_ADDRESS_SIGNAL, \"doesReceiptHaveMissingOutputVariables\");\nvar doesReceiptHaveMissingContractId = /* @__PURE__ */ __name((receipt) => receipt.type === ReceiptType2.Panic && receipt.contractId !== \"0x0000000000000000000000000000000000000000000000000000000000000000\", \"doesReceiptHaveMissingContractId\");\nvar getReceiptsWithMissingData = /* @__PURE__ */ __name((receipts) => receipts.reduce(\n  (memo, receipt) => {\n    if (doesReceiptHaveMissingOutputVariables(receipt)) {\n      memo.missingOutputVariables.push(receipt);\n    }\n    if (doesReceiptHaveMissingContractId(receipt)) {\n      memo.missingOutputContractIds.push(receipt);\n    }\n    return memo;\n  },\n  {\n    missingOutputVariables: [],\n    missingOutputContractIds: []\n  }\n), \"getReceiptsWithMissingData\");\nvar assembleReceiptByType = /* @__PURE__ */ __name((gqlReceipt) => deserializeReceipt(gqlReceipt), \"assembleReceiptByType\");\n\n// src/providers/utils/block-explorer.ts\nimport { ErrorCode as ErrorCode7, FuelError as FuelError7 } from \"@fuel-ts/errors\";\nvar DEFAULT_BLOCK_EXPLORER_URL = \"https://app.fuel.network\";\nvar getPathFromInput = /* @__PURE__ */ __name((key, value) => {\n  const pathMap = {\n    address: `address`,\n    txId: `transaction`,\n    blockNumber: `block`\n  };\n  const path = pathMap[key] || key;\n  return `${path}/${value}`;\n}, \"getPathFromInput\");\nvar buildBlockExplorerUrl = /* @__PURE__ */ __name((options = {}) => {\n  const { blockExplorerUrl, path, providerUrl, address, txId, blockNumber } = options;\n  const explorerUrl = blockExplorerUrl || DEFAULT_BLOCK_EXPLORER_URL;\n  const customInputParams = [\n    {\n      key: \"address\",\n      value: address\n    },\n    {\n      key: \"txId\",\n      value: txId\n    },\n    {\n      key: \"blockNumber\",\n      value: blockNumber\n    }\n  ];\n  const definedValues = customInputParams.filter((param) => !!param.value).map(({ key, value }) => ({\n    key,\n    value\n  }));\n  const hasAnyDefinedValues = definedValues.length > 0;\n  if (definedValues.length > 1) {\n    throw new FuelError7(\n      ErrorCode7.ERROR_BUILDING_BLOCK_EXPLORER_URL,\n      `Only one of the following can be passed in to buildBlockExplorerUrl: ${customInputParams.map((param) => param.key).join(\", \")}.`\n    );\n  }\n  if (path && definedValues.length > 0) {\n    const inputKeys = customInputParams.map(({ key }) => key).join(\", \");\n    throw new FuelError7(\n      ErrorCode7.ERROR_BUILDING_BLOCK_EXPLORER_URL,\n      `You cannot pass in a path to 'buildBlockExplorerUrl' along with any of the following: ${inputKeys}.`\n    );\n  }\n  const pathGeneratedFromInputParams = hasAnyDefinedValues ? getPathFromInput(\n    definedValues[0].key,\n    definedValues[0].value\n  ) : \"\";\n  const trimSlashes = /^\\/|\\/$/gm;\n  const cleanPath = path ? path.replace(trimSlashes, \"\") : pathGeneratedFromInputParams;\n  const cleanBlockExplorerUrl = explorerUrl.replace(trimSlashes, \"\");\n  const cleanProviderUrl = providerUrl?.replace(trimSlashes, \"\");\n  const encodedProviderUrl = cleanProviderUrl ? encodeURIComponent(cleanProviderUrl) : void 0;\n  const protocol = cleanBlockExplorerUrl.match(/^https?:\\/\\//) ? \"\" : \"https://\";\n  const providerUrlProtocol = cleanProviderUrl?.match(/^https?:\\/\\//) ? \"\" : \"https://\";\n  const url = `${protocol}${cleanBlockExplorerUrl}/${cleanPath}${encodedProviderUrl ? `?providerUrl=${providerUrlProtocol}${encodedProviderUrl}` : \"\"}`;\n  return url;\n}, \"buildBlockExplorerUrl\");\n\n// src/providers/utils/gas.ts\nimport { bn as bn6 } from \"@fuel-ts/math\";\nimport { ReceiptType as ReceiptType3 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify3 } from \"@fuel-ts/utils\";\nvar getGasUsedFromReceipts = /* @__PURE__ */ __name((receipts) => {\n  const scriptResult = receipts.filter(\n    (receipt) => receipt.type === ReceiptType3.ScriptResult\n  );\n  const gasUsed = scriptResult.reduce((prev, receipt) => prev.add(receipt.gasUsed), bn6(0));\n  return gasUsed;\n}, \"getGasUsedFromReceipts\");\nfunction resolveGasDependentCosts(byteSize, gasDependentCost) {\n  const base = bn6(gasDependentCost.base);\n  let dependentValue = bn6(0);\n  if (\"unitsPerGas\" in gasDependentCost) {\n    dependentValue = bn6(byteSize).div(bn6(gasDependentCost.unitsPerGas));\n  } else {\n    dependentValue = bn6(byteSize).mul(bn6(gasDependentCost.gasPerUnit));\n  }\n  return base.add(dependentValue);\n}\n__name(resolveGasDependentCosts, \"resolveGasDependentCosts\");\nfunction gasUsedByInputs(inputs, txBytesSize, gasCosts) {\n  const witnessCache = [];\n  const chargeableInputs = inputs.filter((input) => {\n    const isCoinOrMessage = \"owner\" in input || \"sender\" in input;\n    if (isCoinOrMessage) {\n      if (\"predicate\" in input && input.predicate && input.predicate !== \"0x\") {\n        return true;\n      }\n      if (!witnessCache.includes(input.witnessIndex)) {\n        witnessCache.push(input.witnessIndex);\n        return true;\n      }\n    }\n    return false;\n  });\n  const vmInitializationCost = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);\n  const totalGas = chargeableInputs.reduce((total, input) => {\n    if (\"predicate\" in input && input.predicate && input.predicate !== \"0x\") {\n      return total.add(\n        vmInitializationCost.add(resolveGasDependentCosts(arrayify3(input.predicate).length, gasCosts.contractRoot)).add(bn6(input.predicateGasUsed))\n      );\n    }\n    return total.add(gasCosts.ecr1);\n  }, bn6(0));\n  return totalGas;\n}\n__name(gasUsedByInputs, \"gasUsedByInputs\");\nfunction getMinGas(params) {\n  const { gasCosts, gasPerByte, inputs, metadataGas, txBytesSize } = params;\n  const vmInitGas = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);\n  const bytesGas = bn6(txBytesSize).mul(gasPerByte);\n  const inputsGas = gasUsedByInputs(inputs, txBytesSize, gasCosts);\n  const minGas = vmInitGas.add(bytesGas).add(inputsGas).add(metadataGas).maxU64();\n  return minGas;\n}\n__name(getMinGas, \"getMinGas\");\nfunction getMaxGas(params) {\n  const {\n    gasPerByte,\n    witnessesLength,\n    witnessLimit,\n    minGas,\n    gasLimit = bn6(0),\n    maxGasPerTx\n  } = params;\n  let remainingAllowedWitnessGas = bn6(0);\n  if (witnessLimit?.gt(0) && witnessLimit.gte(witnessesLength)) {\n    remainingAllowedWitnessGas = bn6(witnessLimit).sub(witnessesLength).mul(gasPerByte);\n  }\n  const maxGas = remainingAllowedWitnessGas.add(minGas).add(gasLimit);\n  return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;\n}\n__name(getMaxGas, \"getMaxGas\");\nfunction calculateMetadataGasForTxCreate({\n  gasCosts,\n  stateRootSize,\n  txBytesSize,\n  contractBytesSize\n}) {\n  const contractRootGas = resolveGasDependentCosts(contractBytesSize, gasCosts.contractRoot);\n  const stateRootGas = resolveGasDependentCosts(stateRootSize, gasCosts.stateRoot);\n  const txIdGas = resolveGasDependentCosts(txBytesSize, gasCosts.s256);\n  const contractIdInputSize = bn6(4 + 32 + 32 + 32);\n  const contractIdGas = resolveGasDependentCosts(contractIdInputSize, gasCosts.s256);\n  const metadataGas = contractRootGas.add(stateRootGas).add(txIdGas).add(contractIdGas);\n  return metadataGas.maxU64();\n}\n__name(calculateMetadataGasForTxCreate, \"calculateMetadataGasForTxCreate\");\nfunction calculateMetadataGasForTxScript({\n  gasCosts,\n  txBytesSize\n}) {\n  return resolveGasDependentCosts(txBytesSize, gasCosts.s256);\n}\n__name(calculateMetadataGasForTxScript, \"calculateMetadataGasForTxScript\");\nfunction calculateMetadataGasForTxBlob({\n  gasCosts,\n  txBytesSize,\n  witnessBytesSize\n}) {\n  const txId = resolveGasDependentCosts(txBytesSize, gasCosts.s256);\n  const blobLen = resolveGasDependentCosts(witnessBytesSize, gasCosts.s256);\n  return txId.add(blobLen);\n}\n__name(calculateMetadataGasForTxBlob, \"calculateMetadataGasForTxBlob\");\nfunction calculateMetadataGasForTxUpgrade({\n  gasCosts,\n  txBytesSize,\n  consensusSize\n}) {\n  const txId = resolveGasDependentCosts(txBytesSize, gasCosts.s256);\n  if (consensusSize) {\n    const consensusLen = resolveGasDependentCosts(consensusSize, gasCosts.s256);\n    txId.add(consensusLen);\n  }\n  return txId;\n}\n__name(calculateMetadataGasForTxUpgrade, \"calculateMetadataGasForTxUpgrade\");\nfunction calculateMetadataGasForTxUpload({\n  gasCosts,\n  txBytesSize,\n  subsectionSize,\n  subsectionsSize\n}) {\n  const txId = resolveGasDependentCosts(txBytesSize, gasCosts.s256);\n  const subsectionLen = resolveGasDependentCosts(subsectionSize, gasCosts.s256);\n  txId.add(subsectionLen);\n  const subsectionsLen = resolveGasDependentCosts(subsectionsSize, gasCosts.stateRoot);\n  txId.add(subsectionsLen);\n  return txId;\n}\n__name(calculateMetadataGasForTxUpload, \"calculateMetadataGasForTxUpload\");\nfunction calculateMinGasForTxUpload({\n  gasCosts,\n  baseMinGas,\n  subsectionSize\n}) {\n  const additionalStoragePerByte = bn6(gasCosts.newStoragePerByte).mul(subsectionSize);\n  return bn6(baseMinGas).add(additionalStoragePerByte);\n}\n__name(calculateMinGasForTxUpload, \"calculateMinGasForTxUpload\");\nvar calculateGasFee = /* @__PURE__ */ __name((params) => {\n  const { gas, gasPrice, priceFactor, tip } = params;\n  return gas.mul(gasPrice).div(priceFactor).add(bn6(tip));\n}, \"calculateGasFee\");\n\n// src/providers/utils/json.ts\nimport { hexlify as hexlify6 } from \"@fuel-ts/utils\";\nimport { clone } from \"ramda\";\nfunction normalize(object) {\n  Object.keys(object).forEach((key) => {\n    switch (object[key]?.constructor.name) {\n      case \"Uint8Array\":\n        object[key] = hexlify6(object[key]);\n        break;\n      case \"Array\":\n        object[key] = normalize(object[key]);\n        break;\n      case \"BN\":\n        object[key] = object[key].toHex();\n        break;\n      case \"Address\":\n        object[key] = object[key].toB256();\n        break;\n      case \"Object\":\n        object[key] = normalize(object[key]);\n        break;\n      default:\n        break;\n    }\n  });\n  return object;\n}\n__name(normalize, \"normalize\");\nfunction normalizeJSON(root) {\n  return normalize(clone(root));\n}\n__name(normalizeJSON, \"normalizeJSON\");\n\n// src/providers/utils/extract-tx-error.ts\nimport { ErrorCode as ErrorCode8, FuelError as FuelError8 } from \"@fuel-ts/errors\";\nimport { bn as bn7 } from \"@fuel-ts/math\";\nimport { ReceiptType as ReceiptType4 } from \"@fuel-ts/transactions\";\nimport {\n  FAILED_REQUIRE_SIGNAL,\n  FAILED_ASSERT_EQ_SIGNAL,\n  FAILED_ASSERT_NE_SIGNAL,\n  FAILED_ASSERT_SIGNAL,\n  FAILED_TRANSFER_TO_ADDRESS_SIGNAL as FAILED_TRANSFER_TO_ADDRESS_SIGNAL2,\n  PANIC_REASONS,\n  PANIC_DOC_URL,\n  SwaySignalErrors\n} from \"@fuel-ts/transactions/configs\";\nvar assemblePanicError = /* @__PURE__ */ __name((statusReason, metadata) => {\n  let errorMessage = `The transaction reverted with reason: \"${statusReason}\".`;\n  if (PANIC_REASONS.includes(statusReason)) {\n    errorMessage = `${errorMessage}\n\nYou can read more about this error at:\n\n${PANIC_DOC_URL}#variant.${statusReason}`;\n  }\n  return new FuelError8(ErrorCode8.SCRIPT_REVERTED, errorMessage, {\n    ...metadata,\n    reason: statusReason\n  });\n}, \"assemblePanicError\");\nvar stringify = /* @__PURE__ */ __name((obj) => JSON.stringify(obj, null, 2), \"stringify\");\nvar assembleSignalErrorMessage = /* @__PURE__ */ __name((reasonHex, logs, metadata) => {\n  let errorMessage = \"The transaction reverted with an unknown reason.\";\n  let reason = \"\";\n  const lastLog = logs[logs.length - 1];\n  const lastButOneLog = logs[logs.length - 2];\n  switch (reasonHex) {\n    case FAILED_REQUIRE_SIGNAL: {\n      reason = \"require\";\n      errorMessage = `The transaction reverted because a \"require\" statement has thrown ${logs.length ? stringify(lastLog) : \"an error.\"}.`;\n      break;\n    }\n    case FAILED_ASSERT_EQ_SIGNAL: {\n      const suffix = logs.length >= 2 ? ` comparing ${stringify(lastLog)} and ${stringify(lastButOneLog)}.` : \".\";\n      reason = \"assert_eq\";\n      errorMessage = `The transaction reverted because of an \"assert_eq\" statement${suffix}`;\n      break;\n    }\n    case FAILED_ASSERT_NE_SIGNAL: {\n      const suffix = logs.length >= 2 ? ` comparing ${stringify(lastButOneLog)} and ${stringify(lastLog)}.` : \".\";\n      reason = \"assert_ne\";\n      errorMessage = `The transaction reverted because of an \"assert_ne\" statement${suffix}`;\n      break;\n    }\n    case FAILED_ASSERT_SIGNAL:\n      reason = \"assert\";\n      errorMessage = `The transaction reverted because an \"assert\" statement failed to evaluate to true.`;\n      break;\n    case FAILED_TRANSFER_TO_ADDRESS_SIGNAL2:\n      reason = \"MissingOutputVariable\";\n      errorMessage = `The transaction reverted because it's missing an \"OutputVariable\".`;\n      break;\n    default:\n      reason = `revert_with_log`;\n      errorMessage = `The transaction reverted because a \"revert_with_log\" statement has thrown ${logs.length ? stringify(lastLog) : \"an error.\"}.`;\n      break;\n  }\n  return new FuelError8(ErrorCode8.SCRIPT_REVERTED, errorMessage, {\n    ...metadata,\n    reason\n  });\n}, \"assembleSignalErrorMessage\");\nfunction buildAbiErrorMessage(abiError, logs, metadata, reason) {\n  const { pos, msg } = abiError;\n  let errorMessage = \"\";\n  const positionMessage = pos ? `\n\nThis error originated at ${JSON.stringify(pos, null, 2)}` : \"\";\n  if (msg) {\n    errorMessage = `A sway \"panic\" expression was invoked with the message: \"${msg}\".${positionMessage}`;\n  } else {\n    const value = logs[logs.length - 1];\n    errorMessage = `A sway \"panic\" expression was invoked with the value: ${JSON.stringify(value)}.${positionMessage}`;\n  }\n  return new FuelError8(ErrorCode8.SCRIPT_REVERTED, errorMessage, {\n    ...metadata,\n    reason\n  });\n}\n__name(buildAbiErrorMessage, \"buildAbiErrorMessage\");\nfunction findErrorInAbis(statusReason, abis = []) {\n  for (const abi of abis) {\n    if (abi.errorCodes?.[statusReason]) {\n      return abi.errorCodes[statusReason];\n    }\n  }\n  return void 0;\n}\n__name(findErrorInAbis, \"findErrorInAbis\");\nvar assembleRevertError = /* @__PURE__ */ __name((_receipts, logs, metadata, statusReason, abis) => {\n  const match = statusReason.match(/Revert\\((\\d+)\\)/);\n  const reason = match?.[1] ?? statusReason;\n  const reasonHex = bn7(reason).toHex();\n  if (Object.values(SwaySignalErrors).includes(reasonHex)) {\n    return assembleSignalErrorMessage(reasonHex, logs, metadata);\n  }\n  let abiError;\n  if (abis) {\n    const abisArr = [abis.main, ...Object.values(abis.otherContractsAbis)];\n    abiError = findErrorInAbis(reason, abisArr);\n  }\n  if (abiError) {\n    return buildAbiErrorMessage(abiError, logs, metadata, reason);\n  }\n  const errorMessage = `The transaction reverted with reason: ${reason}.`;\n  return new FuelError8(ErrorCode8.SCRIPT_REVERTED, errorMessage, {\n    ...metadata,\n    reason\n  });\n}, \"assembleRevertError\");\nvar extractTxError = /* @__PURE__ */ __name((params) => {\n  const { receipts, statusReason, logs, groupedLogs, abis } = params;\n  const isPanic = receipts.some(({ type }) => type === ReceiptType4.Panic);\n  const isRevert = receipts.some(({ type }) => type === ReceiptType4.Revert);\n  const metadata = {\n    logs,\n    groupedLogs,\n    receipts,\n    panic: isPanic,\n    revert: isRevert,\n    reason: \"\"\n  };\n  if (isPanic) {\n    return assemblePanicError(statusReason, metadata);\n  }\n  return assembleRevertError(receipts, logs, metadata, statusReason, abis);\n}, \"extractTxError\");\n\n// src/providers/utils/merge-quantities.ts\nvar mergeQuantities = /* @__PURE__ */ __name((...coinQuantities) => {\n  const resultMap = {};\n  function addToMap({ amount, assetId }) {\n    if (resultMap[assetId]) {\n      resultMap[assetId] = resultMap[assetId].add(amount);\n    } else {\n      resultMap[assetId] = amount;\n    }\n  }\n  __name(addToMap, \"addToMap\");\n  coinQuantities.forEach((arr) => arr.forEach(addToMap));\n  return Object.entries(resultMap).map(([assetId, amount]) => ({ assetId, amount }));\n}, \"mergeQuantities\");\n\n// src/providers/transaction-request/errors.ts\nvar ChangeOutputCollisionError = class extends Error {\n  static {\n    __name(this, \"ChangeOutputCollisionError\");\n  }\n  name = \"ChangeOutputCollisionError\";\n  message = 'A ChangeOutput with the same \"assetId\" already exists for a different \"to\" address';\n};\nvar NoWitnessAtIndexError = class extends Error {\n  constructor(index) {\n    super();\n    this.index = index;\n    this.message = `Witness at index \"${index}\" was not found`;\n  }\n  static {\n    __name(this, \"NoWitnessAtIndexError\");\n  }\n  name = \"NoWitnessAtIndexError\";\n};\nvar NoWitnessByOwnerError = class extends Error {\n  constructor(owner) {\n    super();\n    this.owner = owner;\n    this.message = `A witness for the given owner \"${owner}\" was not found`;\n  }\n  static {\n    __name(this, \"NoWitnessByOwnerError\");\n  }\n  name = \"NoWitnessByOwnerError\";\n};\n\n// src/providers/transaction-request/helpers.ts\nimport { ErrorCode as ErrorCode9, FuelError as FuelError9 } from \"@fuel-ts/errors\";\nimport { bn as bn8 } from \"@fuel-ts/math\";\nimport { InputType as InputType3, OutputType as OutputType3 } from \"@fuel-ts/transactions\";\nimport { hexlify as hexlify7 } from \"@fuel-ts/utils\";\nvar isRequestInputCoin = /* @__PURE__ */ __name((input) => input.type === InputType3.Coin, \"isRequestInputCoin\");\nvar isRequestInputMessage = /* @__PURE__ */ __name((input) => input.type === InputType3.Message, \"isRequestInputMessage\");\nvar isRequestInputMessageWithoutData = /* @__PURE__ */ __name((input) => input.type === InputType3.Message && bn8(input.data).isZero(), \"isRequestInputMessageWithoutData\");\nvar isRequestInputCoinOrMessage = /* @__PURE__ */ __name((input) => isRequestInputCoin(input) || isRequestInputMessage(input), \"isRequestInputCoinOrMessage\");\nvar isRequestInputResource = /* @__PURE__ */ __name((input) => isRequestInputCoin(input) || isRequestInputMessageWithoutData(input), \"isRequestInputResource\");\nvar getRequestInputResourceOwner = /* @__PURE__ */ __name((input) => isRequestInputCoin(input) ? input.owner : input.recipient, \"getRequestInputResourceOwner\");\nvar isRequestInputResourceFromOwner = /* @__PURE__ */ __name((input, owner) => getRequestInputResourceOwner(input) === owner.toB256(), \"isRequestInputResourceFromOwner\");\nvar isPredicate = /* @__PURE__ */ __name((input) => isRequestInputCoinOrMessage(input) && !!input.predicate && hexlify7(input.predicate) !== \"0x\", \"isPredicate\");\nvar getAssetAmountInRequestInputs = /* @__PURE__ */ __name((inputs, assetId, baseAsset) => inputs.filter(isRequestInputResource).reduce((acc, input) => {\n  if (isRequestInputCoin(input) && input.assetId === assetId) {\n    return acc.add(input.amount);\n  }\n  if (isRequestInputMessage(input) && assetId === baseAsset) {\n    return acc.add(input.amount);\n  }\n  return acc;\n}, bn8(0)), \"getAssetAmountInRequestInputs\");\nvar cacheRequestInputsResources = /* @__PURE__ */ __name((inputs) => inputs.filter(isRequestInputResource).reduce(\n  (cache2, input) => {\n    if (isRequestInputCoin(input)) {\n      cache2.utxos.push(input.id);\n    } else {\n      cache2.messages.push(input.nonce);\n    }\n    return cache2;\n  },\n  {\n    utxos: [],\n    messages: []\n  }\n), \"cacheRequestInputsResources\");\nvar cacheRequestInputsResourcesFromOwner = /* @__PURE__ */ __name((inputs, owner) => inputs.reduce(\n  (acc, input) => {\n    if (isRequestInputCoin(input) && input.owner === owner.toB256()) {\n      acc.utxos.push(input.id);\n    } else if (isRequestInputMessage(input) && input.recipient === owner.toB256()) {\n      acc.messages.push(input.nonce);\n    }\n    return acc;\n  },\n  {\n    utxos: [],\n    messages: []\n  }\n), \"cacheRequestInputsResourcesFromOwner\");\nvar getBurnableAssetCount = /* @__PURE__ */ __name((baseAssetId, transactionRequest) => {\n  const { inputs, outputs } = transactionRequest;\n  const coinInputs = new Set(inputs.filter(isRequestInputCoin).map((input) => input.assetId));\n  if (inputs.some((i) => isRequestInputMessage(i) && bn8(i.amount).gt(0))) {\n    coinInputs.add(baseAssetId);\n  }\n  const changeOutputs = new Set(\n    outputs.filter((output) => output.type === OutputType3.Change).map((output) => output.assetId)\n  );\n  const difference = new Set([...coinInputs].filter((x) => !changeOutputs.has(x)));\n  return difference.size;\n}, \"getBurnableAssetCount\");\nvar validateTransactionForAssetBurn = /* @__PURE__ */ __name((baseAssetId, transactionRequest, enableAssetBurn = false) => {\n  if (enableAssetBurn === true) {\n    return;\n  }\n  if (getBurnableAssetCount(baseAssetId, transactionRequest) <= 0) {\n    return;\n  }\n  const message = [\n    \"Asset burn detected.\",\n    \"Add the relevant change outputs to the transaction to avoid burning assets.\",\n    \"Or enable asset burn, upon sending the transaction.\"\n  ].join(\"\\n\");\n  throw new FuelError9(ErrorCode9.ASSET_BURN_DETECTED, message);\n}, \"validateTransactionForAssetBurn\");\n\n// src/providers/transaction-request/witness.ts\nimport { arrayify as arrayify4, hexlify as hexlify8 } from \"@fuel-ts/utils\";\nvar witnessify = /* @__PURE__ */ __name((value) => {\n  const data = arrayify4(value);\n  return {\n    data: hexlify8(data),\n    dataLength: data.length\n  };\n}, \"witnessify\");\n\n// src/providers/transaction-request/transaction-request.ts\nvar BaseTransactionRequest = class _BaseTransactionRequest {\n  static {\n    __name(this, \"BaseTransactionRequest\");\n  }\n  /** Gas price for transaction */\n  tip;\n  /** Block until which tx cannot be included */\n  maturity;\n  /** The block number after which the transaction is no longer valid. */\n  expiration;\n  /** The maximum fee payable by this transaction using BASE_ASSET. */\n  maxFee;\n  /** The maximum amount of witness data allowed for the transaction */\n  witnessLimit;\n  /** List of inputs */\n  inputs = [];\n  /** List of outputs */\n  outputs = [];\n  /** List of witnesses */\n  witnesses = [];\n  /**\n   * The current status of the transaction\n   */\n  flag = { state: void 0, transactionId: void 0, summary: void 0 };\n  /**\n   * Constructor for initializing a base transaction request.\n   *\n   * @param baseTransactionRequest - Optional object containing properties to initialize the transaction request.\n   */\n  constructor({\n    tip,\n    maturity,\n    expiration,\n    maxFee,\n    witnessLimit,\n    inputs,\n    outputs,\n    witnesses,\n    flag\n  } = {}) {\n    this.tip = tip ? bn9(tip) : void 0;\n    this.maturity = maturity && maturity > 0 ? maturity : void 0;\n    this.expiration = expiration && expiration > 0 ? expiration : void 0;\n    this.witnessLimit = isDefined2(witnessLimit) ? bn9(witnessLimit) : void 0;\n    this.maxFee = bn9(maxFee);\n    this.inputs = inputs ?? [];\n    this.outputs = outputs ?? [];\n    this.witnesses = witnesses ?? [];\n    this.flag = flag ?? { state: void 0, transactionId: void 0, summary: void 0 };\n  }\n  static getPolicyMeta(req) {\n    let policyTypes = 0;\n    const policies = [];\n    const { tip, witnessLimit, maturity, expiration } = req;\n    if (bn9(tip).gt(0)) {\n      policyTypes += PolicyType.Tip;\n      policies.push({ data: bn9(tip), type: PolicyType.Tip });\n    }\n    if (isDefined2(witnessLimit) && bn9(witnessLimit).gte(0)) {\n      policyTypes += PolicyType.WitnessLimit;\n      policies.push({ data: bn9(witnessLimit), type: PolicyType.WitnessLimit });\n    }\n    if (maturity && maturity > 0) {\n      policyTypes += PolicyType.Maturity;\n      policies.push({ data: maturity, type: PolicyType.Maturity });\n    }\n    policyTypes += PolicyType.MaxFee;\n    policies.push({ data: req.maxFee, type: PolicyType.MaxFee });\n    if (expiration && expiration > 0) {\n      policyTypes += PolicyType.Expiration;\n      policies.push({ data: expiration, type: PolicyType.Expiration });\n    }\n    return {\n      policyTypes,\n      policies\n    };\n  }\n  /**\n   * Method to obtain the base transaction details.\n   *\n   * @returns The base transaction details.\n   */\n  getBaseTransaction() {\n    const inputs = this.inputs?.map(inputify) ?? [];\n    const outputs = this.outputs?.map(outputify) ?? [];\n    const witnesses = this.witnesses?.map(witnessify) ?? [];\n    const { policyTypes, policies } = _BaseTransactionRequest.getPolicyMeta(this);\n    return {\n      policyTypes,\n      inputs,\n      outputs,\n      policies,\n      witnesses,\n      inputsCount: inputs.length,\n      outputsCount: outputs.length,\n      witnessesCount: witnesses.length\n    };\n  }\n  /**\n   * Converts the transaction request to a byte array.\n   *\n   * @returns The transaction bytes.\n   */\n  toTransactionBytes() {\n    return new TransactionCoder().encode(this.toTransaction());\n  }\n  /**\n   * @hidden\n   *\n   * Pushes an input to the list without any side effects and returns the index\n   */\n  pushInput(input) {\n    this.inputs.push(input);\n    return this.inputs.length - 1;\n  }\n  /**\n   * @hidden\n   *\n   * Pushes an output to the list without any side effects and returns the index\n   */\n  pushOutput(output) {\n    this.outputs.push(output);\n    return this.outputs.length - 1;\n  }\n  /**\n   * @hidden\n   *\n   * Pushes a witness to the list and returns the index\n   *\n   * @param signature - The signature to add to the witness.\n   * @returns The index of the created witness.\n   */\n  addWitness(signature) {\n    this.witnesses.push(signature);\n    return this.witnesses.length - 1;\n  }\n  /**\n   * @hidden\n   *\n   * Creates an empty witness without any side effects and returns the index\n   *\n   * @returns The index of the created witness.\n   */\n  addEmptyWitness() {\n    return this.addWitness(concat([ZeroBytes324, ZeroBytes324]));\n  }\n  /**\n   * Updates the witness for a given owner and signature.\n   *\n   * @param address - The address to get the coin input witness index for.\n   * @param signature - The signature to update the witness with.\n   */\n  updateWitnessByOwner(address, signature) {\n    const ownerAddress = new Address(address);\n    const witnessIndex = this.getCoinInputWitnessIndexByOwner(ownerAddress);\n    if (typeof witnessIndex === \"number\") {\n      this.updateWitness(witnessIndex, signature);\n    }\n  }\n  /**\n   * Updates an existing witness without any side effects.\n   *\n   * @param index - The index of the witness to update.\n   * @param witness - The new witness.\n   * @throws If the witness does not exist.\n   */\n  updateWitness(index, witness) {\n    if (!this.witnesses[index]) {\n      throw new NoWitnessAtIndexError(index);\n    }\n    this.witnesses[index] = witness;\n  }\n  /**\n   * Helper function to add an external signature to the transaction.\n   *\n   * @param account - The account/s to sign to the transaction.\n   * @returns The transaction with the signature witness added.\n   */\n  async addAccountWitnesses(account) {\n    const accounts = Array.isArray(account) ? account : [account];\n    await Promise.all(\n      accounts.map(async (acc) => {\n        this.addWitness(await acc.signTransaction(this));\n      })\n    );\n    return this;\n  }\n  /**\n   * Gets the coin inputs for a transaction.\n   *\n   * @returns The coin inputs.\n   */\n  getCoinInputs() {\n    return this.inputs.filter(\n      (input) => input.type === InputType4.Coin\n    );\n  }\n  /**\n   * Gets the coin outputs for a transaction.\n   *\n   * @returns The coin outputs.\n   */\n  getCoinOutputs() {\n    return this.outputs.filter(\n      (output) => output.type === OutputType4.Coin\n    );\n  }\n  /**\n   * Gets the change outputs for a transaction.\n   *\n   * @returns The change outputs.\n   */\n  getChangeOutputs() {\n    return this.outputs.filter(\n      (output) => output.type === OutputType4.Change\n    );\n  }\n  /**\n   * @hidden\n   *\n   * Returns the witnessIndex of the found CoinInput.\n   */\n  getCoinInputWitnessIndexByOwner(owner) {\n    const ownerAddress = addressify(owner);\n    const found = this.inputs.find((input) => {\n      switch (input.type) {\n        case InputType4.Coin:\n          return hexlify9(input.owner) === ownerAddress.toB256();\n        case InputType4.Message:\n          return hexlify9(input.recipient) === ownerAddress.toB256();\n        default:\n          return false;\n      }\n    });\n    return found?.witnessIndex;\n  }\n  /**\n   * Adds a single coin input to the transaction and a change output for the related\n   * assetId, if one it was not added yet.\n   *\n   * @param coin - Coin resource.\n   */\n  addCoinInput(coin) {\n    const { assetId, owner, amount, id, predicate, predicateData } = coin;\n    let witnessIndex;\n    if (coin.predicate) {\n      witnessIndex = 0;\n    } else {\n      witnessIndex = this.getCoinInputWitnessIndexByOwner(owner);\n      if (typeof witnessIndex !== \"number\") {\n        witnessIndex = this.addEmptyWitness();\n      }\n    }\n    const input = {\n      id,\n      type: InputType4.Coin,\n      owner: owner.toB256(),\n      amount,\n      assetId,\n      txPointer: \"0x00000000000000000000000000000000\",\n      witnessIndex,\n      predicate,\n      predicateData\n    };\n    this.pushInput(input);\n    this.addChangeOutput(owner, assetId);\n  }\n  /**\n   * Adds a single message input to the transaction and a change output for the\n   * asset against the message\n   *\n   * @param message - Message resource.\n   */\n  addMessageInput(message) {\n    const { recipient, sender, amount, predicate, nonce, predicateData } = message;\n    let witnessIndex;\n    if (message.predicate) {\n      witnessIndex = 0;\n    } else {\n      witnessIndex = this.getCoinInputWitnessIndexByOwner(recipient);\n      if (typeof witnessIndex !== \"number\") {\n        witnessIndex = this.addEmptyWitness();\n      }\n    }\n    const input = {\n      nonce,\n      type: InputType4.Message,\n      sender: sender.toB256(),\n      recipient: recipient.toB256(),\n      data: isMessageCoin(message) ? \"0x\" : message.data,\n      amount,\n      witnessIndex,\n      predicate,\n      predicateData\n    };\n    this.pushInput(input);\n    if (isMessageCoin(message)) {\n      this.addChangeOutput(recipient, message.assetId);\n    }\n  }\n  /**\n   * Adds a single resource to the transaction by adding a coin/message input and a\n   * change output for the related assetId, if one it was not added yet.\n   *\n   * @param resource - The resource to add.\n   * @returns This transaction.\n   */\n  addResource(resource) {\n    if (isCoin(resource)) {\n      this.addCoinInput(resource);\n    } else {\n      this.addMessageInput(resource);\n    }\n    return this;\n  }\n  /**\n   * Adds multiple resources to the transaction by adding coin/message inputs and change\n   * outputs from the related assetIds.\n   *\n   * @param resources - The resources to add.\n   * @returns This transaction.\n   */\n  addResources(resources) {\n    resources.forEach((resource) => this.addResource(resource));\n    return this;\n  }\n  /**\n   * Adds a coin output to the transaction.\n   *\n   * @param to - Address of the owner.\n   * @param amount - Amount of coin.\n   * @param assetId - Asset ID of coin.\n   */\n  addCoinOutput(to, amount, assetId) {\n    this.pushOutput({\n      type: OutputType4.Coin,\n      to: addressify(to).toB256(),\n      amount,\n      assetId\n    });\n    return this;\n  }\n  /**\n   * Adds multiple coin outputs to the transaction.\n   *\n   * @param to - Address of the destination.\n   * @param quantities - Quantities of coins.\n   */\n  addCoinOutputs(to, quantities) {\n    quantities.map(coinQuantityfy).forEach((quantity) => {\n      this.pushOutput({\n        type: OutputType4.Coin,\n        to: addressify(to).toB256(),\n        amount: quantity.amount,\n        assetId: quantity.assetId\n      });\n    });\n    return this;\n  }\n  /**\n   * Adds a change output to the transaction.\n   *\n   * @param to - Address of the owner.\n   * @param assetId - Asset ID of coin.\n   */\n  addChangeOutput(to, assetId) {\n    const changeOutput = this.getChangeOutputs().find(\n      (output) => hexlify9(output.assetId) === assetId\n    );\n    if (!changeOutput) {\n      this.pushOutput({\n        type: OutputType4.Change,\n        to: addressify(to).toB256(),\n        assetId\n      });\n    }\n  }\n  /**\n   * @hidden\n   */\n  byteSize() {\n    return this.toTransactionBytes().length;\n  }\n  /**\n   * @hidden\n   */\n  metadataGas(_gasCosts) {\n    throw new FuelError10(FuelError10.CODES.NOT_IMPLEMENTED, \"Not implemented\");\n  }\n  /**\n   * @hidden\n   */\n  calculateMinGas(chainInfo) {\n    const { consensusParameters } = chainInfo;\n    const {\n      gasCosts,\n      feeParameters: { gasPerByte }\n    } = consensusParameters;\n    return getMinGas({\n      gasPerByte,\n      gasCosts,\n      inputs: this.inputs,\n      txBytesSize: this.byteSize(),\n      metadataGas: this.metadataGas(gasCosts)\n    });\n  }\n  calculateMaxGas(chainInfo, minGas) {\n    const { consensusParameters } = chainInfo;\n    const {\n      feeParameters: { gasPerByte },\n      txParameters: { maxGasPerTx }\n    } = consensusParameters;\n    const witnessesLength = this.toTransaction().witnesses.reduce(\n      (acc, wit) => acc + wit.dataLength,\n      0\n    );\n    return getMaxGas({\n      gasPerByte,\n      minGas,\n      witnessesLength,\n      witnessLimit: this.witnessLimit,\n      maxGasPerTx\n    });\n  }\n  /**\n   * Funds the transaction with fake UTXOs for each assetId and amount in the\n   * quantities array.\n   *\n   * @param quantities - CoinQuantity Array.\n   * @param baseAssetId - The base asset to fund the transaction.\n   * @deprecated - This method is deprecated and will be removed in future versions.\n   * Please use `Account.generateFakeResources` along with `this.addResources` instead.\n   */\n  fundWithFakeUtxos(quantities, baseAssetId, resourcesOwner) {\n    const findAssetInput = /* @__PURE__ */ __name((assetId) => this.inputs.find((input) => {\n      if (\"assetId\" in input) {\n        return input.assetId === assetId;\n      }\n      return false;\n    }), \"findAssetInput\");\n    const updateAssetInput = /* @__PURE__ */ __name((assetId, quantity) => {\n      const assetInput = findAssetInput(assetId);\n      let usedQuantity = quantity;\n      if (assetId === baseAssetId) {\n        usedQuantity = bn9(\"1000000000000000000\");\n      }\n      if (assetInput && \"assetId\" in assetInput) {\n        assetInput.id = hexlify9(randomBytes(UTXO_ID_LEN2));\n        assetInput.amount = usedQuantity;\n      } else {\n        this.addResources([\n          {\n            id: hexlify9(randomBytes(UTXO_ID_LEN2)),\n            amount: usedQuantity,\n            assetId,\n            owner: resourcesOwner || Address.fromRandom(),\n            blockCreated: bn9(1),\n            txCreatedIdx: bn9(1)\n          }\n        ]);\n      }\n    }, \"updateAssetInput\");\n    updateAssetInput(baseAssetId, bn9(1e11));\n    quantities.forEach((q) => updateAssetInput(q.assetId, q.amount));\n    return this;\n  }\n  /**\n   * Retrieves an array of CoinQuantity for each coin output present in the transaction.\n   * a transaction.\n   *\n   * @returns  CoinQuantity array.\n   */\n  getCoinOutputsQuantities() {\n    const coinsQuantities = this.getCoinOutputs().map(({ amount, assetId }) => ({\n      amount: bn9(amount),\n      assetId: assetId.toString()\n    }));\n    return coinsQuantities;\n  }\n  /**\n   * Return the minimum amount in native coins required to create\n   * a transaction.\n   *\n   * @returns The transaction as a JSON object.\n   */\n  toJSON() {\n    return normalizeJSON(this);\n  }\n  removeWitness(index) {\n    this.witnesses.splice(index, 1);\n    this.adjustWitnessIndexes(index);\n  }\n  adjustWitnessIndexes(removedIndex) {\n    this.inputs.filter(isRequestInputResource).forEach((input) => {\n      if (input.witnessIndex > removedIndex) {\n        input.witnessIndex -= 1;\n      }\n    });\n  }\n  updatePredicateGasUsed(inputs) {\n    const inputsToExtractGasUsed = inputs.filter(isRequestInputCoinOrMessage);\n    this.inputs.filter(isRequestInputResource).forEach((i) => {\n      const owner = getRequestInputResourceOwner(i);\n      const correspondingInput = inputsToExtractGasUsed.find(\n        (x) => isRequestInputResourceFromOwner(x, new Address(String(owner)))\n      );\n      if (correspondingInput && \"predicateGasUsed\" in correspondingInput && bn9(correspondingInput.predicateGasUsed).gt(0)) {\n        i.predicateGasUsed = correspondingInput.predicateGasUsed;\n      }\n    });\n  }\n  byteLength() {\n    return this.toTransactionBytes().byteLength;\n  }\n  /**\n   * @hidden\n   *\n   * Used internally to update the state of a transaction request.\n   *\n   * @param state - The state to update.\n   */\n  updateState(chainId, state, summary) {\n    if (!state) {\n      this.flag = { state: void 0, transactionId: void 0, summary: void 0 };\n      return;\n    }\n    const transactionId = this.getTransactionId(chainId);\n    this.flag = { state, transactionId, summary };\n  }\n};\n\n// src/providers/transaction-request/blob-transaction-request.ts\nimport { clone as clone3 } from \"ramda\";\n\n// src/providers/transaction-request/hash-transaction.ts\nimport { ZeroBytes32 as ZeroBytes325 } from \"@fuel-ts/address/configs\";\nimport { uint64ToBytesBE, sha256 } from \"@fuel-ts/hasher\";\nimport { bn as bn10 } from \"@fuel-ts/math\";\nimport { TransactionType as TransactionType3, InputType as InputType5, OutputType as OutputType5, TransactionCoder as TransactionCoder2 } from \"@fuel-ts/transactions\";\nimport { concat as concat2 } from \"@fuel-ts/utils\";\nimport { clone as clone2 } from \"ramda\";\nfunction hashTransaction(transactionRequest, chainId) {\n  const transaction = transactionRequest.toTransaction();\n  if (transaction.type === TransactionType3.Script) {\n    transaction.receiptsRoot = ZeroBytes325;\n  }\n  transaction.inputs = transaction.inputs.map((input) => {\n    const inputClone = clone2(input);\n    switch (inputClone.type) {\n      // Zero out on signing: txPointer, predicateGasUsed\n      case InputType5.Coin: {\n        inputClone.txPointer = {\n          blockHeight: 0,\n          txIndex: 0\n        };\n        inputClone.predicateGasUsed = bn10(0);\n        return inputClone;\n      }\n      // Zero out on signing: predicateGasUsed\n      case InputType5.Message: {\n        inputClone.predicateGasUsed = bn10(0);\n        return inputClone;\n      }\n      // Zero out on signing: txID, outputIndex, balanceRoot, stateRoot, and txPointer\n      case InputType5.Contract: {\n        inputClone.txPointer = {\n          blockHeight: 0,\n          txIndex: 0\n        };\n        inputClone.txID = ZeroBytes325;\n        inputClone.outputIndex = 0;\n        inputClone.balanceRoot = ZeroBytes325;\n        inputClone.stateRoot = ZeroBytes325;\n        return inputClone;\n      }\n      default:\n        return inputClone;\n    }\n  });\n  transaction.outputs = transaction.outputs.map((output) => {\n    const outputClone = clone2(output);\n    switch (outputClone.type) {\n      // Zero out on signing: balanceRoot, stateRoot\n      case OutputType5.Contract: {\n        outputClone.balanceRoot = ZeroBytes325;\n        outputClone.stateRoot = ZeroBytes325;\n        return outputClone;\n      }\n      // Zero out on signing: amount\n      case OutputType5.Change: {\n        outputClone.amount = bn10(0);\n        return outputClone;\n      }\n      // Zero out on signing: amount, to and assetId\n      case OutputType5.Variable: {\n        outputClone.to = ZeroBytes325;\n        outputClone.amount = bn10(0);\n        outputClone.assetId = ZeroBytes325;\n        return outputClone;\n      }\n      default:\n        return outputClone;\n    }\n  });\n  transaction.witnessesCount = 0;\n  transaction.witnesses = [];\n  const chainIdBytes = uint64ToBytesBE(chainId);\n  const concatenatedData = concat2([chainIdBytes, new TransactionCoder2().encode(transaction)]);\n  return sha256(concatenatedData);\n}\n__name(hashTransaction, \"hashTransaction\");\n\n// src/providers/transaction-request/blob-transaction-request.ts\nvar BlobTransactionRequest = class extends BaseTransactionRequest {\n  static {\n    __name(this, \"BlobTransactionRequest\");\n  }\n  static from(obj) {\n    return new this(clone3(obj));\n  }\n  /** Type of the transaction */\n  type = TransactionType2.Blob;\n  /** Blob ID */\n  blobId;\n  /** Witness index of the bytecode to create */\n  witnessIndex;\n  /**\n   * Creates an instance `BlobTransactionRequest`.\n   *\n   * @param blobTransactionRequestLike - The initial values for the instance\n   */\n  constructor({ witnessIndex, blobId, ...rest }) {\n    super(rest);\n    this.blobId = blobId;\n    this.witnessIndex = witnessIndex ?? 0;\n  }\n  /**\n   * Converts the transaction request to a `TransactionBlob`.\n   *\n   * @returns The transaction create object.\n   */\n  toTransaction() {\n    const baseTransaction = this.getBaseTransaction();\n    const { witnessIndex, blobId } = this;\n    return {\n      type: TransactionType2.Blob,\n      ...baseTransaction,\n      blobId,\n      witnessIndex\n    };\n  }\n  /**\n   * Gets the Transaction Request by hashing the transaction.\n   *\n   * @param chainId - The chain ID.\n   *\n   * @returns - A hash of the transaction, which is the transaction ID.\n   */\n  getTransactionId(chainId) {\n    return hashTransaction(this, chainId);\n  }\n  /**\n   * Calculates the metadata gas cost for a blob transaction.\n   *\n   * @param gasCosts - gas costs passed from the chain.\n   * @returns metadata gas cost for the blob transaction.\n   */\n  metadataGas(gasCosts) {\n    return calculateMetadataGasForTxBlob({\n      gasCosts,\n      txBytesSize: this.byteSize(),\n      witnessBytesSize: this.witnesses[this.witnessIndex].length\n    });\n  }\n};\n\n// src/providers/transaction-request/create-transaction-request.ts\nimport { ZeroBytes32 as ZeroBytes326 } from \"@fuel-ts/address/configs\";\nimport { bn as bn11 } from \"@fuel-ts/math\";\nimport { TransactionType as TransactionType4, OutputType as OutputType6 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify6, hexlify as hexlify11 } from \"@fuel-ts/utils\";\nimport { clone as clone4 } from \"ramda\";\n\n// src/providers/transaction-request/storage-slot.ts\nimport { arrayify as arrayify5, hexlify as hexlify10 } from \"@fuel-ts/utils\";\nvar getStorageValue = /* @__PURE__ */ __name((value) => {\n  const v = new Uint8Array(32);\n  v.set(arrayify5(value));\n  return v;\n}, \"getStorageValue\");\nvar storageSlotify = /* @__PURE__ */ __name((storageSlot) => {\n  let key;\n  let value;\n  if (Array.isArray(storageSlot)) {\n    key = storageSlot[0];\n    value = storageSlot[1];\n  } else {\n    key = storageSlot.key;\n    value = storageSlot.value;\n  }\n  return {\n    key: hexlify10(key),\n    value: hexlify10(getStorageValue(value))\n  };\n}, \"storageSlotify\");\n\n// src/providers/transaction-request/create-transaction-request.ts\nvar CreateTransactionRequest = class extends BaseTransactionRequest {\n  static {\n    __name(this, \"CreateTransactionRequest\");\n  }\n  static from(obj) {\n    return new this(clone4(obj));\n  }\n  /** Type of the transaction */\n  type = TransactionType4.Create;\n  /** Witness index of contract bytecode to create */\n  bytecodeWitnessIndex;\n  /** Salt */\n  salt;\n  /** List of storage slots to initialize */\n  storageSlots;\n  /**\n   * Creates an instance `CreateTransactionRequest`.\n   *\n   * @param createTransactionRequestLike - The initial values for the instance\n   */\n  constructor({ bytecodeWitnessIndex, salt, storageSlots, ...rest }) {\n    super(rest);\n    this.bytecodeWitnessIndex = bytecodeWitnessIndex ?? 0;\n    this.salt = hexlify11(salt ?? ZeroBytes326);\n    this.storageSlots = [...storageSlots ?? []];\n  }\n  /**\n   * Converts the transaction request to a `TransactionCreate`.\n   *\n   * @returns The transaction create object.\n   */\n  toTransaction() {\n    const baseTransaction = this.getBaseTransaction();\n    const bytecodeWitnessIndex = this.bytecodeWitnessIndex;\n    const storageSlots = this.storageSlots?.map(storageSlotify) ?? [];\n    return {\n      type: TransactionType4.Create,\n      ...baseTransaction,\n      bytecodeWitnessIndex,\n      storageSlotsCount: bn11(storageSlots.length),\n      salt: this.salt ? hexlify11(this.salt) : ZeroBytes326,\n      storageSlots\n    };\n  }\n  /**\n   * Get contract created outputs for the transaction.\n   *\n   * @returns An array of contract created transaction request outputs.\n   */\n  getContractCreatedOutputs() {\n    return this.outputs.filter(\n      (output) => output.type === OutputType6.ContractCreated\n    );\n  }\n  /**\n   * Gets the Transaction Request by hashing the transaction.\n   *\n   * @param chainId - The chain ID.\n   *\n   * @returns - A hash of the transaction, which is the transaction ID.\n   */\n  getTransactionId(chainId) {\n    return hashTransaction(this, chainId);\n  }\n  /**\n   * Adds a contract created output to the transaction request.\n   *\n   * @param contractId - The contract ID.\n   * @param stateRoot - The state root.\n   */\n  addContractCreatedOutput(contractId, stateRoot) {\n    this.pushOutput({\n      type: OutputType6.ContractCreated,\n      contractId,\n      stateRoot\n    });\n  }\n  metadataGas(gasCosts) {\n    return calculateMetadataGasForTxCreate({\n      contractBytesSize: bn11(arrayify6(this.witnesses[this.bytecodeWitnessIndex] || \"0x\").length),\n      gasCosts,\n      stateRootSize: this.storageSlots.length,\n      txBytesSize: this.byteSize()\n    });\n  }\n};\n\n// src/providers/transaction-request/script-transaction-request.ts\nimport { Interface } from \"@fuel-ts/abi-coder\";\nimport { addressify as addressify2 } from \"@fuel-ts/address\";\nimport { ZeroBytes32 as ZeroBytes327 } from \"@fuel-ts/address/configs\";\nimport { bn as bn12 } from \"@fuel-ts/math\";\nimport { InputType as InputType6, OutputType as OutputType7, TransactionType as TransactionType5 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify8, hexlify as hexlify12 } from \"@fuel-ts/utils\";\nimport { clone as clone5 } from \"ramda\";\n\n// src/providers/transaction-request/scripts.ts\nimport { arrayify as arrayify7 } from \"@fuel-ts/utils\";\nvar returnZeroScript = {\n  /*\n      Opcode::RET(REG_ZERO)\n      Opcode::NOOP\n    */\n  // TODO: Don't use hardcoded scripts: https://github.com/FuelLabs/fuels-ts/issues/281\n  bytes: arrayify7(\"0x24000000\"),\n  encodeScriptData: /* @__PURE__ */ __name(() => new Uint8Array(0), \"encodeScriptData\")\n};\nvar withdrawScript = {\n  /*\n          The following code loads some basic values into registers and calls SMO to create an output message\n          5040C010 \t- ADDI r16 $is i16   [r16 now points to memory 16 bytes from the start of this program (start of receiver data)]\n          5D44C006\t- LW r17 $is i6      [r17 set to the 6th word in this program (6*8=48 bytes from the start of this program)]\n          4C400011\t- SMO r16 r0 r0 r17  [send message out to address starting at memory position r16 with amount in r17]\n          24000000\t- RET                [return 0]\n          00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [recipient address]\n          00000000 00000000 [amount value]\n      */\n  // TODO: Don't use hardcoded scripts: https://github.com/FuelLabs/fuels-ts/issues/281\n  bytes: arrayify7(\"0x5040C0105D44C0064C40001124000000\"),\n  encodeScriptData: /* @__PURE__ */ __name(() => new Uint8Array(0), \"encodeScriptData\")\n};\n\n// src/providers/transaction-request/script-transaction-request.ts\nvar ScriptTransactionRequest = class extends BaseTransactionRequest {\n  static {\n    __name(this, \"ScriptTransactionRequest\");\n  }\n  static from(obj) {\n    return new this(clone5(obj));\n  }\n  /** Type of the transaction */\n  type = TransactionType5.Script;\n  /** Gas limit for transaction */\n  gasLimit;\n  /** Script to execute */\n  script;\n  /** Script input data (parameters) */\n  scriptData;\n  abis;\n  /**\n   * Constructor for `ScriptTransactionRequest`.\n   *\n   * @param scriptTransactionRequestLike - The initial values for the instance.\n   */\n  constructor({ script, scriptData, gasLimit, ...rest } = {}) {\n    super(rest);\n    this.gasLimit = bn12(gasLimit);\n    this.script = arrayify8(script ?? returnZeroScript.bytes);\n    this.scriptData = arrayify8(scriptData ?? returnZeroScript.encodeScriptData());\n    this.abis = rest.abis;\n  }\n  /**\n   * Helper function to estimate and fund the transaction request with a specified account.\n   *\n   * @param account - The account to fund the transaction.\n   * @param params - The parameters for the transaction cost.\n   * @returns The current instance of the `ScriptTransactionRequest` funded.\n   *\n   * @deprecated Use `provider.assembleTx` instead.\n   * Check the migration guide https://docs.fuel.network/guide/assembling-transactions/migration-guide.html for more information.\n   */\n  async estimateAndFund(account, { signatureCallback, quantities = [] } = {}) {\n    const txCost = await account.getTransactionCost(this, { signatureCallback, quantities });\n    this.maxFee = txCost.maxFee;\n    this.gasLimit = txCost.gasUsed;\n    await account.fund(this, txCost);\n    return this;\n  }\n  /**\n   * Converts the transaction request to a `TransactionScript`.\n   *\n   * @returns The transaction script object.\n   */\n  toTransaction() {\n    const script = arrayify8(this.script ?? \"0x\");\n    const scriptData = arrayify8(this.scriptData ?? \"0x\");\n    return {\n      type: TransactionType5.Script,\n      scriptGasLimit: this.gasLimit,\n      ...super.getBaseTransaction(),\n      scriptLength: bn12(script.length),\n      scriptDataLength: bn12(scriptData.length),\n      receiptsRoot: ZeroBytes327,\n      script: hexlify12(script),\n      scriptData: hexlify12(scriptData)\n    };\n  }\n  /**\n   * Get contract inputs for the transaction.\n   *\n   * @returns An array of contract transaction request inputs.\n   */\n  getContractInputs() {\n    return this.inputs.filter(\n      (input) => input.type === InputType6.Contract\n    );\n  }\n  /**\n   * Get contract outputs for the transaction.\n   *\n   * @returns An array of contract transaction request outputs.\n   */\n  getContractOutputs() {\n    return this.outputs.filter(\n      (output) => output.type === OutputType7.Contract\n    );\n  }\n  /**\n   * Get variable outputs for the transaction.\n   *\n   * @returns An array of variable transaction request outputs.\n   */\n  getVariableOutputs() {\n    return this.outputs.filter(\n      (output) => output.type === OutputType7.Variable\n    );\n  }\n  /**\n   * Set the script and its data.\n   *\n   * @param script - The abstract script request.\n   * @param data - The script data.\n   */\n  setScript(script, data) {\n    this.scriptData = script.encodeScriptData(data);\n    this.script = script.bytes;\n  }\n  /**\n   * Adds variable outputs to the transaction request.\n   *\n   * @param numberOfVariables - The number of variables to add.\n   * @returns The new length of the outputs array.\n   */\n  addVariableOutputs(numberOfVariables = 1) {\n    let outputsNumber = numberOfVariables;\n    while (outputsNumber) {\n      this.pushOutput({\n        type: OutputType7.Variable\n      });\n      outputsNumber -= 1;\n    }\n    return this.outputs.length - 1;\n  }\n  /**\n   * Adds a variable output to the transaction request.\n   *\n   * @param to - The recipient address as a BytesLike object. Defaults to ZeroBytes32 if not provided.\n   * @param amount - The amount to be transferred as a BigNumberish object. Defaults to 0 if not provided.\n   * @param assetId - The asset ID as a BytesLike object. Defaults to ZeroBytes32 if not provided.\n   */\n  addVariableOutput(to, amount, assetId) {\n    this.pushOutput({\n      type: OutputType7.Variable,\n      to,\n      amount,\n      assetId\n    });\n  }\n  /**\n   * Calculates the maximum gas for the transaction.\n   *\n   * @param chainInfo - The chain information.\n   * @param minGas - The minimum gas.\n   * @returns the maximum gas.\n   */\n  calculateMaxGas(chainInfo, minGas) {\n    const { consensusParameters } = chainInfo;\n    const {\n      feeParameters: { gasPerByte },\n      txParameters: { maxGasPerTx }\n    } = consensusParameters;\n    const witnessesLength = this.toTransaction().witnesses.reduce(\n      (acc, wit) => acc + wit.dataLength,\n      0\n    );\n    return getMaxGas({\n      gasPerByte,\n      minGas,\n      witnessesLength,\n      witnessLimit: this.witnessLimit,\n      gasLimit: this.gasLimit,\n      maxGasPerTx\n    });\n  }\n  /**\n   * Adds a contract input and output to the transaction request.\n   *\n   * @param contract - The contract ID.\n   * @returns The current instance of the `ScriptTransactionRequest`.\n   */\n  addContractInputAndOutput(contract) {\n    const contractAddress = addressify2(contract);\n    if (this.getContractInputs().find((i) => i.contractId === contractAddress.toB256())) {\n      return this;\n    }\n    const inputIndex = super.pushInput({\n      type: InputType6.Contract,\n      contractId: contractAddress.toB256(),\n      txPointer: \"0x00000000000000000000000000000000\"\n    });\n    this.pushOutput({\n      type: OutputType7.Contract,\n      inputIndex\n    });\n    return this;\n  }\n  /**\n   * Gets the Transaction Request by hashing the transaction.\n   *\n   * @param chainId - The chain ID.\n   *\n   * @returns - A hash of the transaction, which is the transaction ID.\n   */\n  getTransactionId(chainId) {\n    return hashTransaction(this, chainId);\n  }\n  /**\n   * Sets the data for the transaction request.\n   *\n   * @param abi - Script JSON ABI.\n   * @param args - The input arguments.\n   * @returns The current instance of the `ScriptTransactionRequest`.\n   */\n  setData(abi, args) {\n    const abiInterface = new Interface(abi);\n    this.scriptData = abiInterface.functions.main.encodeArguments(args);\n    return this;\n  }\n  metadataGas(gasCosts) {\n    return calculateMetadataGasForTxScript({\n      gasCosts,\n      txBytesSize: this.byteSize()\n    });\n  }\n};\n\n// src/providers/transaction-request/upgrade-transaction-request.ts\nimport { FuelError as FuelError11 } from \"@fuel-ts/errors\";\nimport { hash } from \"@fuel-ts/hasher\";\nimport {\n  TransactionType as TransactionType6,\n  UpgradePurposeTypeEnum\n} from \"@fuel-ts/transactions\";\nimport { hexlify as hexlify13 } from \"@fuel-ts/utils\";\nimport { clone as clone6 } from \"ramda\";\nvar UpgradeTransactionRequest = class _UpgradeTransactionRequest extends BaseTransactionRequest {\n  static {\n    __name(this, \"UpgradeTransactionRequest\");\n  }\n  static from(obj) {\n    if (obj instanceof _UpgradeTransactionRequest) {\n      return obj;\n    }\n    return new this(clone6(obj));\n  }\n  /** The type of transaction */\n  type = TransactionType6.Upgrade;\n  /** The upgrade purpose */\n  upgradePurpose;\n  /** Witness index of consensus */\n  bytecodeWitnessIndex;\n  /**\n   * Creates an instance `UpgradeTransactionRequest`.\n   *\n   * @param upgradeTransactionRequestLike - The initial values for the instance\n   */\n  constructor({\n    upgradePurpose,\n    bytecodeWitnessIndex,\n    ...rest\n  } = {}) {\n    super(rest);\n    this.bytecodeWitnessIndex = bytecodeWitnessIndex ?? 0;\n    this.upgradePurpose = upgradePurpose ?? {\n      type: UpgradePurposeTypeEnum.ConsensusParameters,\n      checksum: \"0x\"\n    };\n  }\n  /**\n   * Adds a consensus parameters upgrade purpose.\n   *\n   * @param consensus - The consensus bytecode.\n   *\n   * @returns - The current instance of `UpgradeTransactionRequest`.\n   */\n  addConsensusParametersUpgradePurpose(consensus) {\n    this.bytecodeWitnessIndex = this.addWitness(consensus);\n    this.upgradePurpose = {\n      type: UpgradePurposeTypeEnum.ConsensusParameters,\n      checksum: hash(consensus)\n    };\n    return this;\n  }\n  /**\n   * Adds a state transition upgrade purpose.\n   *\n   * @param bytecodeRoot - The Merkle root of the state transition.\n   *\n   * @returns - The current instance of `UpgradeTransactionRequest`.\n   */\n  addStateTransitionUpgradePurpose(bytecodeRoot) {\n    this.upgradePurpose = {\n      type: UpgradePurposeTypeEnum.StateTransition,\n      data: hexlify13(bytecodeRoot)\n    };\n    return this;\n  }\n  /**\n   * Adds an upgrade purpose.\n   *\n   * @param type - The upgrade purpose type.\n   * @param data - The bytecode or merkle root of upgrade purpose\n   *\n   * @returns - The current instance of `UpgradeTransactionRequest`.\n   */\n  addUpgradePurpose(type, data) {\n    if (type === UpgradePurposeTypeEnum.ConsensusParameters) {\n      this.addConsensusParametersUpgradePurpose(data);\n    }\n    if (type === UpgradePurposeTypeEnum.StateTransition) {\n      this.addStateTransitionUpgradePurpose(data);\n    }\n    return this;\n  }\n  /**\n   * Converts the transaction request to a `TransactionUpgrade`.\n   *\n   * @returns The transaction create object.\n   */\n  toTransaction() {\n    let upgradePurpose;\n    if (this.upgradePurpose.type === UpgradePurposeTypeEnum.ConsensusParameters) {\n      upgradePurpose = {\n        type: UpgradePurposeTypeEnum.ConsensusParameters,\n        data: {\n          witnessIndex: this.bytecodeWitnessIndex,\n          checksum: this.upgradePurpose.checksum\n        }\n      };\n    } else if (this.upgradePurpose.type === UpgradePurposeTypeEnum.StateTransition) {\n      upgradePurpose = {\n        type: UpgradePurposeTypeEnum.StateTransition,\n        data: {\n          bytecodeRoot: hexlify13(this.upgradePurpose.data)\n        }\n      };\n    } else {\n      throw new FuelError11(FuelError11.CODES.NOT_IMPLEMENTED, \"Invalid upgrade purpose\");\n    }\n    return {\n      type: TransactionType6.Upgrade,\n      ...super.getBaseTransaction(),\n      upgradePurpose\n    };\n  }\n  /**\n   * Gets the Transaction ID by hashing the transaction\n   *\n   * @param chainId - The chain ID.\n   *\n   * @returns - A hash of the transaction, which is the transaction ID.\n   */\n  getTransactionId(chainId) {\n    return hashTransaction(this, chainId);\n  }\n  /**\n   * Calculates the metadata gas cost for an upgrade transaction.\n   *\n   * @param gasCosts - gas costs passed from the chain.\n   *\n   * @returns metadata gas cost for the upgrade transaction.\n   */\n  metadataGas(gasCosts) {\n    const txBytesSize = this.byteSize();\n    if (this.upgradePurpose.type === UpgradePurposeTypeEnum.ConsensusParameters) {\n      const witnessIndex = this.bytecodeWitnessIndex;\n      const consensusSize = this.witnesses[witnessIndex].length;\n      return calculateMetadataGasForTxUpgrade({\n        gasCosts,\n        txBytesSize,\n        consensusSize\n      });\n    }\n    if (this.upgradePurpose.type === UpgradePurposeTypeEnum.StateTransition) {\n      return calculateMetadataGasForTxUpgrade({\n        gasCosts,\n        txBytesSize\n      });\n    }\n    throw new FuelError11(FuelError11.CODES.NOT_IMPLEMENTED, \"Invalid upgrade purpose\");\n  }\n};\n\n// src/providers/transaction-request/upload-transaction-request.ts\nimport { ZeroBytes32 as ZeroBytes328 } from \"@fuel-ts/address/configs\";\nimport { TransactionType as TransactionType7 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify9, hexlify as hexlify14 } from \"@fuel-ts/utils\";\nimport { clone as clone7 } from \"ramda\";\nvar UploadTransactionRequest = class _UploadTransactionRequest extends BaseTransactionRequest {\n  static {\n    __name(this, \"UploadTransactionRequest\");\n  }\n  static from(obj) {\n    if (obj instanceof _UploadTransactionRequest) {\n      return obj;\n    }\n    return new this(clone7(obj));\n  }\n  /** Type of the transaction */\n  type = TransactionType7.Upload;\n  /** The witness index of the subsection of the bytecode. */\n  witnessIndex;\n  /** The subsection data. */\n  subsection;\n  /**\n   * Creates an instance `UploadTransactionRequest`.\n   *\n   * @param uploadTransactionRequestLike - The initial values for the instance\n   */\n  constructor({ witnessIndex, subsection, ...rest } = {}) {\n    super(rest);\n    this.witnessIndex = witnessIndex ?? 0;\n    this.subsection = subsection ?? {\n      proofSet: [],\n      root: ZeroBytes328,\n      subsectionIndex: 0,\n      subsectionsNumber: 0\n    };\n  }\n  /**\n   * Adds the subsection.\n   *\n   * @param subsection - The subsection data.\n   */\n  addSubsection(subsection) {\n    const { subsection: subsectionBytecode, ...rest } = subsection;\n    this.subsection = rest;\n    this.witnessIndex = this.addWitness(subsectionBytecode);\n  }\n  /**\n   * Gets the Transaction Request by hashing the transaction.\n   *\n   * @param chainId - The chain ID.\n   *\n   * @returns - A hash of the transaction, which is the transaction ID.\n   */\n  getTransactionId(chainId) {\n    return hashTransaction(this, chainId);\n  }\n  /**\n   * Converts the transaction request to a `TransactionUpload`.\n   *\n   * @returns The transaction create object.\n   */\n  toTransaction() {\n    const baseTransaction = this.getBaseTransaction();\n    const { subsectionIndex, subsectionsNumber, root, proofSet } = this.subsection;\n    return {\n      type: TransactionType7.Upload,\n      ...baseTransaction,\n      subsectionIndex,\n      subsectionsNumber,\n      root: hexlify14(root),\n      proofSet: proofSet.map(hexlify14),\n      witnessIndex: this.witnessIndex,\n      proofSetCount: proofSet.length\n    };\n  }\n  /**\n   * Calculates the metadata gas cost for an upload transaction.\n   *\n   * @param gasCosts - gas costs passed from the chain.\n   *\n   * @returns metadata gas cost for the upload transaction.\n   */\n  metadataGas(gasCosts) {\n    return calculateMetadataGasForTxUpload({\n      gasCosts,\n      txBytesSize: this.byteSize(),\n      subsectionSize: arrayify9(this.witnesses[this.witnessIndex]).length,\n      subsectionsSize: this.subsection.subsectionsNumber\n    });\n  }\n  /**\n   * Calculates the minimum gas for an upload transaction.\n   *\n   * @param chainInfo - The chain information.\n   *\n   * @returns the minimum gas for the upload transaction\n   */\n  calculateMinGas(chainInfo) {\n    const minGas = super.calculateMinGas(chainInfo);\n    const { gasCosts } = chainInfo.consensusParameters;\n    const bytecode = this.witnesses[this.witnessIndex] ?? ZeroBytes328;\n    return calculateMinGasForTxUpload({\n      gasCosts,\n      baseMinGas: minGas.toNumber(),\n      subsectionSize: arrayify9(bytecode).length\n    });\n  }\n};\n\n// src/providers/transaction-request/types.ts\nvar AbstractScriptRequest = class {\n  static {\n    __name(this, \"AbstractScriptRequest\");\n  }\n};\n\n// src/providers/transaction-request/utils.ts\nimport { ErrorCode as ErrorCode10, FuelError as FuelError12 } from \"@fuel-ts/errors\";\nimport { TransactionType as TransactionType8 } from \"@fuel-ts/transactions\";\nvar transactionRequestify = /* @__PURE__ */ __name((obj) => {\n  if (obj instanceof ScriptTransactionRequest || obj instanceof CreateTransactionRequest || obj instanceof BlobTransactionRequest || obj instanceof UpgradeTransactionRequest || obj instanceof UploadTransactionRequest) {\n    return obj;\n  }\n  const { type } = obj;\n  switch (obj.type) {\n    case TransactionType8.Script: {\n      return ScriptTransactionRequest.from(obj);\n    }\n    case TransactionType8.Create: {\n      return CreateTransactionRequest.from(obj);\n    }\n    case TransactionType8.Blob: {\n      return BlobTransactionRequest.from(obj);\n    }\n    case TransactionType8.Upgrade: {\n      return UpgradeTransactionRequest.from(obj);\n    }\n    case TransactionType8.Upload: {\n      return UploadTransactionRequest.from(obj);\n    }\n    default: {\n      throw new FuelError12(\n        ErrorCode10.UNSUPPORTED_TRANSACTION_TYPE,\n        `Unsupported transaction type: ${type}.`\n      );\n    }\n  }\n}, \"transactionRequestify\");\nvar isTransactionTypeScript = /* @__PURE__ */ __name((request2) => request2.type === TransactionType8.Script, \"isTransactionTypeScript\");\nvar isTransactionTypeCreate = /* @__PURE__ */ __name((request2) => request2.type === TransactionType8.Create, \"isTransactionTypeCreate\");\nvar isTransactionTypeBlob = /* @__PURE__ */ __name((request2) => request2.type === TransactionType8.Blob, \"isTransactionTypeBlob\");\nvar isTransactionTypeUpgrade = /* @__PURE__ */ __name((request2) => request2.type === TransactionType8.Upgrade, \"isTransactionTypeUpgrade\");\nvar isTransactionTypeUpload = /* @__PURE__ */ __name((request2) => request2.type === TransactionType8.Upload, \"isTransactionTypeUpload\");\n\n// src/providers/resource-cache.ts\nvar cache = /* @__PURE__ */ new Map();\nvar ResourceCache = class {\n  static {\n    __name(this, \"ResourceCache\");\n  }\n  ttl;\n  constructor(ttl) {\n    this.ttl = ttl;\n    if (typeof ttl !== \"number\" || this.ttl <= 0) {\n      throw new FuelError13(\n        ErrorCode11.INVALID_TTL,\n        `Invalid TTL: ${this.ttl}. Use a value greater than zero.`\n      );\n    }\n  }\n  // Add resources to the cache\n  set(transactionId, inputs) {\n    const transactionResourceCache = this.setupResourcesCache(inputs);\n    cache.set(transactionId, transactionResourceCache);\n  }\n  unset(transactionId) {\n    cache.delete(transactionId);\n  }\n  getActiveData(owner) {\n    const activeData = { utxos: [], messages: [] };\n    const currentTime = Date.now();\n    const expired = [];\n    cache.forEach((resource, transactionId) => {\n      const isActive = currentTime - resource.timestamp < this.ttl;\n      if (isActive) {\n        const resourcesFromOwner = resource.owners.get(owner);\n        if (resourcesFromOwner) {\n          activeData.utxos.push(...resourcesFromOwner.utxos);\n          activeData.messages.push(...resourcesFromOwner.messages);\n        }\n      } else {\n        expired.push(transactionId);\n      }\n    });\n    expired.forEach(this.unset);\n    activeData.utxos.reverse();\n    activeData.messages.reverse();\n    return activeData;\n  }\n  isCached(owner, key) {\n    const currentTime = Date.now();\n    let cached = false;\n    const expired = [];\n    for (const [transactionId, resourceData] of cache.entries()) {\n      const isActive = currentTime - resourceData.timestamp < this.ttl;\n      if (isActive) {\n        const resourcesFromOwner = resourceData.owners.get(owner);\n        if (resourcesFromOwner?.utxos.has(key) || resourcesFromOwner?.messages.has(key)) {\n          cached = true;\n          break;\n        }\n      } else {\n        expired.push(transactionId);\n      }\n    }\n    expired.forEach(this.unset);\n    return cached;\n  }\n  clear() {\n    cache.clear();\n  }\n  setupResourcesCache(inputs) {\n    const currentTime = Date.now();\n    const transactionResourcesCache = {\n      owners: /* @__PURE__ */ new Map(),\n      timestamp: currentTime\n    };\n    inputs.filter(isRequestInputCoinOrMessage).forEach((input) => {\n      const { owner, key, type } = this.extractResourceData(input);\n      if (!transactionResourcesCache.owners.has(owner)) {\n        transactionResourcesCache.owners.set(owner, { utxos: /* @__PURE__ */ new Set(), messages: /* @__PURE__ */ new Set() });\n      }\n      if (type === \"utxo\") {\n        transactionResourcesCache.owners.get(owner)?.utxos.add(key);\n      } else {\n        transactionResourcesCache.owners.get(owner)?.messages.add(key);\n      }\n    });\n    return transactionResourcesCache;\n  }\n  extractResourceData(input) {\n    if (isRequestInputCoin(input)) {\n      return { owner: hexlify15(input.owner), key: hexlify15(input.id), type: \"utxo\" };\n    }\n    return { owner: hexlify15(input.recipient), key: hexlify15(input.nonce), type: \"message\" };\n  }\n};\n\n// src/providers/transaction-response/transaction-response.ts\nimport { ErrorCode as ErrorCode15, FuelError as FuelError17 } from \"@fuel-ts/errors\";\nimport { bn as bn17 } from \"@fuel-ts/math\";\nimport { TransactionCoder as TransactionCoder6, TxPointerCoder } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify12 } from \"@fuel-ts/utils\";\n\n// src/providers/transaction-summary/assemble-transaction-summary.ts\nimport { bn as bn16 } from \"@fuel-ts/math\";\nimport { PolicyType as PolicyType3, TransactionCoder as TransactionCoder5 } from \"@fuel-ts/transactions\";\nimport { DateTime, hexlify as hexlify16 } from \"@fuel-ts/utils\";\n\n// src/providers/transaction-summary/calculate-tx-fee-for-summary.ts\nimport { bn as bn13 } from \"@fuel-ts/math\";\nimport { PolicyType as PolicyType2, TransactionCoder as TransactionCoder3, TransactionType as TransactionType9 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify10 } from \"@fuel-ts/utils\";\nvar calculateTXFeeForSummary = /* @__PURE__ */ __name((params) => {\n  const {\n    gasPrice,\n    rawPayload,\n    tip,\n    consensusParameters: { gasCosts, feeParams, maxGasPerTx }\n  } = params;\n  const gasPerByte = bn13(feeParams.gasPerByte);\n  const gasPriceFactor = bn13(feeParams.gasPriceFactor);\n  const transactionBytes = arrayify10(rawPayload);\n  const [transaction] = new TransactionCoder3().decode(transactionBytes, 0);\n  const { type, witnesses, inputs, policies } = transaction;\n  let metadataGas = bn13(0);\n  let gasLimit = bn13(0);\n  if (type !== TransactionType9.Create && type !== TransactionType9.Script) {\n    return bn13(0);\n  }\n  if (type === TransactionType9.Create) {\n    const { bytecodeWitnessIndex, storageSlots } = transaction;\n    const contractBytesSize = bn13(arrayify10(witnesses[bytecodeWitnessIndex].data).length);\n    metadataGas = calculateMetadataGasForTxCreate({\n      contractBytesSize,\n      gasCosts,\n      stateRootSize: storageSlots.length || 0,\n      txBytesSize: transactionBytes.length\n    });\n  } else {\n    const { scriptGasLimit } = transaction;\n    if (scriptGasLimit) {\n      gasLimit = scriptGasLimit;\n    }\n    metadataGas = calculateMetadataGasForTxScript({\n      gasCosts,\n      txBytesSize: transactionBytes.length\n    });\n  }\n  const minGas = getMinGas({\n    gasCosts,\n    gasPerByte: bn13(gasPerByte),\n    inputs,\n    metadataGas,\n    txBytesSize: transactionBytes.length\n  });\n  const witnessLimit = policies.find((policy) => policy.type === PolicyType2.WitnessLimit)?.data;\n  const witnessesLength = witnesses.reduce((acc, wit) => acc + wit.dataLength, 0);\n  const maxGas = getMaxGas({\n    gasPerByte,\n    minGas,\n    witnessesLength,\n    gasLimit,\n    witnessLimit,\n    maxGasPerTx\n  });\n  const maxFee = calculateGasFee({\n    gasPrice,\n    gas: maxGas,\n    priceFactor: gasPriceFactor,\n    tip\n  });\n  return maxFee;\n}, \"calculateTXFeeForSummary\");\n\n// src/providers/transaction-summary/operations.ts\nimport { ZeroBytes32 as ZeroBytes329 } from \"@fuel-ts/address/configs\";\nimport { ErrorCode as ErrorCode13, FuelError as FuelError15 } from \"@fuel-ts/errors\";\nimport { bn as bn14, toBytes } from \"@fuel-ts/math\";\nimport { ReceiptType as ReceiptType5, TransactionCoder as TransactionCoder4, TransactionType as TransactionType10 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify11, concat as concat3 } from \"@fuel-ts/utils\";\n\n// src/providers/transaction-summary/call.ts\nimport { StdStringCoder } from \"@fuel-ts/abi-coder\";\nimport { Interface as Interface2 } from \"@fuel-ts/abi-coder\";\nvar getFunctionCall = /* @__PURE__ */ __name(({\n  abi,\n  receipt,\n  offset,\n  scriptData\n}) => {\n  const [functionSelector, argumentsOffset] = new StdStringCoder().decode(scriptData, offset);\n  const abiInterface = new Interface2(abi);\n  const functionFragment = abiInterface.getFunction(functionSelector);\n  const inputs = functionFragment.jsonFn.inputs;\n  let argumentsProvided;\n  if (inputs.length) {\n    const functionArgsBytes = scriptData.slice(argumentsOffset);\n    const decodedArguments = functionFragment.decodeArguments(functionArgsBytes);\n    argumentsProvided = inputs.reduce((prev, input, index) => {\n      const value = decodedArguments?.[index];\n      const name = input.name;\n      if (name) {\n        return {\n          ...prev,\n          // reparse to remove bn\n          [name]: JSON.parse(JSON.stringify(value))\n        };\n      }\n      return prev;\n    }, {});\n  }\n  return {\n    functionSignature: functionFragment.signature,\n    functionName: functionFragment.name,\n    argumentsProvided,\n    ...receipt.amount?.isZero() ? {} : { amount: receipt.amount, assetId: receipt.assetId }\n  };\n}, \"getFunctionCall\");\n\n// src/providers/transaction-summary/input.ts\nimport { ErrorCode as ErrorCode12, FuelError as FuelError14 } from \"@fuel-ts/errors\";\nimport { BN } from \"@fuel-ts/math\";\nimport { InputType as InputType7 } from \"@fuel-ts/transactions\";\nfunction getInputsByTypes(inputs, types) {\n  return inputs.filter((i) => types.includes(i.type));\n}\n__name(getInputsByTypes, \"getInputsByTypes\");\nfunction getInputsByType(inputs, type) {\n  return inputs.filter((i) => i.type === type);\n}\n__name(getInputsByType, \"getInputsByType\");\nfunction getInputsCoin(inputs) {\n  return getInputsByType(inputs, InputType7.Coin);\n}\n__name(getInputsCoin, \"getInputsCoin\");\nfunction getInputsMessage(inputs) {\n  return getInputsByType(inputs, InputType7.Message);\n}\n__name(getInputsMessage, \"getInputsMessage\");\nfunction getInputsCoinAndMessage(inputs) {\n  return getInputsByTypes(inputs, [InputType7.Coin, InputType7.Message]);\n}\n__name(getInputsCoinAndMessage, \"getInputsCoinAndMessage\");\nfunction isInputCoin(input) {\n  return input.type === InputType7.Coin;\n}\n__name(isInputCoin, \"isInputCoin\");\nfunction getInputsContract(inputs) {\n  return getInputsByType(inputs, InputType7.Contract);\n}\n__name(getInputsContract, \"getInputsContract\");\nfunction findCoinInput(inputs, assetId) {\n  const coinInputs = getInputsCoin(inputs);\n  return coinInputs.find((i) => i.assetId === assetId);\n}\n__name(findCoinInput, \"findCoinInput\");\nfunction aggregateInputsAmountsByAssetAndOwner(inputs, baseAssetId) {\n  const aggregated = /* @__PURE__ */ new Map();\n  getInputsCoinAndMessage(inputs).forEach((input) => {\n    const assetId = isInputCoin(input) ? input.assetId : baseAssetId;\n    const owner = isInputCoin(input) ? input.owner : input.recipient;\n    let ownersMap = aggregated.get(assetId);\n    if (!ownersMap) {\n      ownersMap = /* @__PURE__ */ new Map();\n      aggregated.set(assetId, ownersMap);\n    }\n    let ownerBalance = ownersMap.get(owner);\n    if (!ownerBalance) {\n      ownerBalance = new BN(0);\n      ownersMap.set(owner, ownerBalance);\n    }\n    ownersMap.set(owner, ownerBalance.add(input.amount));\n  });\n  return aggregated;\n}\n__name(aggregateInputsAmountsByAssetAndOwner, \"aggregateInputsAmountsByAssetAndOwner\");\nfunction findMessageInput(inputs) {\n  return getInputsMessage(inputs)?.[0];\n}\n__name(findMessageInput, \"findMessageInput\");\nfunction getInputFromAssetId(inputs, assetId, isBaseAsset = false) {\n  const coinInput = findCoinInput(inputs, assetId);\n  if (coinInput) {\n    return coinInput;\n  }\n  if (isBaseAsset) {\n    return findMessageInput(inputs);\n  }\n  return void 0;\n}\n__name(getInputFromAssetId, \"getInputFromAssetId\");\nfunction getInputContractFromIndex(inputs, inputIndex) {\n  if (inputIndex == null) {\n    return void 0;\n  }\n  const contractInput = inputs?.[inputIndex];\n  if (!contractInput) {\n    return void 0;\n  }\n  if (contractInput.type !== InputType7.Contract) {\n    throw new FuelError14(\n      ErrorCode12.INVALID_TRANSACTION_INPUT,\n      `Contract input should be of type 'contract'.`\n    );\n  }\n  return contractInput;\n}\n__name(getInputContractFromIndex, \"getInputContractFromIndex\");\nfunction getInputAccountAddress(input) {\n  if (input.type === InputType7.Coin) {\n    return input.owner.toString();\n  }\n  if (input.type === InputType7.Message) {\n    return input.recipient.toString();\n  }\n  return \"\";\n}\n__name(getInputAccountAddress, \"getInputAccountAddress\");\n\n// src/providers/transaction-summary/output.ts\nimport { OutputType as OutputType8 } from \"@fuel-ts/transactions\";\nfunction getOutputsByType(outputs, type) {\n  return outputs.filter((o) => o.type === type);\n}\n__name(getOutputsByType, \"getOutputsByType\");\nfunction getOutputsContractCreated(outputs) {\n  return getOutputsByType(outputs, OutputType8.ContractCreated);\n}\n__name(getOutputsContractCreated, \"getOutputsContractCreated\");\nfunction getOutputsCoin(outputs) {\n  return getOutputsByType(outputs, OutputType8.Coin);\n}\n__name(getOutputsCoin, \"getOutputsCoin\");\nfunction getOutputsChange(outputs) {\n  return getOutputsByType(outputs, OutputType8.Change);\n}\n__name(getOutputsChange, \"getOutputsChange\");\nfunction getOutputsContract(outputs) {\n  return getOutputsByType(outputs, OutputType8.Contract);\n}\n__name(getOutputsContract, \"getOutputsContract\");\nfunction getOutputsVariable(outputs) {\n  return getOutputsByType(outputs, OutputType8.Variable);\n}\n__name(getOutputsVariable, \"getOutputsVariable\");\n\n// src/providers/transaction-summary/types.ts\nvar TransactionTypeName = /* @__PURE__ */ ((TransactionTypeName2) => {\n  TransactionTypeName2[\"Create\"] = \"Create\";\n  TransactionTypeName2[\"Mint\"] = \"Mint\";\n  TransactionTypeName2[\"Script\"] = \"Script\";\n  TransactionTypeName2[\"Upgrade\"] = \"Upgrade\";\n  TransactionTypeName2[\"Upload\"] = \"Upload\";\n  TransactionTypeName2[\"Blob\"] = \"Blob\";\n  return TransactionTypeName2;\n})(TransactionTypeName || {});\nvar TransactionStatus = /* @__PURE__ */ ((TransactionStatus2) => {\n  TransactionStatus2[\"submitted\"] = \"submitted\";\n  TransactionStatus2[\"success\"] = \"success\";\n  TransactionStatus2[\"squeezedout\"] = \"squeezedout\";\n  TransactionStatus2[\"failure\"] = \"failure\";\n  TransactionStatus2[\"preconfirmationSuccess\"] = \"preconfirmationSuccess\";\n  TransactionStatus2[\"preconfirmationFailure\"] = \"preconfirmationFailure\";\n  return TransactionStatus2;\n})(TransactionStatus || {});\nvar OperationName = /* @__PURE__ */ ((OperationName2) => {\n  OperationName2[\"payBlockProducer\"] = \"Pay network fee to block producer\";\n  OperationName2[\"contractCreated\"] = \"Contract created\";\n  OperationName2[\"transfer\"] = \"Transfer asset\";\n  OperationName2[\"contractCall\"] = \"Contract call\";\n  OperationName2[\"receive\"] = \"Receive asset\";\n  OperationName2[\"withdrawFromFuel\"] = \"Withdraw from Fuel\";\n  return OperationName2;\n})(OperationName || {});\nvar AddressType = /* @__PURE__ */ ((AddressType2) => {\n  AddressType2[AddressType2[\"contract\"] = 0] = \"contract\";\n  AddressType2[AddressType2[\"account\"] = 1] = \"account\";\n  return AddressType2;\n})(AddressType || {});\nvar ChainName = /* @__PURE__ */ ((ChainName2) => {\n  ChainName2[\"ethereum\"] = \"ethereum\";\n  ChainName2[\"fuel\"] = \"fuel\";\n  return ChainName2;\n})(ChainName || {});\n\n// src/providers/transaction-summary/operations.ts\nfunction getReceiptsByType(receipts, type) {\n  return (receipts ?? []).filter((r) => r.type === type);\n}\n__name(getReceiptsByType, \"getReceiptsByType\");\nfunction getTransactionTypeName(transactionType) {\n  switch (transactionType) {\n    case TransactionType10.Mint:\n      return \"Mint\" /* Mint */;\n    case TransactionType10.Create:\n      return \"Create\" /* Create */;\n    case TransactionType10.Script:\n      return \"Script\" /* Script */;\n    case TransactionType10.Blob:\n      return \"Blob\" /* Blob */;\n    case TransactionType10.Upgrade:\n      return \"Upgrade\" /* Upgrade */;\n    case TransactionType10.Upload:\n      return \"Upload\" /* Upload */;\n    default:\n      throw new FuelError15(\n        ErrorCode13.UNSUPPORTED_TRANSACTION_TYPE,\n        `Unsupported transaction type: ${transactionType}.`\n      );\n  }\n}\n__name(getTransactionTypeName, \"getTransactionTypeName\");\nfunction isType(transactionType, type) {\n  const txType = getTransactionTypeName(transactionType);\n  return txType === type;\n}\n__name(isType, \"isType\");\nfunction isTypeMint(transactionType) {\n  return isType(transactionType, \"Mint\" /* Mint */);\n}\n__name(isTypeMint, \"isTypeMint\");\nfunction isTypeCreate(transactionType) {\n  return isType(transactionType, \"Create\" /* Create */);\n}\n__name(isTypeCreate, \"isTypeCreate\");\nfunction isTypeScript(transactionType) {\n  return isType(transactionType, \"Script\" /* Script */);\n}\n__name(isTypeScript, \"isTypeScript\");\nfunction isTypeUpgrade(transactionType) {\n  return isType(transactionType, \"Upgrade\" /* Upgrade */);\n}\n__name(isTypeUpgrade, \"isTypeUpgrade\");\nfunction isTypeUpload(transactionType) {\n  return isType(transactionType, \"Upload\" /* Upload */);\n}\n__name(isTypeUpload, \"isTypeUpload\");\nfunction isTypeBlob(transactionType) {\n  return isType(transactionType, \"Blob\" /* Blob */);\n}\n__name(isTypeBlob, \"isTypeBlob\");\nfunction hasSameAssetId(a) {\n  return (b) => a.assetId === b.assetId;\n}\n__name(hasSameAssetId, \"hasSameAssetId\");\nfunction getReceiptsCall(receipts) {\n  return getReceiptsByType(receipts, ReceiptType5.Call);\n}\n__name(getReceiptsCall, \"getReceiptsCall\");\nfunction getReceiptsMessageOut(receipts) {\n  return getReceiptsByType(receipts, ReceiptType5.MessageOut);\n}\n__name(getReceiptsMessageOut, \"getReceiptsMessageOut\");\nfunction mergeAssets(op1, op2) {\n  const assets1 = op1.assetsSent || [];\n  const assets2 = op2.assetsSent || [];\n  const assetMap = /* @__PURE__ */ new Map();\n  assets1.forEach((asset) => {\n    assetMap.set(asset.assetId, { ...asset });\n  });\n  assets2.forEach((asset) => {\n    const existingAsset = assetMap.get(asset.assetId);\n    if (existingAsset) {\n      existingAsset.amount = bn14(existingAsset.amount).add(asset.amount);\n    } else {\n      assetMap.set(asset.assetId, { ...asset });\n    }\n  });\n  return Array.from(assetMap.values());\n}\n__name(mergeAssets, \"mergeAssets\");\nfunction isSameOperation(a, b) {\n  return a.name === b.name && a.from?.address === b.from?.address && a.to?.address === b.to?.address && a.from?.type === b.from?.type && a.to?.type === b.to?.type;\n}\n__name(isSameOperation, \"isSameOperation\");\nfunction mergeAssetsSent(existing, toAdd) {\n  if (!toAdd.assetsSent?.length) {\n    return existing.assetsSent;\n  }\n  return existing.assetsSent?.length ? mergeAssets(existing, toAdd) : toAdd.assetsSent;\n}\n__name(mergeAssetsSent, \"mergeAssetsSent\");\nfunction mergeCalls(existing, toAdd) {\n  if (!toAdd.calls?.length) {\n    return existing.calls;\n  }\n  return [...existing.calls || [], ...toAdd.calls];\n}\n__name(mergeCalls, \"mergeCalls\");\nfunction mergeOperations(existing, toAdd) {\n  return {\n    ...existing,\n    assetsSent: mergeAssetsSent(existing, toAdd),\n    calls: mergeCalls(existing, toAdd),\n    receipts: [\n      ...existing.receipts || [],\n      ...toAdd.receipts?.filter((r) => !existing.receipts?.some((er) => er === r)) || []\n    ]\n  };\n}\n__name(mergeOperations, \"mergeOperations\");\nfunction addOperation(operations, toAdd) {\n  const existingIndex = operations.findIndex((op) => isSameOperation(op, toAdd));\n  if (existingIndex === -1) {\n    return [...operations, toAdd];\n  }\n  return operations.map((op, index) => index === existingIndex ? mergeOperations(op, toAdd) : op);\n}\n__name(addOperation, \"addOperation\");\nfunction getReceiptsTransferOut(receipts) {\n  return getReceiptsByType(receipts, ReceiptType5.TransferOut);\n}\n__name(getReceiptsTransferOut, \"getReceiptsTransferOut\");\nfunction getWithdrawFromFuelOperations({\n  inputs,\n  receipts,\n  baseAssetId\n}) {\n  const messageOutReceipts = getReceiptsMessageOut(receipts);\n  const withdrawFromFuelOperations = messageOutReceipts.reduce(\n    (prevWithdrawFromFuelOps, receipt) => {\n      const input = getInputFromAssetId(inputs, baseAssetId, true);\n      if (input) {\n        const inputAddress = getInputAccountAddress(input);\n        const newWithdrawFromFuelOps = addOperation(prevWithdrawFromFuelOps, {\n          name: \"Withdraw from Fuel\" /* withdrawFromFuel */,\n          from: {\n            type: 1 /* account */,\n            address: inputAddress\n          },\n          to: {\n            type: 1 /* account */,\n            address: receipt.recipient.toString(),\n            chain: \"ethereum\" /* ethereum */\n          },\n          assetsSent: [\n            {\n              amount: receipt.amount,\n              assetId: baseAssetId\n            }\n          ],\n          receipts: [receipt]\n        });\n        return newWithdrawFromFuelOps;\n      }\n      return prevWithdrawFromFuelOps;\n    },\n    []\n  );\n  return withdrawFromFuelOperations;\n}\n__name(getWithdrawFromFuelOperations, \"getWithdrawFromFuelOperations\");\nfunction findBytesSegmentIndex(whole, segment) {\n  for (let i = 0; i <= whole.length - segment.length; i++) {\n    let match = true;\n    for (let j = 0; j < segment.length; j++) {\n      if (whole[i + j] !== segment[j]) {\n        match = false;\n        break;\n      }\n    }\n    if (match) {\n      return i;\n    }\n  }\n  return -1;\n}\n__name(findBytesSegmentIndex, \"findBytesSegmentIndex\");\nfunction getContractCalls(contractInput, abiMap, receipt, scriptData) {\n  const calls = [];\n  const abi = abiMap?.[contractInput.contractID];\n  if (!abi || !scriptData) {\n    return calls;\n  }\n  const bytesSegment = concat3([\n    arrayify11(receipt.to),\n    // Contract ID (32 bytes)\n    toBytes(receipt.param1.toHex(), 8),\n    // Function selector offset (8 bytes)\n    toBytes(receipt.param2.toHex(), 8)\n    // Function args offset (8 bytes)\n  ]);\n  const segmentIndex = findBytesSegmentIndex(scriptData, bytesSegment);\n  const canDecodeFunctionCall = segmentIndex !== -1;\n  if (!canDecodeFunctionCall) {\n    return calls;\n  }\n  const offset = segmentIndex + bytesSegment.length;\n  const call = getFunctionCall({ abi, receipt, offset, scriptData });\n  calls.push(call);\n  return calls;\n}\n__name(getContractCalls, \"getContractCalls\");\nfunction getAssetsSent(receipt) {\n  return receipt.amount?.isZero() ? void 0 : [\n    {\n      amount: receipt.amount,\n      assetId: receipt.assetId\n    }\n  ];\n}\n__name(getAssetsSent, \"getAssetsSent\");\nfunction processCallReceipt(receipt, contractInput, inputs, abiMap, scriptData, baseAssetId) {\n  const assetId = receipt.assetId === ZeroBytes329 ? baseAssetId : receipt.assetId;\n  const input = getInputFromAssetId(inputs, assetId, assetId === baseAssetId);\n  if (!input) {\n    return [];\n  }\n  const inputAddress = getInputAccountAddress(input);\n  const calls = getContractCalls(contractInput, abiMap, receipt, scriptData);\n  return [\n    {\n      name: \"Contract call\" /* contractCall */,\n      from: {\n        type: 1 /* account */,\n        address: inputAddress\n      },\n      to: {\n        type: 0 /* contract */,\n        address: receipt.to\n      },\n      assetsSent: getAssetsSent(receipt),\n      calls,\n      receipts: [receipt]\n    }\n  ];\n}\n__name(processCallReceipt, \"processCallReceipt\");\nfunction getContractCallOperations({\n  inputs,\n  outputs,\n  receipts,\n  abiMap,\n  rawPayload,\n  baseAssetId\n}) {\n  const contractCallReceipts = getReceiptsCall(receipts);\n  const contractOutputs = getOutputsContract(outputs);\n  return contractOutputs.flatMap((output) => {\n    const contractInput = getInputContractFromIndex(inputs, output.inputIndex);\n    if (!contractInput) {\n      return [];\n    }\n    let scriptData;\n    if (rawPayload) {\n      const [transaction] = new TransactionCoder4().decode(arrayify11(rawPayload), 0);\n      if (transaction.type === TransactionType10.Script) {\n        scriptData = arrayify11(transaction.scriptData);\n      }\n    }\n    return contractCallReceipts.filter((receipt) => receipt.to === contractInput.contractID).flatMap(\n      (receipt) => processCallReceipt(receipt, contractInput, inputs, abiMap, scriptData, baseAssetId)\n    );\n  });\n}\n__name(getContractCallOperations, \"getContractCallOperations\");\nfunction extractTransferOperationFromReceipt(receipt, contractInputs, changeOutputs) {\n  const { to: toAddress, assetId, amount } = receipt;\n  let { id: fromAddress } = receipt;\n  const toType = contractInputs.some((input) => input.contractID === toAddress) ? 0 /* contract */ : 1 /* account */;\n  if (ZeroBytes329 === fromAddress) {\n    const change = changeOutputs.find((output) => output.assetId === assetId);\n    fromAddress = change?.to || fromAddress;\n  }\n  const fromType = contractInputs.some((input) => input.contractID === fromAddress) ? 0 /* contract */ : 1 /* account */;\n  return {\n    name: \"Transfer asset\" /* transfer */,\n    from: {\n      type: fromType,\n      address: fromAddress\n    },\n    to: {\n      type: toType,\n      address: toAddress\n    },\n    assetsSent: [\n      {\n        assetId: assetId.toString(),\n        amount\n      }\n    ],\n    receipts: [receipt]\n  };\n}\n__name(extractTransferOperationFromReceipt, \"extractTransferOperationFromReceipt\");\nfunction getTransferOperations({\n  inputs,\n  outputs,\n  receipts,\n  baseAssetId\n}) {\n  let operations = [];\n  const coinOutputs = getOutputsCoin(outputs);\n  const contractInputs = getInputsContract(inputs);\n  const changeOutputs = getOutputsChange(outputs);\n  const aggregated = aggregateInputsAmountsByAssetAndOwner(inputs, baseAssetId);\n  coinOutputs.forEach(({ amount, assetId, to }) => {\n    const txPayers = aggregated.get(assetId) || /* @__PURE__ */ new Map();\n    let selectedPayer;\n    let fallbackPayer;\n    for (const [address, payedAmount] of txPayers) {\n      if (!fallbackPayer) {\n        fallbackPayer = address;\n      }\n      if (payedAmount.gte(amount)) {\n        selectedPayer = address;\n        break;\n      }\n    }\n    selectedPayer = selectedPayer || fallbackPayer;\n    if (selectedPayer) {\n      operations = addOperation(operations, {\n        name: \"Transfer asset\" /* transfer */,\n        from: {\n          type: 1 /* account */,\n          address: selectedPayer\n        },\n        to: {\n          type: 1 /* account */,\n          address: to\n        },\n        assetsSent: [{ assetId, amount }]\n      });\n    }\n  });\n  const transferReceipts = getReceiptsByType(\n    receipts,\n    ReceiptType5.Transfer\n  );\n  const transferOutReceipts = getReceiptsByType(\n    receipts,\n    ReceiptType5.TransferOut\n  );\n  [...transferReceipts, ...transferOutReceipts].forEach((receipt) => {\n    const operation = extractTransferOperationFromReceipt(receipt, contractInputs, changeOutputs);\n    operations = addOperation(operations, operation);\n  });\n  return operations;\n}\n__name(getTransferOperations, \"getTransferOperations\");\nfunction getPayProducerOperations(outputs) {\n  const coinOutputs = getOutputsCoin(outputs);\n  const payProducerOperations = coinOutputs.reduce((prev, output) => {\n    const operations = addOperation(prev, {\n      name: \"Pay network fee to block producer\" /* payBlockProducer */,\n      from: {\n        type: 1 /* account */,\n        address: \"Network\"\n      },\n      to: {\n        type: 1 /* account */,\n        address: output.to.toString()\n      },\n      assetsSent: [\n        {\n          assetId: output.assetId.toString(),\n          amount: output.amount\n        }\n      ]\n    });\n    return operations;\n  }, []);\n  return payProducerOperations;\n}\n__name(getPayProducerOperations, \"getPayProducerOperations\");\nfunction getContractCreatedOperations({ inputs, outputs }) {\n  const contractCreatedOutputs = getOutputsContractCreated(outputs);\n  const input = getInputsCoinAndMessage(inputs)[0];\n  const fromAddress = getInputAccountAddress(input);\n  const contractCreatedOperations = contractCreatedOutputs.reduce((prev, contractCreatedOutput) => {\n    const operations = addOperation(prev, {\n      name: \"Contract created\" /* contractCreated */,\n      from: {\n        type: 1 /* account */,\n        address: fromAddress\n      },\n      to: {\n        type: 0 /* contract */,\n        address: contractCreatedOutput?.contractId || \"\"\n      }\n    });\n    return operations;\n  }, []);\n  return contractCreatedOperations;\n}\n__name(getContractCreatedOperations, \"getContractCreatedOperations\");\nfunction getOperations({\n  transactionType,\n  inputs,\n  outputs,\n  receipts,\n  abiMap,\n  rawPayload,\n  maxInputs,\n  baseAssetId\n}) {\n  if (isTypeCreate(transactionType)) {\n    return [...getContractCreatedOperations({ inputs, outputs })];\n  }\n  if (isTypeScript(transactionType)) {\n    return [\n      ...getTransferOperations({ inputs, outputs, receipts, baseAssetId }),\n      ...getContractCallOperations({\n        inputs,\n        outputs,\n        receipts,\n        abiMap,\n        rawPayload,\n        maxInputs,\n        baseAssetId\n      }),\n      ...getWithdrawFromFuelOperations({ inputs, receipts, baseAssetId })\n    ];\n  }\n  return [...getPayProducerOperations(outputs)];\n}\n__name(getOperations, \"getOperations\");\n\n// src/providers/transaction-summary/receipt.ts\nimport { ReceiptType as ReceiptType6 } from \"@fuel-ts/transactions\";\nvar processGqlReceipt = /* @__PURE__ */ __name((gqlReceipt) => deserializeReceipt(gqlReceipt), \"processGqlReceipt\");\nvar extractMintedAssetsFromReceipts = /* @__PURE__ */ __name((receipts) => {\n  const mintedAssets = [];\n  receipts.forEach((receipt) => {\n    if (receipt.type === ReceiptType6.Mint) {\n      mintedAssets.push({\n        subId: receipt.subId,\n        contractId: receipt.contractId,\n        assetId: receipt.assetId,\n        amount: receipt.val\n      });\n    }\n  });\n  return mintedAssets;\n}, \"extractMintedAssetsFromReceipts\");\nvar extractBurnedAssetsFromReceipts = /* @__PURE__ */ __name((receipts) => {\n  const burnedAssets = [];\n  receipts.forEach((receipt) => {\n    if (receipt.type === ReceiptType6.Burn) {\n      burnedAssets.push({\n        subId: receipt.subId,\n        contractId: receipt.contractId,\n        assetId: receipt.assetId,\n        amount: receipt.val\n      });\n    }\n  });\n  return burnedAssets;\n}, \"extractBurnedAssetsFromReceipts\");\n\n// src/providers/transaction-summary/status.ts\nimport { ErrorCode as ErrorCode14, FuelError as FuelError16 } from \"@fuel-ts/errors\";\nimport { bn as bn15 } from \"@fuel-ts/math\";\nvar getTransactionStatusName = /* @__PURE__ */ __name((gqlStatus) => {\n  switch (gqlStatus) {\n    case \"FailureStatus\":\n      return \"failure\" /* failure */;\n    case \"SuccessStatus\":\n      return \"success\" /* success */;\n    case \"SubmittedStatus\":\n      return \"submitted\" /* submitted */;\n    case \"SqueezedOutStatus\":\n      return \"squeezedout\" /* squeezedout */;\n    case \"PreconfirmationSuccessStatus\":\n      return \"preconfirmationSuccess\" /* preconfirmationSuccess */;\n    case \"PreconfirmationFailureStatus\":\n      return \"preconfirmationFailure\" /* preconfirmationFailure */;\n    default:\n      throw new FuelError16(\n        ErrorCode14.INVALID_TRANSACTION_STATUS,\n        `Invalid transaction status: ${gqlStatus}.`\n      );\n  }\n}, \"getTransactionStatusName\");\nvar extractResolvedOutputs = /* @__PURE__ */ __name((serializedOutputs) => {\n  const resolvedOutputs = [];\n  serializedOutputs?.forEach(\n    ({ utxoId, output }) => resolvedOutputs.push({\n      utxoId,\n      output: deserializeProcessedTxOutput(output)\n    })\n  );\n  return resolvedOutputs;\n}, \"extractResolvedOutputs\");\nvar processGraphqlStatus = /* @__PURE__ */ __name((gqlTransactionStatus) => {\n  let time;\n  let blockId;\n  let status;\n  let totalFee;\n  let totalGas;\n  let receipts;\n  let resolvedOutputs = [];\n  let errorReason;\n  let isStatusFailure = false;\n  let isStatusSuccess = false;\n  let isStatusPending = false;\n  let isStatusPreConfirmationSuccess = false;\n  let isStatusPreConfirmationFailure = false;\n  if (gqlTransactionStatus?.type) {\n    status = getTransactionStatusName(gqlTransactionStatus.type);\n    switch (gqlTransactionStatus.type) {\n      case \"SuccessStatus\":\n        time = gqlTransactionStatus.time;\n        blockId = gqlTransactionStatus.block?.id;\n        isStatusSuccess = true;\n        receipts = gqlTransactionStatus.receipts?.map(deserializeReceipt);\n        totalFee = bn15(gqlTransactionStatus.totalFee);\n        totalGas = bn15(gqlTransactionStatus.totalGas);\n        break;\n      case \"FailureStatus\":\n        time = gqlTransactionStatus.time;\n        blockId = gqlTransactionStatus.block?.id;\n        isStatusFailure = true;\n        totalFee = bn15(gqlTransactionStatus.totalFee);\n        receipts = gqlTransactionStatus.receipts?.map(deserializeReceipt);\n        totalGas = bn15(gqlTransactionStatus.totalGas);\n        break;\n      case \"SubmittedStatus\":\n        time = gqlTransactionStatus.time;\n        isStatusPending = true;\n        break;\n      case \"PreconfirmationSuccessStatus\":\n        isStatusPreConfirmationSuccess = true;\n        totalFee = bn15(gqlTransactionStatus.totalFee);\n        totalGas = bn15(gqlTransactionStatus.totalGas);\n        receipts = gqlTransactionStatus.preconfirmationReceipts?.map(deserializeReceipt);\n        resolvedOutputs = extractResolvedOutputs(gqlTransactionStatus.resolvedOutputs);\n        break;\n      case \"PreconfirmationFailureStatus\":\n        isStatusPreConfirmationFailure = true;\n        totalFee = bn15(gqlTransactionStatus.totalFee);\n        totalGas = bn15(gqlTransactionStatus.totalGas);\n        receipts = gqlTransactionStatus.preconfirmationReceipts?.map(deserializeReceipt);\n        resolvedOutputs = extractResolvedOutputs(gqlTransactionStatus.resolvedOutputs);\n        errorReason = gqlTransactionStatus.reason;\n        break;\n      default:\n    }\n  }\n  const processedGraphqlStatus = {\n    time,\n    blockId,\n    status,\n    totalFee,\n    totalGas,\n    receipts,\n    isStatusFailure,\n    isStatusSuccess,\n    isStatusPending,\n    isStatusPreConfirmationSuccess,\n    isStatusPreConfirmationFailure,\n    resolvedOutputs,\n    errorReason\n  };\n  return processedGraphqlStatus;\n}, \"processGraphqlStatus\");\nvar getTotalFeeFromStatus = /* @__PURE__ */ __name((status) => status && \"totalFee\" in status ? bn15(status.totalFee) : void 0, \"getTotalFeeFromStatus\");\n\n// src/providers/transaction-summary/assemble-transaction-summary.ts\nfunction assembleTransactionSummary(params) {\n  const {\n    id,\n    receipts,\n    gasPerByte,\n    gasPriceFactor,\n    transaction,\n    transactionBytes,\n    gqlTransactionStatus,\n    abiMap = {},\n    maxInputs,\n    gasCosts,\n    maxGasPerTx,\n    gasPrice,\n    baseAssetId\n  } = params;\n  const gasUsed = getGasUsedFromReceipts(receipts);\n  const rawPayload = hexlify16(transactionBytes);\n  const operations = getOperations({\n    transactionType: transaction.type,\n    inputs: transaction.inputs || [],\n    outputs: transaction.outputs || [],\n    receipts,\n    rawPayload,\n    abiMap,\n    maxInputs,\n    baseAssetId\n  });\n  const typeName = getTransactionTypeName(transaction.type);\n  const tip = bn16(transaction.policies?.find((policy) => policy.type === PolicyType3.Tip)?.data);\n  const { isStatusFailure, isStatusPending, isStatusSuccess, blockId, status, time, totalFee } = processGraphqlStatus(gqlTransactionStatus);\n  const fee = totalFee ?? calculateTXFeeForSummary({\n    gasPrice,\n    rawPayload,\n    tip,\n    consensusParameters: {\n      gasCosts,\n      maxGasPerTx,\n      feeParams: {\n        gasPerByte,\n        gasPriceFactor\n      }\n    }\n  });\n  const mintedAssets = extractMintedAssetsFromReceipts(receipts);\n  const burnedAssets = extractBurnedAssetsFromReceipts(receipts);\n  let date;\n  if (time) {\n    date = DateTime.fromTai64(time);\n  }\n  const transactionSummary = {\n    id,\n    tip,\n    fee,\n    gasUsed,\n    operations,\n    type: typeName,\n    blockId,\n    time,\n    status,\n    receipts,\n    mintedAssets,\n    burnedAssets,\n    isTypeMint: isTypeMint(transaction.type),\n    isTypeCreate: isTypeCreate(transaction.type),\n    isTypeScript: isTypeScript(transaction.type),\n    isTypeUpgrade: isTypeUpgrade(transaction.type),\n    isTypeUpload: isTypeUpload(transaction.type),\n    isTypeBlob: isTypeBlob(transaction.type),\n    isStatusFailure,\n    isStatusSuccess,\n    isStatusPending,\n    date,\n    transaction\n  };\n  return transactionSummary;\n}\n__name(assembleTransactionSummary, \"assembleTransactionSummary\");\nfunction assemblePreConfirmationTransactionSummary(params) {\n  const { id, gqlTransactionStatus, transactionRequest, baseAssetId, maxInputs, abiMap } = params;\n  let type;\n  let operations;\n  let gasUsed;\n  let tip;\n  let transaction;\n  let mintedAssets;\n  let burnedAssets;\n  const {\n    isStatusFailure,\n    isStatusSuccess,\n    isStatusPending,\n    status,\n    receipts,\n    resolvedOutputs,\n    errorReason,\n    totalFee,\n    isStatusPreConfirmationFailure,\n    isStatusPreConfirmationSuccess\n  } = processGraphqlStatus(gqlTransactionStatus);\n  if (receipts) {\n    gasUsed = getGasUsedFromReceipts(receipts);\n    mintedAssets = extractMintedAssetsFromReceipts(receipts);\n    burnedAssets = extractBurnedAssetsFromReceipts(receipts);\n  }\n  if (transactionRequest) {\n    transaction = transactionRequest.toTransaction();\n    type = getTransactionTypeName(transaction.type);\n    tip = bn16(transaction.policies?.find((policy) => policy.type === PolicyType3.Tip)?.data);\n    if (receipts) {\n      const rawPayload = hexlify16(new TransactionCoder5().encode(transaction));\n      operations = getOperations({\n        transactionType: transaction.type,\n        inputs: transaction.inputs || [],\n        outputs: transaction.outputs || [],\n        receipts,\n        rawPayload,\n        abiMap,\n        maxInputs,\n        baseAssetId\n      });\n    }\n  }\n  const transactionSummary = {\n    id,\n    fee: totalFee,\n    type,\n    status,\n    receipts,\n    gasUsed,\n    tip,\n    isStatusPreConfirmationFailure,\n    isStatusPreConfirmationSuccess,\n    isStatusFailure,\n    isStatusSuccess,\n    isStatusPending,\n    ...transaction && {\n      isTypeMint: isTypeMint(transaction.type),\n      isTypeCreate: isTypeCreate(transaction.type),\n      isTypeScript: isTypeScript(transaction.type),\n      isTypeUpgrade: isTypeUpgrade(transaction.type),\n      isTypeUpload: isTypeUpload(transaction.type),\n      isTypeBlob: isTypeBlob(transaction.type)\n    },\n    mintedAssets,\n    burnedAssets,\n    resolvedOutputs,\n    errorReason,\n    transaction,\n    operations\n  };\n  return transactionSummary;\n}\n__name(assemblePreConfirmationTransactionSummary, \"assemblePreConfirmationTransactionSummary\");\n\n// src/providers/transaction-response/getAllDecodedLogs.ts\nimport { Interface as Interface3, BigNumberCoder } from \"@fuel-ts/abi-coder\";\nimport { ZeroBytes32 as ZeroBytes3210 } from \"@fuel-ts/address/configs\";\nimport { ReceiptType as ReceiptType7 } from \"@fuel-ts/transactions\";\nfunction getAllDecodedLogs(opts) {\n  const { receipts, mainAbi, externalAbis = {} } = opts;\n  let mainContract = \"\";\n  if (mainAbi.programType === \"contract\") {\n    const firstCallReceipt = receipts.find(\n      (r) => r.type === ReceiptType7.Call && r.id === ZeroBytes3210\n    );\n    if (firstCallReceipt) {\n      mainContract = firstCallReceipt.to;\n    }\n  }\n  return receipts.reduce(\n    ({ logs, groupedLogs }, receipt) => {\n      if (receipt.type === ReceiptType7.LogData || receipt.type === ReceiptType7.Log) {\n        const isLogFromMainAbi = receipt.id === ZeroBytes3210 || mainContract === receipt.id;\n        const isDecodable = isLogFromMainAbi || externalAbis[receipt.id];\n        if (isDecodable) {\n          const interfaceToUse = isLogFromMainAbi ? new Interface3(mainAbi) : new Interface3(externalAbis[receipt.id]);\n          const data = receipt.type === ReceiptType7.Log ? new BigNumberCoder(\"u64\").encode(receipt.ra) : receipt.data;\n          const [decodedLog] = interfaceToUse.decodeLog(data, receipt.rb.toString());\n          logs.push(decodedLog);\n          groupedLogs[receipt.id] = [...groupedLogs[receipt.id] || [], decodedLog];\n        }\n      }\n      return { logs, groupedLogs };\n    },\n    { logs: [], groupedLogs: {} }\n  );\n}\n__name(getAllDecodedLogs, \"getAllDecodedLogs\");\n\n// src/providers/transaction-response/transaction-response.ts\nvar TransactionResponse = class _TransactionResponse {\n  /**\n   * Constructor for `TransactionResponse`.\n   *\n   * @param tx - The transaction ID or TransactionRequest.\n   * @param provider - The provider.\n   */\n  constructor(tx, provider, chainId, abis, submitTxSubscription) {\n    this.submitTxSubscription = submitTxSubscription;\n    if (typeof tx === \"string\") {\n      this.id = tx;\n    } else {\n      this.id = tx.getTransactionId(chainId);\n      this.request = tx;\n    }\n    this.provider = provider;\n    this.abis = abis;\n    this.waitForResult = this.waitForResult.bind(this);\n    this.waitForPreConfirmation = this.waitForPreConfirmation.bind(this);\n  }\n  static {\n    __name(this, \"TransactionResponse\");\n  }\n  /** Transaction ID */\n  id;\n  /** Current provider */\n  provider;\n  /** Gas used on the transaction */\n  gasUsed = bn17(0);\n  /** The graphql Transaction with receipts object. */\n  gqlTransaction;\n  request;\n  status;\n  abis;\n  preConfirmationStatus;\n  waitingForStreamData = false;\n  statusResolvers = /* @__PURE__ */ new Map();\n  /**\n   * Async constructor for `TransactionResponse`. This method can be used to create\n   * an instance of `TransactionResponse` and wait for the transaction to be fetched\n   * from the chain, ensuring that the `gqlTransaction` property is set.\n   *\n   * @param id - The transaction ID.\n   * @param provider - The provider.\n   */\n  static async create(id, provider, abis) {\n    const chainId = await provider.getChainId();\n    const response = new _TransactionResponse(id, provider, chainId, abis);\n    await response.fetch();\n    return response;\n  }\n  applyMalleableSubscriptionFields(transaction) {\n    const status = this.status;\n    if (!status) {\n      return;\n    }\n    const tx = transaction;\n    if (status.type === \"SuccessStatus\" || status.type === \"FailureStatus\") {\n      tx.inputs = tx.inputs.map((input, idx) => {\n        if (\"txPointer\" in input) {\n          const correspondingInput = status.transaction.inputs?.[idx];\n          return {\n            ...input,\n            txPointer: TxPointerCoder.decodeFromGqlScalar(correspondingInput.txPointer)\n          };\n        }\n        return input;\n      });\n      tx.outputs = status.transaction.outputs.map(deserializeProcessedTxOutput);\n      if (status.transaction.receiptsRoot) {\n        tx.receiptsRoot = status.transaction.receiptsRoot;\n      }\n    }\n  }\n  async getTransaction() {\n    if (this.request) {\n      const tx2 = this.request.toTransaction();\n      this.applyMalleableSubscriptionFields(tx2);\n      return {\n        tx: tx2,\n        bytes: this.request.toTransactionBytes()\n      };\n    }\n    const gqlTransaction = this.gqlTransaction ?? await this.fetch();\n    const { rawPayload } = gqlTransaction;\n    const bytes = arrayify12(rawPayload);\n    const [tx] = new TransactionCoder6().decode(bytes, 0);\n    return {\n      tx,\n      bytes\n    };\n  }\n  /**\n   *\n   * NOTE: This method is only called within `getTransactionSummary`, which is invoked after `getTransaction`.\n   * Since `getTransaction` only resolves once the transaction has been processed,\n   * the status at this point is guaranteed to be either `SuccessStatus` or `FailureStatus`.\n   */\n  getReceipts() {\n    const status = this.getTransactionStatus();\n    switch (status?.type) {\n      case \"SuccessStatus\":\n      case \"FailureStatus\":\n        return status.receipts.map(deserializeReceipt);\n      default:\n        return [];\n    }\n  }\n  /**\n   * Fetch the transaction with receipts from the provider.\n   *\n   * @returns Transaction with receipts query result.\n   */\n  async fetch() {\n    const response = await this.provider.operations.getTransactionWithReceipts({\n      transactionId: this.id\n    });\n    if (!response.transaction) {\n      const subscription = await this.provider.operations.statusChange({\n        transactionId: this.id\n      });\n      for await (const { statusChange } of subscription) {\n        if (statusChange) {\n          this.status = statusChange;\n          break;\n        }\n      }\n      return this.fetch();\n    }\n    this.gqlTransaction = response.transaction;\n    return response.transaction;\n  }\n  /**\n   * Retrieves the TransactionSummary. If the `gqlTransaction` is not set, it will\n   * fetch it from the provider\n   *\n   * @param contractsAbiMap - The contracts ABI map.\n   * @returns\n   */\n  async getTransactionSummary(contractsAbiMap) {\n    const { tx: transaction, bytes: transactionBytes } = await this.getTransaction();\n    const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = await this.provider.getGasConfig();\n    const transactionStatus = this.getTransactionStatus();\n    const totalFee = getTotalFeeFromStatus(transactionStatus);\n    const gasPrice = totalFee ? bn17(0) : await this.provider.getLatestGasPrice();\n    const maxInputs = (await this.provider.getChain()).consensusParameters.txParameters.maxInputs;\n    const baseAssetId = await this.provider.getBaseAssetId();\n    const transactionSummary = assembleTransactionSummary({\n      id: this.id,\n      receipts: this.getReceipts(),\n      transaction,\n      transactionBytes,\n      gqlTransactionStatus: transactionStatus,\n      gasPerByte,\n      gasPriceFactor,\n      abiMap: contractsAbiMap,\n      maxInputs,\n      gasCosts,\n      maxGasPerTx,\n      gasPrice,\n      baseAssetId\n    });\n    return transactionSummary;\n  }\n  async getPreConfirmationTransactionSummary(contractsAbiMap) {\n    const baseAssetId = await this.provider.getBaseAssetId();\n    const maxInputs = (await this.provider.getChain()).consensusParameters.txParameters.maxInputs;\n    const transactionSummary = assemblePreConfirmationTransactionSummary({\n      id: this.id,\n      gqlTransactionStatus: this.preConfirmationStatus || this.status,\n      baseAssetId,\n      maxInputs,\n      abiMap: contractsAbiMap,\n      transactionRequest: this.request\n    });\n    return transactionSummary;\n  }\n  resolveStatus(type) {\n    const resolvers = this.statusResolvers.get(type) || [];\n    resolvers.forEach((resolve) => resolve());\n    this.statusResolvers.delete(type);\n  }\n  async waitForStatus(type) {\n    return new Promise((resolve, reject) => {\n      const resolvers = this.statusResolvers.get(type) || [];\n      resolvers.push(() => {\n        resolve();\n      });\n      this.statusResolvers.set(type, resolvers);\n      this.waitForStatusChange().catch(reject);\n    });\n  }\n  /**\n   * Waits for the status change of the transaction.\n   * If the transaction is already in a final state, it will return immediately.\n   * If the transaction is not in a final state, it will wait for the status change.\n   * If we are already subscribed to the status change, it will return immediately.\n   */\n  async waitForStatusChange() {\n    const type = this.status?.type;\n    if (type && (type === \"FailureStatus\" || type === \"SuccessStatus\")) {\n      this.resolveStatus(\"preConfirmation\");\n      this.resolveStatus(\"confirmation\");\n      return;\n    }\n    if (this.waitingForStreamData) {\n      return;\n    }\n    this.waitingForStreamData = true;\n    const subscription = this.submitTxSubscription ?? await this.provider.operations.statusChange({\n      transactionId: this.id,\n      includePreConfirmation: true\n    });\n    for await (const sub2 of subscription) {\n      const statusChange = \"statusChange\" in sub2 ? sub2.statusChange : sub2.submitAndAwaitStatus;\n      this.status = statusChange;\n      if (statusChange.type === \"SqueezedOutStatus\") {\n        throw new FuelError17(\n          ErrorCode15.TRANSACTION_SQUEEZED_OUT,\n          `Transaction Squeezed Out with reason: ${statusChange.reason}`\n        );\n      }\n      if (statusChange.type === \"PreconfirmationSuccessStatus\" || statusChange.type === \"PreconfirmationFailureStatus\") {\n        this.preConfirmationStatus = statusChange;\n        this.resolveStatus(\"preConfirmation\");\n        const pendingConfirmationResolvers = this.statusResolvers.get(\"confirmation\");\n        if (!pendingConfirmationResolvers) {\n          this.waitingForStreamData = false;\n          break;\n        }\n      }\n      if (statusChange.type === \"SuccessStatus\" || statusChange.type === \"FailureStatus\") {\n        this.resolveStatus(\"confirmation\");\n        this.resolveStatus(\"preConfirmation\");\n        this.waitingForStreamData = false;\n        break;\n      }\n    }\n  }\n  async waitForConfirmationStatuses() {\n    try {\n      await this.waitForStatus(\"confirmation\");\n    } catch (error) {\n      this.unsetResourceCache();\n      throw error;\n    }\n  }\n  async waitForPreConfirmationStatuses() {\n    try {\n      await this.waitForStatus(\"preConfirmation\");\n    } catch (error) {\n      this.unsetResourceCache();\n      throw error;\n    }\n  }\n  /**\n   * Assembles the result of a transaction by retrieving the transaction summary,\n   * decoding logs (if available), and handling transaction failure.\n   *\n   * This method can be used to obtain the result of a transaction that has just\n   * been submitted or one that has already been processed.\n   *\n   * @template TTransactionType - The type of the transaction.\n   * @param contractsAbiMap - The map of contract ABIs.\n   * @returns - The assembled transaction result.\n   * @throws If the transaction status is a failure.\n   */\n  async assembleResult(contractsAbiMap) {\n    const transactionSummary = await this.getTransactionSummary(contractsAbiMap);\n    const transactionResult = {\n      ...transactionSummary\n    };\n    let { logs, groupedLogs } = { logs: [], groupedLogs: {} };\n    let abis;\n    if (this.abis) {\n      ({ logs, groupedLogs } = getAllDecodedLogs({\n        receipts: transactionSummary.receipts,\n        mainAbi: this.abis.main,\n        externalAbis: this.abis.otherContractsAbis\n      }));\n      transactionResult.logs = logs;\n      transactionResult.groupedLogs = groupedLogs;\n      abis = this.abis;\n    }\n    const { receipts } = transactionResult;\n    const status = this.getTransactionStatus();\n    if (status?.type === \"FailureStatus\") {\n      const { reason } = status;\n      throw extractTxError({\n        receipts,\n        statusReason: reason,\n        logs,\n        groupedLogs,\n        abis\n      });\n    }\n    return transactionResult;\n  }\n  async assemblePreConfirmationResult(contractsAbiMap) {\n    const transactionSummary = await this.getPreConfirmationTransactionSummary(contractsAbiMap);\n    const transactionResult = {\n      ...transactionSummary,\n      logs: [],\n      groupedLogs: {}\n    };\n    let { logs, groupedLogs } = { logs: [], groupedLogs: {} };\n    if (this.abis && transactionSummary.receipts) {\n      ({ logs, groupedLogs } = getAllDecodedLogs({\n        receipts: transactionSummary.receipts,\n        mainAbi: this.abis.main,\n        externalAbis: this.abis.otherContractsAbis\n      }));\n      transactionResult.logs = logs;\n      transactionResult.groupedLogs = groupedLogs;\n    }\n    return transactionResult;\n  }\n  /**\n   * Waits for transaction to complete and returns the result.\n   *\n   * @returns The completed transaction result\n   */\n  async waitForResult(contractsAbiMap) {\n    await this.waitForConfirmationStatuses();\n    this.unsetResourceCache();\n    return this.assembleResult(contractsAbiMap);\n  }\n  /**\n   * Waits for the transaction's pre-confirmation and returns the result.\n   *\n   * @param contractsAbiMap - The contracts ABI map.\n   * @returns The pre-confirmed transaction result\n   */\n  async waitForPreConfirmation(contractsAbiMap) {\n    await this.waitForPreConfirmationStatuses();\n    this.unsetResourceCache();\n    return this.assemblePreConfirmationResult(contractsAbiMap);\n  }\n  /**\n   * Waits for transaction to complete and returns the result.\n   *\n   * @param contractsAbiMap - The contracts ABI map.\n   */\n  async wait(contractsAbiMap) {\n    return this.waitForResult(contractsAbiMap);\n  }\n  unsetResourceCache() {\n    this.provider.cache?.unset(this.id);\n  }\n  getTransactionStatus() {\n    return this.status ?? this.gqlTransaction?.status;\n  }\n};\n\n// src/providers/transaction-response/getDecodedLogs.ts\nimport { Interface as Interface4, BigNumberCoder as BigNumberCoder2 } from \"@fuel-ts/abi-coder\";\nimport { ZeroBytes32 as ZeroBytes3211 } from \"@fuel-ts/address/configs\";\nimport { ReceiptType as ReceiptType8 } from \"@fuel-ts/transactions\";\nfunction getDecodedLogs(receipts, mainAbi, externalAbis = {}) {\n  let mainContract = \"\";\n  if (mainAbi.programType === \"contract\") {\n    const firstCallReceipt = receipts.find(\n      (r) => r.type === ReceiptType8.Call && r.id === ZeroBytes3211\n    );\n    mainContract = firstCallReceipt.to;\n  }\n  return receipts.reduce((logs, receipt) => {\n    if (receipt.type === ReceiptType8.LogData || receipt.type === ReceiptType8.Log) {\n      const isLogFromMainAbi = receipt.id === ZeroBytes3211 || mainContract === receipt.id;\n      const isDecodable = isLogFromMainAbi || externalAbis[receipt.id];\n      if (isDecodable) {\n        const interfaceToUse = isLogFromMainAbi ? new Interface4(mainAbi) : new Interface4(externalAbis[receipt.id]);\n        const data = receipt.type === ReceiptType8.Log ? new BigNumberCoder2(\"u64\").encode(receipt.ra) : receipt.data;\n        const [decodedLog] = interfaceToUse.decodeLog(data, receipt.rb.toString());\n        logs.push(decodedLog);\n      }\n    }\n    return logs;\n  }, []);\n}\n__name(getDecodedLogs, \"getDecodedLogs\");\n\n// src/providers/utils/auto-retry-fetch.ts\nimport { sleep } from \"@fuel-ts/utils\";\nfunction getWaitDelay(options, retryAttemptNum) {\n  const duration = options.baseDelay ?? 150;\n  switch (options.backoff) {\n    case \"linear\":\n      return duration * retryAttemptNum;\n    case \"fixed\":\n      return duration;\n    case \"exponential\":\n    default:\n      return 2 ** (retryAttemptNum - 1) * duration;\n  }\n}\n__name(getWaitDelay, \"getWaitDelay\");\nfunction autoRetryFetch(fetchFn, options, retryAttemptNum = 0) {\n  if (options === void 0) {\n    return fetchFn;\n  }\n  return async (...args) => {\n    try {\n      return await fetchFn(...args);\n    } catch (_error) {\n      const error = _error;\n      if (error.cause?.code !== \"ECONNREFUSED\") {\n        throw error;\n      }\n      const retryNum = retryAttemptNum + 1;\n      if (retryNum > options.maxRetries) {\n        throw error;\n      }\n      const delay = getWaitDelay(options, retryNum);\n      await sleep(delay);\n      return autoRetryFetch(fetchFn, options, retryNum)(...args);\n    }\n  };\n}\n__name(autoRetryFetch, \"autoRetryFetch\");\n\n// src/providers/utils/parse-graphql-response.ts\nvar parseGraphqlResponse = /* @__PURE__ */ __name(async (options) => {\n  const { response, isSubscription } = options;\n  let extensions;\n  const responseClone = response.clone();\n  if (isSubscription) {\n    const reader = responseClone.body?.getReader();\n    const { event } = await FuelGraphqlSubscriber.readEvent(reader);\n    extensions = event?.extensions;\n  } else {\n    extensions = (await responseClone.json()).extensions;\n  }\n  return {\n    extensions\n  };\n}, \"parseGraphqlResponse\");\n\n// src/providers/utils/validate-pagination-args.ts\nimport { FuelError as FuelError18, ErrorCode as ErrorCode16 } from \"@fuel-ts/errors\";\nvar validatePaginationArgs = /* @__PURE__ */ __name((params) => {\n  const { paginationLimit, inputArgs = {} } = params;\n  const { first, last, after, before } = inputArgs;\n  if (after && before) {\n    throw new FuelError18(\n      ErrorCode16.INVALID_INPUT_PARAMETERS,\n      'Pagination arguments \"after\" and \"before\" cannot be used together'\n    );\n  }\n  if ((first || 0) > paginationLimit || (last || 0) > paginationLimit) {\n    throw new FuelError18(\n      ErrorCode16.INVALID_INPUT_PARAMETERS,\n      `Pagination limit for this query cannot exceed ${paginationLimit} items`\n    );\n  }\n  if (first && before) {\n    throw new FuelError18(\n      ErrorCode16.INVALID_INPUT_PARAMETERS,\n      'The use of pagination argument \"first\" with \"before\" is not supported'\n    );\n  }\n  if (last && after) {\n    throw new FuelError18(\n      ErrorCode16.INVALID_INPUT_PARAMETERS,\n      'The use of pagination argument \"last\" with \"after\" is not supported'\n    );\n  }\n  if (!first && !last) {\n    inputArgs.first = paginationLimit;\n  }\n  return inputArgs;\n}, \"validatePaginationArgs\");\n\n// src/providers/provider.ts\nvar MAX_RETRIES = 10;\nvar RESOURCES_PAGE_SIZE_LIMIT = 512;\nvar TRANSACTIONS_PAGE_SIZE_LIMIT = 60;\nvar BALANCES_PAGE_SIZE_LIMIT = 100;\nvar NON_PAGINATED_BALANCES_SIZE = 1e4;\nvar BLOCKS_PAGE_SIZE_LIMIT = 5;\nvar DEFAULT_RESOURCE_CACHE_TTL = 2e4;\nvar GAS_USED_MODIFIER = 1.2;\nvar WRITE_OPERATIONS = [\n  \"submit\",\n  \"submitAndAwaitStatus\",\n  \"produceBlocks\"\n];\nvar Provider = class _Provider {\n  static {\n    __name(this, \"Provider\");\n  }\n  operations;\n  cache;\n  /**\n   * @hidden\n   * @param url - If provided, clears cache only for given url\n   */\n  static clearChainAndNodeCaches(url) {\n    if (url) {\n      delete _Provider.inflightFetchChainAndNodeInfoRequests[url];\n      delete _Provider.chainInfoCache[url];\n      delete _Provider.nodeInfoCache[url];\n      delete _Provider.currentBlockHeightCache[url];\n      return;\n    }\n    _Provider.inflightFetchChainAndNodeInfoRequests = {};\n    _Provider.nodeInfoCache = {};\n    _Provider.chainInfoCache = {};\n    _Provider.currentBlockHeightCache = {};\n  }\n  /** @hidden */\n  url;\n  /** @hidden */\n  urlWithoutAuth;\n  /**\n   * Governs whether to include the required block height in the request body\n   * for block-sensitive operations like when submitting a transaction.\n   *\n   * This ensures that the operation is executed at the correct block height,\n   * regardless of which node in the network the request is routed to.\n   *\n   * `true` by default.\n   */\n  static ENABLE_RPC_CONSISTENCY = true;\n  /** @hidden */\n  static inflightFetchChainAndNodeInfoRequests = {};\n  /** @hidden */\n  static chainInfoCache = {};\n  /** @hidden */\n  static nodeInfoCache = {};\n  /** @hidden */\n  static currentBlockHeightCache = {};\n  /** @hidden */\n  static incompatibleNodeVersionMessage = \"\";\n  /** @hidden */\n  consensusParametersTimestamp;\n  options = {\n    timeout: void 0,\n    resourceCacheTTL: void 0,\n    fetch: void 0,\n    retryOptions: void 0,\n    headers: void 0,\n    cache: void 0\n  };\n  static extractOperationName(body) {\n    return body?.toString().match(/\"operationName\":\"(.+)\"/)?.[1];\n  }\n  static isWriteOperation(body) {\n    return WRITE_OPERATIONS.includes(this.extractOperationName(body));\n  }\n  static normalizeUrl(url) {\n    return url.replace(/-sub$/, \"\");\n  }\n  static hasWriteOperationHappened(url) {\n    return isDefined3(_Provider.currentBlockHeightCache[this.normalizeUrl(url)]);\n  }\n  /**\n   * @hidden\n   */\n  static getFetchFn(options) {\n    const { retryOptions, timeout, headers } = options;\n    return autoRetryFetch(async (...args) => {\n      const url = args[0];\n      const request2 = args[1];\n      const signal = timeout ? AbortSignal.timeout(timeout) : void 0;\n      let fullRequest = {\n        ...request2,\n        signal,\n        headers: { ...request2?.headers, ...headers }\n      };\n      if (options.requestMiddleware) {\n        fullRequest = await options.requestMiddleware(fullRequest);\n      }\n      if (_Provider.ENABLE_RPC_CONSISTENCY && _Provider.hasWriteOperationHappened(url)) {\n        _Provider.applyBlockHeight(fullRequest, url);\n      }\n      return _Provider.fetchAndProcessBlockHeight(url, fullRequest, options);\n    }, retryOptions);\n  }\n  static applyBlockHeight(request2, url) {\n    const normalizedUrl = this.normalizeUrl(url);\n    const currentBlockHeight = _Provider.currentBlockHeightCache[normalizedUrl] ?? 0;\n    request2.body = request2.body?.toString().replace(/}$/, `,\"extensions\":{\"required_fuel_block_height\":${currentBlockHeight}}}`);\n  }\n  static async fetchAndProcessBlockHeight(url, request2, options) {\n    const fetchFn = /* @__PURE__ */ __name(() => options.fetch ? options.fetch(url, request2, options) : fetch(url, request2), \"fetchFn\");\n    const isWriteOperation = _Provider.isWriteOperation(request2.body);\n    if (isWriteOperation && !_Provider.hasWriteOperationHappened(url)) {\n      _Provider.currentBlockHeightCache[_Provider.normalizeUrl(url)] = 0;\n    }\n    let response = await fetchFn();\n    if (!_Provider.ENABLE_RPC_CONSISTENCY) {\n      return response;\n    }\n    const retryOptions = {\n      maxRetries: 5,\n      baseDelay: 500\n    };\n    for (let retriesLeft = retryOptions.maxRetries; retriesLeft > 0; --retriesLeft) {\n      const { extensions } = await parseGraphqlResponse({\n        response,\n        isSubscription: url.endsWith(\"-sub\")\n      });\n      _Provider.setCurrentBlockHeight(url, extensions?.current_fuel_block_height);\n      if (!extensions?.fuel_block_height_precondition_failed) {\n        break;\n      }\n      const retryAttempt = retryOptions.maxRetries - retriesLeft + 1;\n      const sleepTime = getWaitDelay(retryOptions, retryAttempt);\n      await sleep2(sleepTime);\n      response = await fetchFn();\n    }\n    return response;\n  }\n  static setCurrentBlockHeight(url, height) {\n    const writeOperationHappened = _Provider.hasWriteOperationHappened(url);\n    if (!isDefined3(height) || !writeOperationHappened) {\n      return;\n    }\n    const normalizedUrl = _Provider.normalizeUrl(url);\n    if (height > _Provider.currentBlockHeightCache[normalizedUrl]) {\n      _Provider.currentBlockHeightCache[normalizedUrl] = height;\n    }\n  }\n  /**\n   * Constructor to initialize a Provider.\n   *\n   * @param url - GraphQL endpoint of the Fuel node\n   * @param options - Additional options for the provider\n   * @hidden\n   */\n  constructor(url, options = {}) {\n    const { url: rawUrl, urlWithoutAuth, headers: authHeaders } = _Provider.extractBasicAuth(url);\n    this.url = rawUrl;\n    this.urlWithoutAuth = urlWithoutAuth;\n    this.url = url;\n    const { FUELS } = versions;\n    const headers = { ...authHeaders, ...options.headers, Source: `ts-sdk-${FUELS}` };\n    this.options = {\n      ...this.options,\n      ...options,\n      headers\n    };\n    this.operations = this.createOperations();\n    const { resourceCacheTTL, cache: cache2 } = this.options;\n    if (cache2) {\n      const { consensusParametersTimestamp, chain, nodeInfo } = deserializeProviderCache(cache2);\n      this.consensusParametersTimestamp = consensusParametersTimestamp;\n      _Provider.chainInfoCache[this.urlWithoutAuth] = chain;\n      _Provider.nodeInfoCache[this.urlWithoutAuth] = nodeInfo;\n    }\n    if (isDefined3(resourceCacheTTL)) {\n      if (resourceCacheTTL !== -1) {\n        this.cache = new ResourceCache(resourceCacheTTL);\n      } else {\n        this.cache = void 0;\n      }\n    } else {\n      this.cache = new ResourceCache(DEFAULT_RESOURCE_CACHE_TTL);\n    }\n  }\n  static extractBasicAuth(url) {\n    let parsedUrl;\n    try {\n      parsedUrl = new URL(url);\n    } catch (error) {\n      throw new FuelError19(FuelError19.CODES.INVALID_URL, \"Invalid URL provided.\", { url }, error);\n    }\n    const username = parsedUrl.username;\n    const password = parsedUrl.password;\n    const urlWithoutAuth = `${parsedUrl.origin}${parsedUrl.pathname}`;\n    if (!(username && password)) {\n      return { url, urlWithoutAuth: url, headers: void 0 };\n    }\n    return {\n      url,\n      urlWithoutAuth,\n      headers: { Authorization: `Basic ${btoa(`${username}:${password}`)}` }\n    };\n  }\n  /**\n   * Initialize Provider async stuff\n   */\n  async init() {\n    await this.fetchChainAndNodeInfo();\n    return this;\n  }\n  /**\n   * Returns the `chainInfo` for the current network.\n   *\n   * @returns the chain information configuration.\n   */\n  async getChain() {\n    await this.init();\n    return _Provider.chainInfoCache[this.urlWithoutAuth];\n  }\n  /**\n   * Returns the `nodeInfo` for the current network.\n   *\n   * @returns the node information configuration.\n   */\n  async getNode() {\n    await this.init();\n    return _Provider.nodeInfoCache[this.urlWithoutAuth];\n  }\n  /**\n   * Returns some helpful parameters related to gas fees.\n   */\n  async getGasConfig() {\n    await this.init();\n    const {\n      txParameters: { maxGasPerTx },\n      predicateParameters: { maxGasPerPredicate },\n      feeParameters: { gasPriceFactor, gasPerByte },\n      gasCosts\n    } = (await this.getChain()).consensusParameters;\n    return {\n      maxGasPerTx,\n      maxGasPerPredicate,\n      gasPriceFactor,\n      gasPerByte,\n      gasCosts\n    };\n  }\n  /**\n   * Updates the URL for the provider and fetches the consensus parameters for the new URL, if needed.\n   *\n   * @param url - The URL to connect to.\n   * @param options - Additional options for the provider.\n   */\n  async connect(url, options) {\n    const { url: rawUrl, urlWithoutAuth, headers } = _Provider.extractBasicAuth(url);\n    this.url = rawUrl;\n    this.urlWithoutAuth = urlWithoutAuth;\n    this.options = options ?? this.options;\n    this.options = { ...this.options, headers: { ...this.options.headers, ...headers } };\n    this.operations = this.createOperations();\n    await this.init();\n  }\n  /**\n   * Return the chain and node information.\n   * @param ignoreCache - If true, ignores the cache and re-fetch configs.\n   * @returns A promise that resolves to the Chain and NodeInfo.\n   */\n  async fetchChainAndNodeInfo(ignoreCache = false) {\n    const nodeInfo = _Provider.nodeInfoCache[this.urlWithoutAuth];\n    const chain = _Provider.chainInfoCache[this.urlWithoutAuth];\n    const hasCache = nodeInfo && chain;\n    if (hasCache && !ignoreCache) {\n      return { nodeInfo, chain };\n    }\n    const inflightRequest = _Provider.inflightFetchChainAndNodeInfoRequests[this.urlWithoutAuth];\n    if (inflightRequest) {\n      return inflightRequest.then((data) => {\n        this.consensusParametersTimestamp = data.consensusParametersTimestamp;\n        return {\n          nodeInfo: _Provider.nodeInfoCache[this.urlWithoutAuth],\n          chain: _Provider.chainInfoCache[this.urlWithoutAuth]\n        };\n      });\n    }\n    const getChainAndNodeInfoFromNetwork = this.operations.getChainAndNodeInfo().then((data) => ({\n      chain: deserializeChain(data.chain),\n      nodeInfo: deserializeNodeInfo(data.nodeInfo),\n      consensusParametersTimestamp: Date.now()\n    })).then((data) => {\n      _Provider.setIncompatibleNodeVersionMessage(data.nodeInfo);\n      _Provider.chainInfoCache[this.urlWithoutAuth] = data.chain;\n      _Provider.nodeInfoCache[this.urlWithoutAuth] = data.nodeInfo;\n      this.consensusParametersTimestamp = data.consensusParametersTimestamp;\n      return data;\n    }).catch((err) => {\n      const error = new FuelError19(\n        FuelError19.CODES.CONNECTION_REFUSED,\n        \"Unable to fetch chain and node info from the network\",\n        { url: this.urlWithoutAuth },\n        err\n      );\n      error.cause = { code: \"ECONNREFUSED\" };\n      throw error;\n    }).finally(() => {\n      delete _Provider.inflightFetchChainAndNodeInfoRequests[this.urlWithoutAuth];\n    });\n    _Provider.inflightFetchChainAndNodeInfoRequests[this.urlWithoutAuth] = getChainAndNodeInfoFromNetwork;\n    return _Provider.inflightFetchChainAndNodeInfoRequests[this.urlWithoutAuth].then((data) => {\n      this.consensusParametersTimestamp = data.consensusParametersTimestamp;\n      return {\n        nodeInfo: _Provider.nodeInfoCache[this.urlWithoutAuth],\n        chain: _Provider.chainInfoCache[this.urlWithoutAuth]\n      };\n    });\n  }\n  /**\n   * @hidden\n   */\n  static setIncompatibleNodeVersionMessage(nodeInfo) {\n    const { isMajorSupported, isMinorSupported, supportedVersion } = checkFuelCoreVersionCompatibility(nodeInfo.nodeVersion);\n    if (!isMajorSupported || !isMinorSupported) {\n      _Provider.incompatibleNodeVersionMessage = [\n        `The Fuel Node that you are trying to connect to is using fuel-core version ${nodeInfo.nodeVersion}.`,\n        `The TS SDK currently supports fuel-core version ${supportedVersion}.`,\n        `Things may not work as expected.`\n      ].join(\"\\n\");\n      FuelGraphqlSubscriber.incompatibleNodeVersionMessage = _Provider.incompatibleNodeVersionMessage;\n    }\n  }\n  /**\n   * Create GraphQL client and set operations.\n   *\n   * @returns The operation SDK object\n   * @hidden\n   */\n  createOperations() {\n    const fetchFn = _Provider.getFetchFn(this.options);\n    const gqlClient = new GraphQLClient(this.urlWithoutAuth, {\n      fetch: /* @__PURE__ */ __name((input, requestInit) => fetchFn(input.toString(), requestInit || {}, this.options), \"fetch\"),\n      responseMiddleware: /* @__PURE__ */ __name((response) => {\n        if (\"response\" in response) {\n          const graphQlResponse = response.response;\n          assertGqlResponseHasNoErrors(\n            graphQlResponse.errors,\n            _Provider.incompatibleNodeVersionMessage\n          );\n        }\n      }, \"responseMiddleware\")\n    });\n    const executeQuery = /* @__PURE__ */ __name((query, vars) => {\n      const opDefinition = query.definitions.find((x) => x.kind === \"OperationDefinition\");\n      const isSubscription = opDefinition?.operation === \"subscription\";\n      if (isSubscription) {\n        return FuelGraphqlSubscriber.create({\n          url: this.urlWithoutAuth,\n          query,\n          fetchFn: /* @__PURE__ */ __name((url, requestInit) => fetchFn(url, requestInit, this.options), \"fetchFn\"),\n          variables: vars,\n          operationName: opDefinition.name.value,\n          onEvent: /* @__PURE__ */ __name((event) => {\n            _Provider.setCurrentBlockHeight(\n              this.urlWithoutAuth,\n              event.extensions?.current_fuel_block_height\n            );\n          }, \"onEvent\")\n        });\n      }\n      return gqlClient.request(query, vars);\n    }, \"executeQuery\");\n    const customOperations = /* @__PURE__ */ __name((requester) => ({\n      getBlobs(variables) {\n        const queryParams = variables.blobIds.map((_, i) => `$blobId${i}: BlobId!`).join(\", \");\n        const blobParams = variables.blobIds.map((_, i) => `blob${i}: blob(id: $blobId${i}) { id }`).join(\"\\n\");\n        const updatedVariables = variables.blobIds.reduce(\n          (acc, blobId, i) => {\n            acc[`blobId${i}`] = blobId;\n            return acc;\n          },\n          {}\n        );\n        const document2 = gql2`\n          query getBlobs(${queryParams}) {\n            ${blobParams}\n          }\n        `;\n        return requester(document2, updatedVariables);\n      }\n    }), \"customOperations\");\n    return { ...getSdk(executeQuery), ...customOperations(executeQuery) };\n  }\n  /**\n   * Returns the version of the connected node.\n   *\n   * @returns A promise that resolves to the version string.\n   */\n  async getVersion() {\n    const {\n      nodeInfo: { nodeVersion }\n    } = await this.operations.getVersion();\n    return nodeVersion;\n  }\n  /**\n   * Returns the latest block number.\n   *\n   * @returns A promise that resolves to the latest block number.\n   */\n  async getBlockNumber() {\n    const {\n      chain: {\n        latestBlock: { height }\n      }\n    } = await this.operations.getLatestBlockHeight();\n    return bn18(height);\n  }\n  /**\n   * Returns the node information for the current provider network.\n   *\n   * @returns a promise that resolves to the node information.\n   */\n  async fetchNode() {\n    const { nodeInfo } = await this.operations.getNodeInfo();\n    const processedNodeInfo = deserializeNodeInfo(nodeInfo);\n    _Provider.nodeInfoCache[this.urlWithoutAuth] = processedNodeInfo;\n    return processedNodeInfo;\n  }\n  /**\n   * Returns the chain information for the current provider network.\n   *\n   * @returns a promise that resolves to the chain information.\n   */\n  async fetchChain() {\n    const { chain } = await this.operations.getChain();\n    const processedChain = deserializeChain(chain);\n    _Provider.chainInfoCache[this.urlWithoutAuth] = processedChain;\n    return processedChain;\n  }\n  /**\n   * Returns the chain ID for the current provider network.\n   *\n   * @returns A promise that resolves to the chain ID number.\n   */\n  async getChainId() {\n    const {\n      consensusParameters: { chainId }\n    } = await this.getChain();\n    return chainId.toNumber();\n  }\n  /**\n   * Returns the base asset ID for the current provider network.\n   *\n   * @returns the base asset ID.\n   */\n  async getBaseAssetId() {\n    const all = await this.getChain();\n    const {\n      consensusParameters: { baseAssetId }\n    } = all;\n    return baseAssetId;\n  }\n  /**\n   * Retrieves the details of an asset given its ID.\n   *\n   * @param assetId - The unique identifier of the asset.\n   * @returns A promise that resolves to an object containing the asset details.\n   */\n  async getAssetDetails(assetId) {\n    const { assetMetadata } = await this.getNodeFeatures();\n    if (!assetMetadata) {\n      throw new FuelError19(\n        ErrorCode17.UNSUPPORTED_FEATURE,\n        \"The current node does not supports fetching asset details\"\n      );\n    }\n    const { assetDetails } = await this.operations.getAssetDetails({ assetId });\n    const { contractId, subId, totalSupply } = assetDetails;\n    return {\n      subId,\n      contractId,\n      totalSupply: bn18(totalSupply)\n    };\n  }\n  /**\n   * @hidden\n   */\n  #cacheInputs(inputs, transactionId) {\n    if (!this.cache) {\n      return;\n    }\n    this.cache.set(transactionId, inputs);\n  }\n  /**\n   * @hidden\n   */\n  async validateTransaction(tx) {\n    const {\n      consensusParameters: {\n        txParameters: { maxInputs, maxOutputs }\n      }\n    } = await this.getChain();\n    if (bn18(tx.inputs.length).gt(maxInputs)) {\n      throw new FuelError19(\n        ErrorCode17.MAX_INPUTS_EXCEEDED,\n        `The transaction exceeds the maximum allowed number of inputs. Tx inputs: ${tx.inputs.length}, max inputs: ${maxInputs}`\n      );\n    }\n    if (bn18(tx.outputs.length).gt(maxOutputs)) {\n      throw new FuelError19(\n        ErrorCode17.MAX_OUTPUTS_EXCEEDED,\n        `The transaction exceeds the maximum allowed number of outputs. Tx outputs: ${tx.outputs.length}, max outputs: ${maxOutputs}`\n      );\n    }\n  }\n  /**\n   * Submits a transaction to the chain to be executed.\n   *\n   * If the transaction is missing any dependencies,\n   * the transaction will be mutated and those dependencies will be added.\n   *\n   * @param transactionRequestLike - The transaction request object.\n   * @param sendTransactionParams - The provider send transaction parameters (optional).\n   * @returns A promise that resolves to the transaction response object.\n   */\n  async sendTransaction(transactionRequestLike, {\n    enableAssetBurn,\n    estimateTxDependencies = true,\n    includePreConfirmation: _includePreConfirmation = true\n  } = {}) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    validateTransactionForAssetBurn(\n      await this.getBaseAssetId(),\n      transactionRequest,\n      enableAssetBurn\n    );\n    if (estimateTxDependencies) {\n      await this.estimateTxDependencies(transactionRequest);\n    }\n    await this.validateTransaction(transactionRequest);\n    const encodedTransaction = hexlify17(transactionRequest.toTransactionBytes());\n    let abis;\n    if (isTransactionTypeScript(transactionRequest)) {\n      abis = transactionRequest.abis;\n    }\n    const subscription = await this.operations.submitAndAwaitStatus({\n      encodedTransaction,\n      includePreConfirmation: true\n    });\n    this.#cacheInputs(\n      transactionRequest.inputs,\n      transactionRequest.getTransactionId(await this.getChainId())\n    );\n    const chainId = await this.getChainId();\n    return new TransactionResponse(transactionRequest, this, chainId, abis, subscription);\n  }\n  /**\n   * Executes a transaction without actually submitting it to the chain.\n   *\n   * If the transaction is missing any dependencies,\n   * the transaction will be mutated and those dependencies will be added.\n   *\n   * @param transactionRequestLike - The transaction request object.\n   * @param sendTransactionParams - The provider call parameters (optional).\n   * @returns A promise that resolves to the call result object.\n   */\n  async dryRun(transactionRequestLike, { utxoValidation, estimateTxDependencies = true } = {}) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    if (estimateTxDependencies) {\n      return this.estimateTxDependencies(transactionRequest);\n    }\n    const encodedTransaction = hexlify17(transactionRequest.toTransactionBytes());\n    const { dryRun: dryRunStatuses } = await this.operations.dryRun({\n      encodedTransactions: encodedTransaction,\n      utxoValidation: utxoValidation || false\n    });\n    const [{ receipts: rawReceipts, status: dryRunStatus }] = dryRunStatuses;\n    const receipts = rawReceipts.map(deserializeReceipt);\n    return { receipts, dryRunStatus };\n  }\n  /**\n   * Estimates the gas usage for predicates in a transaction request.\n   *\n   * @template T - The type of the transaction request object.\n   *\n   * @param transactionRequest - The transaction request to estimate predicates for.\n   * @returns A promise that resolves to the updated transaction request with estimated gas usage for predicates.\n   */\n  async estimatePredicates(transactionRequest) {\n    const shouldEstimatePredicates = transactionRequest.inputs.some(\n      (input) => isPredicate(input) && bn18(input.predicateGasUsed).isZero()\n    );\n    if (!shouldEstimatePredicates) {\n      return transactionRequest;\n    }\n    const encodedTransaction = hexlify17(transactionRequest.toTransactionBytes());\n    const response = await this.operations.estimatePredicates({\n      encodedTransaction\n    });\n    const { estimatePredicates } = response;\n    transactionRequest = this.parseEstimatePredicatesResponse(\n      transactionRequest,\n      estimatePredicates\n    );\n    return transactionRequest;\n  }\n  /**\n   * Estimates the gas price and predicates for a given transaction request and block horizon.\n   *\n   * @param transactionRequest - The transaction request to estimate predicates and gas price for.\n   * @param blockHorizon - The block horizon to use for gas price estimation.\n   * @returns A promise that resolves to an object containing the updated transaction\n   * request and the estimated gas price.\n   */\n  async estimatePredicatesAndGasPrice(transactionRequest, blockHorizon) {\n    const shouldEstimatePredicates = transactionRequest.inputs.some(\n      (input) => isPredicate(input) && bn18(input.predicateGasUsed).isZero()\n    );\n    if (!shouldEstimatePredicates) {\n      const gasPrice2 = await this.estimateGasPrice(blockHorizon);\n      return { transactionRequest, gasPrice: gasPrice2 };\n    }\n    const {\n      estimateGasPrice: { gasPrice },\n      estimatePredicates\n    } = await this.operations.estimatePredicatesAndGasPrice({\n      blockHorizon: String(blockHorizon),\n      encodedTransaction: hexlify17(transactionRequest.toTransactionBytes())\n    });\n    transactionRequest = this.parseEstimatePredicatesResponse(\n      transactionRequest,\n      estimatePredicates\n    );\n    return { transactionRequest, gasPrice: bn18(gasPrice) };\n  }\n  /**\n   * Will dryRun a transaction and check for missing dependencies.\n   *\n   * If there are missing variable outputs,\n   * `addVariableOutputs` is called on the transaction.\n   *\n   * @param transactionRequest - The transaction request object.\n   * @param gasPrice - The gas price to use for the transaction, if not provided it will be fetched.\n   * @returns A promise that resolves to the estimate transaction dependencies.\n   */\n  async estimateTxDependencies(transactionRequest, { gasPrice: gasPriceParam } = {}) {\n    if (isTransactionTypeCreate(transactionRequest)) {\n      return {\n        rawReceipts: [],\n        receipts: [],\n        outputVariables: 0,\n        missingContractIds: []\n      };\n    }\n    let rawReceipts = [];\n    let receipts = [];\n    const missingContractIds = [];\n    let outputVariables = 0;\n    let dryRunStatus;\n    await this.validateTransaction(transactionRequest);\n    const gasPrice = gasPriceParam ?? await this.estimateGasPrice(10);\n    for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {\n      const {\n        dryRun: [{ receipts: serializedReceipts, status }]\n      } = await this.operations.dryRun({\n        encodedTransactions: [hexlify17(transactionRequest.toTransactionBytes())],\n        utxoValidation: false,\n        gasPrice: gasPrice.toString()\n      });\n      rawReceipts = serializedReceipts;\n      receipts = serializedReceipts.map(deserializeReceipt);\n      dryRunStatus = status;\n      const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(receipts);\n      const hasMissingOutputs = missingOutputVariables.length !== 0 || missingOutputContractIds.length !== 0;\n      if (hasMissingOutputs && isTransactionTypeScript(transactionRequest)) {\n        outputVariables += missingOutputVariables.length;\n        transactionRequest.addVariableOutputs(missingOutputVariables.length);\n        missingOutputContractIds.forEach(({ contractId }) => {\n          transactionRequest.addContractInputAndOutput(new Address2(contractId));\n          missingContractIds.push(contractId);\n        });\n        const { maxFee } = await this.estimateTxGasAndFee({\n          transactionRequest,\n          gasPrice\n        });\n        transactionRequest.maxFee = maxFee;\n      } else {\n        break;\n      }\n    }\n    return {\n      rawReceipts,\n      receipts,\n      outputVariables,\n      missingContractIds,\n      dryRunStatus\n    };\n  }\n  /**\n   * Dry runs multiple transactions and checks for missing dependencies in batches.\n   *\n   * Transactions are dry run in batches. After each dry run, transactions requiring\n   * further modifications are identified. The method iteratively updates these transactions\n   * and performs subsequent dry runs until all dependencies for each transaction are satisfied.\n   *\n   * @param transactionRequests - Array of transaction request objects.\n   * @returns A promise that resolves to an array of results for each transaction.\n   */\n  async estimateMultipleTxDependencies(transactionRequests) {\n    const results = transactionRequests.map(() => ({\n      rawReceipts: [],\n      receipts: [],\n      outputVariables: 0,\n      missingContractIds: [],\n      dryRunStatus: void 0\n    }));\n    const allRequests = clone8(transactionRequests);\n    const serializedTransactionsMap = /* @__PURE__ */ new Map();\n    allRequests.forEach((req, index) => {\n      if (isTransactionTypeScript(req)) {\n        serializedTransactionsMap.set(index, hexlify17(req.toTransactionBytes()));\n      }\n    });\n    let transactionsToProcess = Array.from(serializedTransactionsMap.keys());\n    let attempt = 0;\n    while (transactionsToProcess.length > 0 && attempt < MAX_RETRIES) {\n      const encodedTransactions = transactionsToProcess.map(\n        (index) => serializedTransactionsMap.get(index)\n      );\n      const dryRunResults = await this.operations.dryRun({\n        encodedTransactions,\n        utxoValidation: false\n      });\n      const nextRoundTransactions = [];\n      for (let i = 0; i < dryRunResults.dryRun.length; i++) {\n        const requestIdx = transactionsToProcess[i];\n        const { receipts: rawReceipts, status } = dryRunResults.dryRun[i];\n        const result = results[requestIdx];\n        result.receipts = rawReceipts.map(deserializeReceipt);\n        result.dryRunStatus = status;\n        const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(\n          result.receipts\n        );\n        const hasMissingOutputs = missingOutputVariables.length > 0 || missingOutputContractIds.length > 0;\n        const request2 = allRequests[requestIdx];\n        if (hasMissingOutputs && isTransactionTypeScript(request2)) {\n          result.outputVariables += missingOutputVariables.length;\n          request2.addVariableOutputs(missingOutputVariables.length);\n          missingOutputContractIds.forEach(({ contractId }) => {\n            request2.addContractInputAndOutput(new Address2(contractId));\n            result.missingContractIds.push(contractId);\n          });\n          const { maxFee } = await this.estimateTxGasAndFee({\n            transactionRequest: request2\n          });\n          request2.maxFee = maxFee;\n          serializedTransactionsMap.set(requestIdx, hexlify17(request2.toTransactionBytes()));\n          nextRoundTransactions.push(requestIdx);\n        }\n      }\n      transactionsToProcess = nextRoundTransactions;\n      attempt += 1;\n    }\n    return results;\n  }\n  /**\n   * Dry runs multiple transactions.\n   *\n   * @param transactionRequests - Array of transaction request objects.\n   * @param sendTransactionParams - The provider call parameters (optional).\n   *\n   * @returns A promise that resolves to an array of results for each transaction call.\n   */\n  async dryRunMultipleTransactions(transactionRequests, { utxoValidation, estimateTxDependencies = true } = {}) {\n    if (estimateTxDependencies) {\n      return this.estimateMultipleTxDependencies(transactionRequests);\n    }\n    const encodedTransactions = transactionRequests.map((tx) => hexlify17(tx.toTransactionBytes()));\n    const { dryRun: dryRunStatuses } = await this.operations.dryRun({\n      encodedTransactions,\n      utxoValidation: utxoValidation || false\n    });\n    const results = dryRunStatuses.map(({ receipts: rawReceipts, status }) => {\n      const receipts = rawReceipts.map(deserializeReceipt);\n      return { receipts, dryRunStatus: status };\n    });\n    return results;\n  }\n  async autoRefetchConfigs() {\n    const now = Date.now();\n    const diff = now - (this.consensusParametersTimestamp ?? 0);\n    if (diff < 6e4) {\n      return;\n    }\n    if (!_Provider.chainInfoCache?.[this.urlWithoutAuth]) {\n      await this.fetchChainAndNodeInfo(true);\n      return;\n    }\n    const chainInfo = _Provider.chainInfoCache[this.urlWithoutAuth];\n    const {\n      latestBlock: {\n        header: { consensusParametersVersion: previous }\n      }\n    } = chainInfo;\n    const {\n      chain: {\n        latestBlock: {\n          header: { consensusParametersVersion: current }\n        }\n      }\n    } = await this.operations.getConsensusParametersVersion();\n    if (previous !== current) {\n      await this.fetchChainAndNodeInfo(true);\n    }\n  }\n  /**\n   * Estimates the transaction gas and fee based on the provided transaction request.\n   * @param params - The parameters for estimating the transaction gas and fee.\n   * @returns An object containing the estimated minimum gas, minimum fee, maximum gas, and maximum fee.\n   */\n  async estimateTxGasAndFee(params) {\n    const { transactionRequest, gasPrice: gasPriceParam } = params;\n    let gasPrice = gasPriceParam;\n    await this.autoRefetchConfigs();\n    const chainInfo = await this.getChain();\n    const { gasPriceFactor, maxGasPerTx } = await this.getGasConfig();\n    const minGas = transactionRequest.calculateMinGas(chainInfo);\n    if (!isDefined3(gasPrice)) {\n      gasPrice = await this.estimateGasPrice(10);\n    }\n    const minFee = calculateGasFee({\n      gasPrice: bn18(gasPrice),\n      gas: minGas,\n      priceFactor: gasPriceFactor,\n      tip: transactionRequest.tip\n    }).add(1);\n    let gasLimit = bn18(0);\n    if (isTransactionTypeScript(transactionRequest)) {\n      gasLimit = transactionRequest.gasLimit;\n      if (transactionRequest.gasLimit.eq(0)) {\n        transactionRequest.gasLimit = minGas;\n        transactionRequest.gasLimit = maxGasPerTx.sub(\n          transactionRequest.calculateMaxGas(chainInfo, minGas)\n        );\n        gasLimit = transactionRequest.gasLimit;\n      }\n    }\n    const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);\n    const maxFee = calculateGasFee({\n      gasPrice: bn18(gasPrice),\n      gas: maxGas,\n      priceFactor: gasPriceFactor,\n      tip: transactionRequest.tip\n    }).add(1);\n    return {\n      minGas,\n      minFee,\n      maxGas,\n      maxFee,\n      gasPrice,\n      gasLimit\n    };\n  }\n  /**\n   * Executes a signed transaction without applying the states changes\n   * on the chain.\n   *\n   * If the transaction is missing any dependencies,\n   * the transaction will be mutated and those dependencies will be added\n   *\n   * @param transactionRequestLike - The transaction request object.\n   * @param estimateTxParams - The estimate transaction params (optional).\n   * @returns A promise that resolves to the call result object.\n   */\n  async simulate(transactionRequestLike, { estimateTxDependencies = true } = {}) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    if (estimateTxDependencies) {\n      return this.estimateTxDependencies(transactionRequest);\n    }\n    const encodedTransactions = [hexlify17(transactionRequest.toTransactionBytes())];\n    const { dryRun: dryRunStatuses } = await this.operations.dryRun({\n      encodedTransactions,\n      utxoValidation: true\n    });\n    const callResult = dryRunStatuses.map((dryRunStatus) => {\n      const { id, receipts, status } = dryRunStatus;\n      const processedReceipts = receipts.map(deserializeReceipt);\n      return { id, receipts: processedReceipts, status };\n    });\n    return { receipts: callResult[0].receipts };\n  }\n  /**\n   * @hidden\n   *\n   * Returns a transaction cost to enable user\n   * to set gasLimit and also reserve balance amounts\n   * on the transaction.\n   *\n   * @param transactionRequestLike - The transaction request object.\n   * @param transactionCostParams - The transaction cost parameters (optional).\n   *\n   * @returns A promise that resolves to the transaction cost object.\n   *\n   * @deprecated Use provider.assembleTx instead\n   * Check the migration guide https://docs.fuel.network/docs/fuels-ts/transactions/assemble-tx-migration-guide/ for more information.\n   */\n  async getTransactionCost(transactionRequestLike, { signatureCallback, gasPrice: gasPriceParam } = {}) {\n    const txRequestClone = clone8(transactionRequestify(transactionRequestLike));\n    const updateMaxFee = txRequestClone.maxFee.eq(0);\n    const isScriptTransaction = isTransactionTypeScript(txRequestClone);\n    if (isScriptTransaction) {\n      txRequestClone.gasLimit = bn18(0);\n    }\n    const signedRequest = clone8(txRequestClone);\n    let addedSignatures = 0;\n    if (signatureCallback && isTransactionTypeScript(signedRequest)) {\n      const lengthBefore = signedRequest.witnesses.length;\n      await signatureCallback(signedRequest);\n      addedSignatures = signedRequest.witnesses.length - lengthBefore;\n    }\n    let gasPrice;\n    if (gasPriceParam) {\n      gasPrice = gasPriceParam;\n      await this.estimatePredicates(signedRequest);\n    } else {\n      ({ gasPrice } = await this.estimatePredicatesAndGasPrice(signedRequest, 10));\n    }\n    txRequestClone.updatePredicateGasUsed(signedRequest.inputs);\n    let { maxFee, maxGas, minFee, minGas, gasLimit } = await this.estimateTxGasAndFee({\n      // Fetches and returns a gas price\n      transactionRequest: signedRequest,\n      gasPrice\n    });\n    let rawReceipts = [];\n    let receipts = [];\n    let dryRunStatus;\n    let missingContractIds = [];\n    let outputVariables = 0;\n    let gasUsed = bn18(0);\n    txRequestClone.maxFee = maxFee;\n    if (isScriptTransaction) {\n      txRequestClone.gasLimit = gasLimit;\n      if (signatureCallback) {\n        await signatureCallback(txRequestClone);\n      }\n      ({ rawReceipts, receipts, missingContractIds, outputVariables, dryRunStatus } = await this.estimateTxDependencies(txRequestClone, { gasPrice }));\n      if (dryRunStatus && \"reason\" in dryRunStatus) {\n        throw this.extractDryRunError(txRequestClone, receipts, dryRunStatus.reason);\n      }\n      const { maxGasPerTx } = await this.getGasConfig();\n      const pristineGasUsed = getGasUsedFromReceipts(receipts);\n      gasUsed = bn18(pristineGasUsed.muln(GAS_USED_MODIFIER)).max(maxGasPerTx.sub(minGas));\n      txRequestClone.gasLimit = gasUsed;\n      ({ maxFee, maxGas, minFee, minGas } = await this.estimateTxGasAndFee({\n        transactionRequest: txRequestClone,\n        gasPrice\n      }));\n    }\n    const transactionSummary = {\n      gasPrice: gasPrice.toString(),\n      receipts: rawReceipts\n    };\n    return {\n      rawReceipts,\n      receipts,\n      gasUsed,\n      gasPrice,\n      minGas,\n      maxGas,\n      minFee,\n      maxFee,\n      outputVariables,\n      missingContractIds,\n      addedSignatures,\n      estimatedPredicates: txRequestClone.inputs,\n      dryRunStatus,\n      updateMaxFee,\n      transactionSummary\n    };\n  }\n  /**\n   * Assembles a transaction by completely estimating and funding it.\n   *\n   * @param params - Parameters used to assemble the transaction.\n   *\n   * @returns The assembled transaction request, estimated gas price, and receipts\n   */\n  async assembleTx(params) {\n    const {\n      request: request2,\n      reserveGas,\n      resourcesIdsToIgnore,\n      feePayerAccount,\n      blockHorizon = 10,\n      estimatePredicates = true,\n      accountCoinQuantities = []\n    } = params;\n    const allAddresses = /* @__PURE__ */ new Set();\n    const baseAssetId = await this.getBaseAssetId();\n    let feePayerIndex = -1;\n    let baseAssetChange;\n    const requiredBalances = accountCoinQuantities.map((quantity, index) => {\n      const { amount, assetId, account = feePayerAccount, changeOutputAccount } = quantity;\n      const changeAccountAddress = changeOutputAccount ? changeOutputAccount.address.toB256() : account.address.toB256();\n      allAddresses.add(account.address.toB256());\n      const changePolicy = {\n        change: changeAccountAddress\n      };\n      if (assetId === baseAssetId) {\n        baseAssetChange = changePolicy.change;\n      }\n      if (account.address.equals(feePayerAccount.address)) {\n        feePayerIndex = index;\n      }\n      const requiredBalance = {\n        account: resolveAccountForAssembleTxParams(account),\n        amount: bn18(amount).toString(10),\n        assetId,\n        changePolicy\n      };\n      return requiredBalance;\n    });\n    if (feePayerIndex === -1) {\n      allAddresses.add(feePayerAccount.address.toB256());\n      const newLength = requiredBalances.push({\n        account: resolveAccountForAssembleTxParams(feePayerAccount),\n        amount: bn18(0).toString(10),\n        // Since the correct fee amount cannot be determined yet, we can use 0\n        assetId: baseAssetId,\n        changePolicy: {\n          change: baseAssetChange || feePayerAccount.address.toB256()\n        }\n      });\n      feePayerIndex = newLength - 1;\n    }\n    const excludeInput = await this.adjustResourcesToIgnoreForAddresses(\n      Array.from(allAddresses),\n      resourcesIdsToIgnore\n    );\n    const {\n      assembleTx: { status, transaction: gqlTransaction, gasPrice }\n    } = await this.operations.assembleTx({\n      tx: hexlify17(request2.toTransactionBytes()),\n      blockHorizon: String(blockHorizon),\n      feeAddressIndex: String(feePayerIndex),\n      requiredBalances,\n      estimatePredicates,\n      excludeInput,\n      reserveGas: reserveGas ? bn18(reserveGas).toString(10) : void 0\n    });\n    if (status.type === \"DryRunFailureStatus\") {\n      const parsedReceipts = status.receipts.map(deserializeReceipt);\n      throw this.extractDryRunError(request2, parsedReceipts, status.reason);\n    }\n    request2.witnesses = gqlTransaction.witnesses || request2.witnesses;\n    request2.inputs = gqlTransaction.inputs?.map(deserializeInput) || request2.inputs;\n    request2.outputs = gqlTransaction.outputs?.map(deserializeOutput) || request2.outputs;\n    if (gqlTransaction.policies?.maxFee) {\n      request2.maxFee = bn18(gqlTransaction.policies.maxFee);\n    }\n    if (request2.type === TransactionType11.Script) {\n      request2.gasLimit = bn18(gqlTransaction.scriptGasLimit).add(bn18(reserveGas));\n    }\n    const rawReceipts = status.receipts;\n    const chainId = await this.getChainId();\n    request2.updateState(chainId, \"funded\", {\n      gasPrice: gasPrice.toString(),\n      receipts: rawReceipts\n    });\n    return {\n      assembledRequest: request2,\n      gasPrice: bn18(gasPrice),\n      receipts: status.receipts.map(deserializeReceipt),\n      rawReceipts\n    };\n  }\n  /**\n   * Returns coins for the given owner.\n   *\n   * @param owner - The address to get coins for.\n   * @param assetId - The asset ID of coins to get (optional).\n   * @param paginationArgs - Pagination arguments (optional).\n   *\n   * @returns A promise that resolves to the coins.\n   */\n  async getCoins(owner, assetId, paginationArgs) {\n    const ownerAddress = new Address2(owner);\n    const {\n      coins: { edges, pageInfo }\n    } = await this.operations.getCoins({\n      ...validatePaginationArgs({\n        paginationLimit: RESOURCES_PAGE_SIZE_LIMIT,\n        inputArgs: paginationArgs\n      }),\n      filter: { owner: ownerAddress.toB256(), assetId: assetId && hexlify17(assetId) }\n    });\n    const coins = edges.map(({ node }) => ({\n      id: node.utxoId,\n      assetId: node.assetId,\n      amount: bn18(node.amount),\n      owner: ownerAddress,\n      blockCreated: bn18(node.blockCreated),\n      txCreatedIdx: bn18(node.txCreatedIdx)\n    }));\n    return {\n      coins,\n      pageInfo\n    };\n  }\n  /**\n   * Returns resources for the given owner satisfying the spend query.\n   *\n   * @param owner - The address to get resources for.\n   * @param quantities - The coin quantities to get.\n   * @param resourcesIdsToIgnore - IDs of excluded resources from the selection (optional).\n   * @returns A promise that resolves to the resources.\n   */\n  async getResourcesToSpend(owner, quantities, resourcesIdsToIgnore) {\n    const ownerAddress = new Address2(owner);\n    const excludedIds = await this.adjustResourcesToIgnoreForAddresses(\n      [ownerAddress.b256Address],\n      resourcesIdsToIgnore\n    );\n    const coinsQuery = {\n      owner: ownerAddress.toB256(),\n      queryPerAsset: quantities.map(coinQuantityfy).map(({ assetId, amount, max: maxPerAsset }) => ({\n        assetId: hexlify17(assetId),\n        amount: (amount.eqn(0) ? bn18(1) : amount).toString(10),\n        max: maxPerAsset ? maxPerAsset.toString(10) : void 0\n      })),\n      excludedIds\n    };\n    const result = await this.operations.getCoinsToSpend(coinsQuery);\n    const coins = result.coinsToSpend.flat().map((coin) => {\n      switch (coin.type) {\n        case \"MessageCoin\":\n          return {\n            amount: bn18(coin.amount),\n            assetId: coin.assetId,\n            daHeight: bn18(coin.daHeight),\n            sender: new Address2(coin.sender),\n            recipient: new Address2(coin.recipient),\n            nonce: coin.nonce\n          };\n        case \"Coin\":\n          return {\n            id: coin.utxoId,\n            amount: bn18(coin.amount),\n            assetId: coin.assetId,\n            owner: ownerAddress,\n            blockCreated: bn18(coin.blockCreated),\n            txCreatedIdx: bn18(coin.txCreatedIdx)\n          };\n        default:\n          return null;\n      }\n    }).filter((v) => !!v);\n    return coins;\n  }\n  /**\n   * Returns an array of blobIds that exist on chain, for a given array of blobIds.\n   *\n   * @param blobIds - blobIds to check.\n   * @returns - A promise that resolves to an array of blobIds that exist on chain.\n   */\n  async getBlobs(blobIds) {\n    const res = await this.operations.getBlobs({ blobIds });\n    const blobs = [];\n    Object.keys(res).forEach((key) => {\n      const val = res[key];\n      blobs.push(val?.id ?? null);\n    });\n    return blobs.filter((v) => v);\n  }\n  /**\n   * Returns block matching the given ID or height.\n   *\n   * @param idOrHeight - ID or height of the block.\n   * @returns A promise that resolves to the block or null.\n   */\n  async getBlock(idOrHeight) {\n    let block;\n    if (idOrHeight === \"latest\") {\n      const {\n        chain: { latestBlock }\n      } = await this.operations.getLatestBlock();\n      block = latestBlock;\n    } else {\n      const isblockId = typeof idOrHeight === \"string\" && isB256(idOrHeight);\n      const variables = isblockId ? { blockId: idOrHeight } : { height: bn18(idOrHeight).toString(10) };\n      const response = await this.operations.getBlock(variables);\n      block = response.block;\n    }\n    if (!block) {\n      return null;\n    }\n    const { header, height, id, transactions } = block;\n    return {\n      id,\n      height: bn18(height),\n      time: header.time,\n      header: {\n        applicationHash: header.applicationHash,\n        daHeight: bn18(header.daHeight),\n        eventInboxRoot: header.eventInboxRoot,\n        messageOutboxRoot: header.messageOutboxRoot,\n        prevRoot: header.prevRoot,\n        stateTransitionBytecodeVersion: header.stateTransitionBytecodeVersion,\n        transactionsCount: header.transactionsCount,\n        transactionsRoot: header.transactionsRoot\n      },\n      transactionIds: transactions.map((tx) => tx.id)\n    };\n  }\n  /**\n   * Returns all the blocks matching the given parameters.\n   *\n   * @param params - The parameters to query blocks.\n   * @returns A promise that resolves to the blocks.\n   */\n  async getBlocks(params) {\n    const {\n      blocks: { edges, pageInfo }\n    } = await this.operations.getBlocks({\n      ...validatePaginationArgs({\n        paginationLimit: BLOCKS_PAGE_SIZE_LIMIT,\n        inputArgs: params\n      })\n    });\n    const blocks = edges.map(({ node: block }) => ({\n      id: block.id,\n      height: bn18(block.height),\n      time: block.header.time,\n      header: {\n        applicationHash: block.header.applicationHash,\n        daHeight: bn18(block.header.daHeight),\n        eventInboxRoot: block.header.eventInboxRoot,\n        messageOutboxRoot: block.header.messageOutboxRoot,\n        prevRoot: block.header.prevRoot,\n        stateTransitionBytecodeVersion: block.header.stateTransitionBytecodeVersion,\n        transactionsCount: block.header.transactionsCount,\n        transactionsRoot: block.header.transactionsRoot\n      },\n      transactionIds: block.transactions.map((tx) => tx.id)\n    }));\n    return { blocks, pageInfo };\n  }\n  /**\n   * Returns block matching the given ID or type, including transaction data.\n   *\n   * @param idOrHeight - ID or height of the block.\n   * @returns A promise that resolves to the block.\n   */\n  async getBlockWithTransactions(idOrHeight) {\n    let variables;\n    if (typeof idOrHeight === \"number\") {\n      variables = { blockHeight: bn18(idOrHeight).toString(10) };\n    } else if (idOrHeight === \"latest\") {\n      variables = { blockHeight: (await this.getBlockNumber()).toString() };\n    } else if (typeof idOrHeight === \"string\" && isB256(idOrHeight)) {\n      variables = { blockId: idOrHeight };\n    } else {\n      variables = { blockHeight: bn18(idOrHeight).toString() };\n    }\n    const { block } = await this.operations.getBlockWithTransactions(variables);\n    if (!block) {\n      return null;\n    }\n    return {\n      id: block.id,\n      height: bn18(block.height, 10),\n      time: block.header.time,\n      header: {\n        applicationHash: block.header.applicationHash,\n        daHeight: bn18(block.header.daHeight),\n        eventInboxRoot: block.header.eventInboxRoot,\n        messageOutboxRoot: block.header.messageOutboxRoot,\n        prevRoot: block.header.prevRoot,\n        stateTransitionBytecodeVersion: block.header.stateTransitionBytecodeVersion,\n        transactionsCount: block.header.transactionsCount,\n        transactionsRoot: block.header.transactionsRoot\n      },\n      transactionIds: block.transactions.map((tx) => tx.id),\n      transactions: block.transactions.map(\n        (tx) => new TransactionCoder7().decode(arrayify13(tx.rawPayload), 0)?.[0]\n      )\n    };\n  }\n  /**\n   * Get transaction with the given ID.\n   *\n   * @param transactionId - ID of the transaction.\n   * @returns A promise that resolves to the transaction.\n   */\n  async getTransaction(transactionId) {\n    const { transaction } = await this.operations.getTransaction({ transactionId });\n    if (!transaction) {\n      return null;\n    }\n    try {\n      return new TransactionCoder7().decode(\n        arrayify13(transaction.rawPayload),\n        0\n      )?.[0];\n    } catch (error) {\n      if (error instanceof FuelError19 && error.code === ErrorCode17.UNSUPPORTED_TRANSACTION_TYPE) {\n        console.warn(\"Unsupported transaction type encountered\");\n        return null;\n      }\n      throw error;\n    }\n  }\n  /**\n   * Retrieves transactions based on the provided pagination arguments.\n   * @param paginationArgs - The pagination arguments for retrieving transactions.\n   * @returns A promise that resolves to an object containing the retrieved transactions and pagination information.\n   */\n  async getTransactions(paginationArgs) {\n    const {\n      transactions: { edges, pageInfo }\n    } = await this.operations.getTransactions({\n      ...validatePaginationArgs({\n        inputArgs: paginationArgs,\n        paginationLimit: TRANSACTIONS_PAGE_SIZE_LIMIT\n      })\n    });\n    const coder = new TransactionCoder7();\n    const transactions = edges.map(({ node: { rawPayload } }) => {\n      try {\n        return coder.decode(arrayify13(rawPayload), 0)[0];\n      } catch (error) {\n        if (error instanceof FuelError19 && error.code === ErrorCode17.UNSUPPORTED_TRANSACTION_TYPE) {\n          console.warn(\"Unsupported transaction type encountered\");\n          return null;\n        }\n        throw error;\n      }\n    }).filter((tx) => tx !== null);\n    return { transactions, pageInfo };\n  }\n  /**\n   * Fetches a compressed block at the specified height.\n   *\n   * @param height - The height of the block to fetch.\n   * @returns The compressed block if available, otherwise `null`.\n   */\n  async daCompressedBlock(height) {\n    const { daCompressedBlock } = await this.operations.daCompressedBlock({\n      height\n    });\n    if (!daCompressedBlock) {\n      return null;\n    }\n    return daCompressedBlock;\n  }\n  /**\n   * Get deployed contract with the given ID.\n   *\n   * @param contractId - ID of the contract.\n   * @returns A promise that resolves to the contract.\n   */\n  async getContract(contractId) {\n    const { contract } = await this.operations.getContract({ contractId });\n    if (!contract) {\n      return null;\n    }\n    return contract;\n  }\n  /**\n   * Returns the balance for the given contract for the given asset ID.\n   *\n   * @param contractId - The contract ID to get the balance for.\n   * @param assetId - The asset ID of coins to get.\n   * @returns A promise that resolves to the balance.\n   */\n  async getContractBalance(contractId, assetId) {\n    const { contractBalance } = await this.operations.getContractBalance({\n      contract: new Address2(contractId).toB256(),\n      asset: hexlify17(assetId)\n    });\n    return bn18(contractBalance.amount, 10);\n  }\n  /**\n   * Returns the balance for the given owner for the given asset ID.\n   *\n   * @param owner - The address to get coins for.\n   * @param assetId - The asset ID of coins to get.\n   * @returns A promise that resolves to the balance.\n   */\n  async getBalance(owner, assetId) {\n    const { balance } = await this.operations.getBalanceV2({\n      owner: new Address2(owner).toB256(),\n      assetId: hexlify17(assetId)\n    });\n    return bn18(balance.amountU128, 10);\n  }\n  /**\n   * Returns balances for the given owner.\n   *\n   * @param owner - The address to get coins for.\n   * @param paginationArgs - Pagination arguments (optional).\n   * @returns A promise that resolves to the balances.\n   */\n  async getBalances(owner, paginationArgs) {\n    let args = { first: NON_PAGINATED_BALANCES_SIZE };\n    const { balancesPagination: supportsPagination } = await this.getNodeFeatures();\n    if (supportsPagination) {\n      args = validatePaginationArgs({\n        inputArgs: paginationArgs,\n        paginationLimit: BALANCES_PAGE_SIZE_LIMIT\n      });\n    }\n    const {\n      balances: { edges, pageInfo }\n    } = await this.operations.getBalancesV2({\n      ...args,\n      filter: { owner: new Address2(owner).toB256() },\n      supportsPagination\n    });\n    const balances = edges.map(({ node }) => ({\n      assetId: node.assetId,\n      amount: bn18(node.amountU128)\n    }));\n    return {\n      balances,\n      ...supportsPagination ? { pageInfo } : {}\n    };\n  }\n  /**\n   * Returns message for the given address.\n   *\n   * @param address - The address to get message from.\n   * @param paginationArgs - Pagination arguments (optional).\n   * @returns A promise that resolves to the messages.\n   */\n  async getMessages(address, paginationArgs) {\n    const {\n      messages: { edges, pageInfo }\n    } = await this.operations.getMessages({\n      ...validatePaginationArgs({\n        inputArgs: paginationArgs,\n        paginationLimit: RESOURCES_PAGE_SIZE_LIMIT\n      }),\n      owner: new Address2(address).toB256()\n    });\n    const messages = edges.map(({ node }) => ({\n      messageId: InputMessageCoder2.getMessageId({\n        sender: node.sender,\n        recipient: node.recipient,\n        nonce: node.nonce,\n        amount: bn18(node.amount),\n        data: node.data\n      }),\n      sender: new Address2(node.sender),\n      recipient: new Address2(node.recipient),\n      nonce: node.nonce,\n      amount: bn18(node.amount),\n      data: InputMessageCoder2.decodeData(node.data),\n      daHeight: bn18(node.daHeight)\n    }));\n    return {\n      messages,\n      pageInfo\n    };\n  }\n  /**\n   * Returns Message Proof for given transaction id and the message id from MessageOut receipt.\n   *\n   * @param transactionId - The transaction to get message from.\n   * @param messageId - The message id from MessageOut receipt.\n   * @param commitBlockId - The commit block id (optional).\n   * @param commitBlockHeight - The commit block height (optional).\n   * @returns A promise that resolves to the message proof.\n   */\n  async getMessageProof(transactionId, nonce, commitBlockId, commitBlockHeight) {\n    let inputObject = {\n      transactionId,\n      nonce\n    };\n    if (commitBlockId && commitBlockHeight) {\n      throw new FuelError19(\n        ErrorCode17.INVALID_INPUT_PARAMETERS,\n        \"commitBlockId and commitBlockHeight cannot be used together\"\n      );\n    }\n    if (commitBlockId) {\n      inputObject = {\n        ...inputObject,\n        commitBlockId\n      };\n    }\n    if (commitBlockHeight) {\n      inputObject = {\n        ...inputObject,\n        // Convert BN into a number string required on the query\n        // This should probably be fixed on the fuel client side\n        commitBlockHeight: commitBlockHeight.toNumber().toString()\n      };\n    }\n    const result = await this.operations.getMessageProof(inputObject);\n    const {\n      messageProof,\n      messageBlockHeader,\n      commitBlockHeader,\n      blockProof,\n      sender,\n      recipient,\n      amount,\n      data\n    } = result.messageProof;\n    return {\n      messageProof: {\n        proofIndex: bn18(messageProof.proofIndex),\n        proofSet: messageProof.proofSet\n      },\n      blockProof: {\n        proofIndex: bn18(blockProof.proofIndex),\n        proofSet: blockProof.proofSet\n      },\n      messageBlockHeader: {\n        id: messageBlockHeader.id,\n        daHeight: bn18(messageBlockHeader.daHeight),\n        transactionsCount: Number(messageBlockHeader.transactionsCount),\n        transactionsRoot: messageBlockHeader.transactionsRoot,\n        height: bn18(messageBlockHeader.height),\n        prevRoot: messageBlockHeader.prevRoot,\n        time: messageBlockHeader.time,\n        applicationHash: messageBlockHeader.applicationHash,\n        messageReceiptCount: Number(messageBlockHeader.messageReceiptCount),\n        messageOutboxRoot: messageBlockHeader.messageOutboxRoot,\n        consensusParametersVersion: Number(messageBlockHeader.consensusParametersVersion),\n        eventInboxRoot: messageBlockHeader.eventInboxRoot,\n        stateTransitionBytecodeVersion: Number(messageBlockHeader.stateTransitionBytecodeVersion)\n      },\n      commitBlockHeader: {\n        id: commitBlockHeader.id,\n        daHeight: bn18(commitBlockHeader.daHeight),\n        transactionsCount: Number(commitBlockHeader.transactionsCount),\n        transactionsRoot: commitBlockHeader.transactionsRoot,\n        height: bn18(commitBlockHeader.height),\n        prevRoot: commitBlockHeader.prevRoot,\n        time: commitBlockHeader.time,\n        applicationHash: commitBlockHeader.applicationHash,\n        messageReceiptCount: Number(commitBlockHeader.messageReceiptCount),\n        messageOutboxRoot: commitBlockHeader.messageOutboxRoot,\n        consensusParametersVersion: Number(commitBlockHeader.consensusParametersVersion),\n        eventInboxRoot: commitBlockHeader.eventInboxRoot,\n        stateTransitionBytecodeVersion: Number(commitBlockHeader.stateTransitionBytecodeVersion)\n      },\n      sender: new Address2(sender),\n      recipient: new Address2(recipient),\n      nonce,\n      amount: bn18(amount),\n      data\n    };\n  }\n  /**\n   * Get the latest gas price from the node.\n   *\n   * @returns A promise that resolves to the latest gas price.\n   */\n  async getLatestGasPrice() {\n    const { latestGasPrice } = await this.operations.getLatestGasPrice();\n    return bn18(latestGasPrice.gasPrice);\n  }\n  /**\n   * Returns the estimate gas price for the given block horizon.\n   *\n   * @param blockHorizon - The block horizon to estimate gas price for.\n   * @returns A promise that resolves to the estimated gas price.\n   */\n  async estimateGasPrice(blockHorizon) {\n    const { estimateGasPrice } = await this.operations.estimateGasPrice({\n      blockHorizon: String(blockHorizon)\n    });\n    return bn18(estimateGasPrice.gasPrice);\n  }\n  /**\n   * Returns Message Proof for given transaction id and the message id from MessageOut receipt.\n   *\n   * @param nonce - The nonce of the message to get status from.\n   * @returns A promise that resolves to the message status\n   */\n  async getMessageStatus(nonce) {\n    const result = await this.operations.getMessageStatus({ nonce });\n    return result.messageStatus;\n  }\n  /**\n   * Lets you produce blocks with custom timestamps and the block number of the last block produced.\n   *\n   * @param amount - The amount of blocks to produce.\n   * @param startTime - The UNIX timestamp (milliseconds) to set for the first produced block (optional).\n   * @returns A promise that resolves to the block number of the last produced block.\n   */\n  async produceBlocks(amount, startTime) {\n    const { produceBlocks: latestBlockHeight } = await this.operations.produceBlocks({\n      blocksToProduce: bn18(amount).toString(10),\n      startTimestamp: startTime ? DateTime2.fromUnixMilliseconds(startTime).toTai64() : void 0\n    });\n    return bn18(latestBlockHeight);\n  }\n  /**\n   * Check if the given ID is an account.\n   *\n   * @param id - The ID to check.\n   * @returns A promise that resolves to the result of the check.\n   */\n  async isUserAccount(id) {\n    const type = await this.getAddressType(id);\n    return type === \"Account\";\n  }\n  /**\n   * Determines the type of address based on the provided ID.\n   *\n   * @param id - The ID to be checked.\n   * @returns A promise that resolves to a string indicating the type of address.\n   */\n  async getAddressType(id) {\n    const { contract, blob, transaction } = await this.operations.isUserAccount({\n      blobId: id,\n      contractId: id,\n      transactionId: id\n    });\n    if (contract) {\n      return \"Contract\";\n    }\n    if (blob) {\n      return \"Blob\";\n    }\n    if (transaction) {\n      return \"Transaction\";\n    }\n    try {\n      const asset = await this.getAssetDetails(id);\n      if (asset) {\n        return \"Asset\";\n      }\n    } catch (e) {\n    }\n    return \"Account\";\n  }\n  /**\n   * Get the transaction response for the given transaction ID.\n   *\n   * @param transactionId - The transaction ID to get the response for.\n   * @returns A promise that resolves to the transaction response.\n   */\n  async getTransactionResponse(transactionId) {\n    const chainId = await this.getChainId();\n    return new TransactionResponse(transactionId, this, chainId);\n  }\n  /**\n   * Returns Message for given nonce.\n   *\n   * @param nonce - The nonce of the message to retrieve.\n   * @returns A promise that resolves to the Message object or null.\n   */\n  async getMessageByNonce(nonce) {\n    const { message: rawMessage } = await this.operations.getMessageByNonce({ nonce });\n    if (!rawMessage) {\n      return null;\n    }\n    const message = {\n      messageId: InputMessageCoder2.getMessageId({\n        sender: rawMessage.sender,\n        recipient: rawMessage.recipient,\n        nonce,\n        amount: bn18(rawMessage.amount),\n        data: rawMessage.data\n      }),\n      sender: new Address2(rawMessage.sender),\n      recipient: new Address2(rawMessage.recipient),\n      nonce,\n      amount: bn18(rawMessage.amount),\n      data: InputMessageCoder2.decodeData(rawMessage.data),\n      daHeight: bn18(rawMessage.daHeight)\n    };\n    return message;\n  }\n  /**\n   * Get the relayed transaction for the given transaction ID.\n   *\n   * @param relayedTransactionId - The relayed transaction ID to get the response for.\n   * @returns A promise that resolves to the relayed transaction.\n   */\n  async getRelayedTransactionStatus(relayedTransactionId) {\n    const { relayedTransactionStatus } = await this.operations.getRelayedTransactionStatus({\n      relayedTransactionId\n    });\n    if (!relayedTransactionStatus) {\n      return null;\n    }\n    return relayedTransactionStatus;\n  }\n  /**\n   * @hidden\n   */\n  extractDryRunError(transactionRequest, receipts, reason) {\n    let logs = [];\n    let groupedLogs = {};\n    let abis;\n    if (transactionRequest.type === TransactionType11.Script && transactionRequest.abis) {\n      ({ logs, groupedLogs } = getAllDecodedLogs({\n        receipts,\n        mainAbi: transactionRequest.abis.main,\n        externalAbis: transactionRequest.abis.otherContractsAbis\n      }));\n      abis = transactionRequest.abis;\n    }\n    return extractTxError({\n      logs,\n      groupedLogs,\n      receipts,\n      statusReason: reason,\n      abis\n    });\n  }\n  /**\n   * @hidden\n   */\n  async getNodeFeatures() {\n    const { indexation } = await this.getNode();\n    return {\n      assetMetadata: Boolean(indexation?.assetMetadata),\n      balancesPagination: Boolean(indexation?.balances),\n      coinsToSpend: Boolean(indexation?.coinsToSpend)\n    };\n  }\n  /**\n   * @hidden\n   */\n  parseEstimatePredicatesResponse(transactionRequest, { inputs }) {\n    if (inputs) {\n      inputs.forEach((input, i) => {\n        if (input && \"predicateGasUsed\" in input && bn18(input.predicateGasUsed).gt(0)) {\n          transactionRequest.inputs[i].predicateGasUsed = input.predicateGasUsed;\n        }\n      });\n    }\n    return transactionRequest;\n  }\n  /**\n   * @hidden\n   *\n   * This helper adjusts the resources to be excluded for a given set of addresses.\n   * Supporting multiple addresses is important because of the `assembleTx` method,\n   * which may be invoked with different addresses. It handles both messages and UTXOs,\n   * ensuring the total number of inputs does not exceed the maximum allowed by the chain's\n   * consensus parameters. The resources specified in the `resourcesIdsToIgnore` parameter have priority\n   * over those retrieved from the cache.\n   */\n  async adjustResourcesToIgnoreForAddresses(addresses, resourcesIdsToIgnore) {\n    const final = {\n      messages: resourcesIdsToIgnore?.messages?.map((nonce) => hexlify17(nonce)) || [],\n      utxos: resourcesIdsToIgnore?.utxos?.map((id) => hexlify17(id)) || []\n    };\n    if (this.cache) {\n      const cache2 = this.cache;\n      const allCached = addresses.map((address) => cache2.getActiveData(address));\n      const {\n        consensusParameters: {\n          txParameters: { maxInputs: maxInputsBn }\n        }\n      } = await this.getChain();\n      const maxInputs = maxInputsBn.toNumber();\n      for (let i = 0; i < allCached.length; i++) {\n        let total = final.utxos.length + final.messages.length;\n        if (total >= maxInputs) {\n          break;\n        }\n        final.utxos = [...final.utxos, ...allCached[i].utxos.slice(0, maxInputs - total)];\n        total = final.utxos.length + final.messages.length;\n        if (total >= maxInputs) {\n          break;\n        }\n        final.messages = [...final.messages, ...allCached[i].messages.slice(0, maxInputs - total)];\n      }\n    }\n    return final;\n  }\n};\n\n// src/providers/transaction-summary/get-transaction-summary.ts\nimport { ErrorCode as ErrorCode18, FuelError as FuelError20 } from \"@fuel-ts/errors\";\nimport { bn as bn19 } from \"@fuel-ts/math\";\nimport { TransactionCoder as TransactionCoder8 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify14 } from \"@fuel-ts/utils\";\nasync function getTransactionSummary(params) {\n  const { id, provider, abiMap } = params;\n  const { transaction: gqlTransaction } = await provider.operations.getTransactionWithReceipts({\n    transactionId: id\n  });\n  if (!gqlTransaction) {\n    throw new FuelError20(\n      ErrorCode18.TRANSACTION_NOT_FOUND,\n      `Transaction not found for given id: ${id}.`\n    );\n  }\n  const [decodedTransaction] = new TransactionCoder8().decode(\n    arrayify14(gqlTransaction.rawPayload),\n    0\n  );\n  let txReceipts = [];\n  if (gqlTransaction?.status && \"receipts\" in gqlTransaction.status) {\n    txReceipts = gqlTransaction.status.receipts;\n  }\n  const receipts = txReceipts.map(deserializeReceipt);\n  const {\n    consensusParameters: {\n      feeParameters: { gasPerByte, gasPriceFactor },\n      txParameters: { maxInputs, maxGasPerTx },\n      gasCosts\n    }\n  } = await provider.getChain();\n  const totalFee = getTotalFeeFromStatus(gqlTransaction.status);\n  const gasPrice = totalFee ? bn19(0) : await provider.getLatestGasPrice();\n  const baseAssetId = await provider.getBaseAssetId();\n  const transactionInfo = assembleTransactionSummary({\n    id: gqlTransaction.id,\n    receipts,\n    transaction: decodedTransaction,\n    transactionBytes: arrayify14(gqlTransaction.rawPayload),\n    gqlTransactionStatus: gqlTransaction.status,\n    gasPerByte: bn19(gasPerByte),\n    gasPriceFactor: bn19(gasPriceFactor),\n    abiMap,\n    maxInputs,\n    gasCosts,\n    maxGasPerTx,\n    gasPrice,\n    baseAssetId\n  });\n  return {\n    ...transactionInfo\n  };\n}\n__name(getTransactionSummary, \"getTransactionSummary\");\nasync function getTransactionSummaryFromRequest(params) {\n  const { provider, transactionRequest, abiMap } = params;\n  const { receipts } = await provider.dryRun(transactionRequest);\n  const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = await provider.getGasConfig();\n  const maxInputs = (await provider.getChain()).consensusParameters.txParameters.maxInputs;\n  const transaction = transactionRequest.toTransaction();\n  const transactionBytes = transactionRequest.toTransactionBytes();\n  const gasPrice = await provider.getLatestGasPrice();\n  const baseAssetId = await provider.getBaseAssetId();\n  const transactionSummary = assembleTransactionSummary({\n    id: transactionRequest.getTransactionId(await provider.getChainId()),\n    receipts,\n    transaction,\n    transactionBytes,\n    abiMap,\n    gasPerByte,\n    gasPriceFactor,\n    maxInputs,\n    gasCosts,\n    maxGasPerTx,\n    gasPrice,\n    baseAssetId\n  });\n  return transactionSummary;\n}\n__name(getTransactionSummaryFromRequest, \"getTransactionSummaryFromRequest\");\nasync function getTransactionsSummaries(params) {\n  const { filters, provider, abiMap } = params;\n  const { owner, ...inputArgs } = filters;\n  const validPaginationParams = validatePaginationArgs({\n    inputArgs,\n    paginationLimit: TRANSACTIONS_PAGE_SIZE_LIMIT\n  });\n  const { transactionsByOwner } = await provider.operations.getTransactionsByOwner({\n    ...validPaginationParams,\n    owner\n  });\n  const { edges, pageInfo } = transactionsByOwner;\n  const {\n    consensusParameters: {\n      feeParameters: { gasPerByte, gasPriceFactor },\n      txParameters: { maxInputs, maxGasPerTx },\n      gasCosts\n    }\n  } = await provider.getChain();\n  const gasPrice = await provider.getLatestGasPrice();\n  const baseAssetId = await provider.getBaseAssetId();\n  const transactions = edges.map((edge) => {\n    const { node: gqlTransaction } = edge;\n    const { id, rawPayload, status } = gqlTransaction;\n    const [decodedTransaction] = new TransactionCoder8().decode(arrayify14(rawPayload), 0);\n    let txReceipts = [];\n    if (gqlTransaction?.status && \"receipts\" in gqlTransaction.status) {\n      txReceipts = gqlTransaction.status.receipts;\n    }\n    const receipts = txReceipts.map(deserializeReceipt);\n    const transactionSummary = assembleTransactionSummary({\n      id,\n      receipts,\n      transaction: decodedTransaction,\n      transactionBytes: arrayify14(rawPayload),\n      gqlTransactionStatus: status,\n      abiMap,\n      gasPerByte,\n      gasPriceFactor,\n      maxInputs,\n      gasCosts,\n      maxGasPerTx,\n      gasPrice,\n      baseAssetId\n    });\n    const output = {\n      ...transactionSummary\n    };\n    return output;\n  });\n  return {\n    transactions,\n    pageInfo\n  };\n}\n__name(getTransactionsSummaries, \"getTransactionsSummaries\");\n\n// src/providers/transaction-summary/assemble-transaction-summary-from-serialized.ts\nimport { bn as bn20 } from \"@fuel-ts/math\";\nimport { TransactionCoder as TransactionCoder9 } from \"@fuel-ts/transactions\";\nimport { arrayify as arrayify15 } from \"@fuel-ts/utils\";\nvar assembleTransactionSummaryFromJson = /* @__PURE__ */ __name(async (opts) => {\n  const { provider, transactionSummary } = opts;\n  const { id, transactionBytes, gasPrice, receipts } = transactionSummary;\n  const {\n    consensusParameters: {\n      baseAssetId,\n      txParameters: { maxInputs, maxGasPerTx },\n      feeParameters: { gasPriceFactor, gasPerByte },\n      gasCosts\n    }\n  } = await provider.getChain();\n  const deserializedTransactionBytes = arrayify15(transactionBytes);\n  const [transaction] = new TransactionCoder9().decode(deserializedTransactionBytes, 0);\n  return assembleTransactionSummary({\n    id,\n    transaction,\n    transactionBytes: deserializedTransactionBytes,\n    receipts: receipts.map(deserializeReceipt),\n    gasPrice: bn20(gasPrice),\n    // From chain\n    baseAssetId,\n    maxInputs,\n    gasCosts,\n    maxGasPerTx,\n    gasPerByte,\n    gasPriceFactor\n  });\n}, \"assembleTransactionSummaryFromJson\");\n\n// src/providers/utils/transaction-response-serialization.ts\nvar serializeTransactionResponseJson = /* @__PURE__ */ __name(async (response) => {\n  const { id, status, abis, request: request2, provider, gqlTransaction, preConfirmationStatus } = response;\n  return {\n    id,\n    status,\n    abis,\n    requestJson: request2 ? JSON.stringify(request2.toJSON()) : void 0,\n    providerUrl: provider.url,\n    providerCache: await serializeProviderCache(provider),\n    gqlTransaction,\n    preConfirmationStatus\n  };\n}, \"serializeTransactionResponseJson\");\nvar deserializeTransactionResponseJson = /* @__PURE__ */ __name((json) => {\n  const {\n    id,\n    abis,\n    status,\n    providerUrl,\n    requestJson,\n    providerCache,\n    gqlTransaction,\n    preConfirmationStatus\n  } = json;\n  const provider = new Provider(providerUrl, { cache: providerCache });\n  const { chainId } = providerCache.chain.consensusParameters;\n  const response = new TransactionResponse(id, provider, Number(chainId), abis);\n  if (requestJson) {\n    response.request = transactionRequestify(JSON.parse(requestJson));\n  }\n  response.status = status;\n  response.gqlTransaction = gqlTransaction;\n  response.preConfirmationStatus = preConfirmationStatus;\n  return response;\n}, \"deserializeTransactionResponseJson\");\n\n// src/types.ts\nvar AbstractAccount = class {\n  static {\n    __name(this, \"AbstractAccount\");\n  }\n};\n\n// src/utils/formatTransferToContractScriptData.ts\nimport { ASSET_ID_LEN, BigNumberCoder as BigNumberCoder3, CONTRACT_ID_LEN, WORD_SIZE } from \"@fuel-ts/abi-coder\";\nimport { Address as Address3 } from \"@fuel-ts/address\";\nimport { arrayify as arrayify16, concat as concat4 } from \"@fuel-ts/utils\";\nimport * as asm from \"@fuels/vm-asm\";\nvar formatTransferToContractScriptData = /* @__PURE__ */ __name((transferParams) => {\n  const numberCoder = new BigNumberCoder3(\"u64\");\n  return transferParams.reduce((acc, transferParam) => {\n    const { assetId, amount, contractId } = transferParam;\n    const encoded = numberCoder.encode(amount);\n    const scriptData = concat4([new Address3(contractId).toBytes(), encoded, arrayify16(assetId)]);\n    return concat4([acc, scriptData]);\n  }, new Uint8Array());\n}, \"formatTransferToContractScriptData\");\nvar assembleTransferToContractScript = /* @__PURE__ */ __name(async (transferParams) => {\n  const scriptData = formatTransferToContractScriptData(transferParams);\n  await asm.initWasm();\n  let script = new Uint8Array();\n  transferParams.forEach((_, i) => {\n    const offset = (CONTRACT_ID_LEN + WORD_SIZE + ASSET_ID_LEN) * i;\n    script = concat4([\n      script,\n      // Load ScriptData into register 0x10.\n      asm.gtf(16, 0, asm.GTFArgs.ScriptData).to_bytes(),\n      // Add the offset to 0x10 so it will point to the current contract ID, store in 0x11.\n      asm.addi(17, 16, offset).to_bytes(),\n      // Add CONTRACT_ID_LEN to 0x11 to point to the amount in the ScriptData, store in 0x12.\n      asm.addi(18, 17, CONTRACT_ID_LEN).to_bytes(),\n      // Load word to the amount at 0x12 into register 0x13.\n      asm.lw(19, 18, 0).to_bytes(),\n      // Add WORD_SIZE to 0x12 to point to the asset ID in the ScriptData, store in 0x14.\n      asm.addi(20, 18, WORD_SIZE).to_bytes(),\n      // Perform the transfer using contract ID in 0x11, amount in 0x13, and asset ID in 0x14.\n      asm.tr(17, 19, 20).to_bytes()\n    ]);\n  });\n  script = concat4([script, asm.ret(1).to_bytes()]);\n  return { script, scriptData };\n}, \"assembleTransferToContractScript\");\n\n// src/utils/split-coins-into-batches.ts\nvar splitCoinsIntoBatches = /* @__PURE__ */ __name((coins, maxBatchLength) => {\n  const batchesNum = Math.ceil(coins.length / maxBatchLength);\n  const batches = [];\n  for (let i = 0; i < batchesNum; i += 1) {\n    const batchStart = i * maxBatchLength;\n    const batchEnd = (i + 1) * maxBatchLength;\n    batches.push(coins.slice(batchStart, batchEnd));\n  }\n  return batches;\n}, \"splitCoinsIntoBatches\");\n\n// src/account.ts\nvar MAX_FUNDING_ATTEMPTS = 5;\nvar Account = class extends AbstractAccount {\n  static {\n    __name(this, \"Account\");\n  }\n  /**\n   * The address associated with the account.\n   */\n  address;\n  /**\n   * The provider used to interact with the network.\n   */\n  _provider;\n  /**\n   * The connector for use with external wallets\n   */\n  _connector;\n  /**\n   * Creates a new Account instance.\n   *\n   * @param address - The address of the account.\n   * @param provider - A Provider instance  (optional).\n   * @param connector - A FuelConnector instance (optional).\n   */\n  constructor(address, provider, connector) {\n    super();\n    this._provider = provider;\n    this._connector = connector;\n    this.address = new Address4(address);\n  }\n  /**\n   * The provider used to interact with the network.\n   *\n   * @returns A Provider instance.\n   *\n   * @throws `FuelError` if the provider is not set.\n   */\n  get provider() {\n    if (!this._provider) {\n      throw new FuelError21(ErrorCode19.MISSING_PROVIDER, \"Provider not set\");\n    }\n    return this._provider;\n  }\n  /**\n   * Sets the provider for the account.\n   *\n   * @param provider - A Provider instance.\n   */\n  set provider(provider) {\n    this._provider = provider;\n  }\n  /**\n   * Changes the provider connection for the account.\n   *\n   * @param provider - A Provider instance.\n   * @returns The updated Provider instance.\n   */\n  connect(provider) {\n    this._provider = provider;\n    return this.provider;\n  }\n  /**\n   * Retrieves resources satisfying the spend query for the account.\n   *\n   * @param quantities - Quantities of resources to be obtained.\n   * @param resourcesIdsToIgnore - IDs of resources to be excluded from the query (optional).\n   * @returns A promise that resolves to an array of Resources.\n   */\n  async getResourcesToSpend(quantities, resourcesIdsToIgnore) {\n    return this.provider.getResourcesToSpend(this.address, quantities, resourcesIdsToIgnore);\n  }\n  /**\n   * Retrieves coins owned by the account.\n   *\n   * @param assetId - The asset ID of the coins to retrieve (optional).\n   * @returns A promise that resolves to an array of Coins.\n   */\n  async getCoins(assetId, paginationArgs) {\n    return this.provider.getCoins(this.address, assetId, paginationArgs);\n  }\n  /**\n   * Retrieves messages owned by the account.\n   *\n   * @returns A promise that resolves to an array of Messages.\n   */\n  async getMessages(paginationArgs) {\n    return this.provider.getMessages(this.address, paginationArgs);\n  }\n  /**\n   * Retrieves the balance of the account for the given asset.\n   *\n   * @param assetId - The asset ID to check the balance for (optional).\n   * @returns A promise that resolves to the balance amount.\n   */\n  async getBalance(assetId) {\n    const assetIdToFetch = assetId ?? await this.provider.getBaseAssetId();\n    const amount = await this.provider.getBalance(this.address, assetIdToFetch);\n    return amount;\n  }\n  /**\n   * Retrieves all the balances for the account.\n   *\n   * @returns A promise that resolves to an array of Coins and their quantities.\n   */\n  async getBalances() {\n    return this.provider.getBalances(this.address);\n  }\n  /**\n   * Funds a transaction request by adding the necessary resources.\n   *\n   * @typeParam T - The type of the TransactionRequest.\n   * @param request - The transaction request to fund.\n   * @param params - The estimated transaction parameters.\n   * @returns A promise that resolves to the funded transaction request.\n   *\n   * @deprecated Use provider.assembleTx instead\n   * Check the migration guide https://docs.fuel.network/docs/fuels-ts/transactions/assemble-tx-migration-guide/ for more information.\n   */\n  async fund(request2, params) {\n    const {\n      addedSignatures,\n      estimatedPredicates,\n      requiredQuantities,\n      updateMaxFee,\n      gasPrice,\n      transactionSummary\n    } = params;\n    const chainId = await this.provider.getChainId();\n    const fee = request2.maxFee;\n    const baseAssetId = await this.provider.getBaseAssetId();\n    const requiredInBaseAsset = requiredQuantities.find((quantity) => quantity.assetId === baseAssetId)?.amount || bn21(0);\n    const requiredQuantitiesWithFee = addAmountToCoinQuantities({\n      amount: bn21(fee),\n      assetId: baseAssetId,\n      coinQuantities: requiredQuantities\n    });\n    const quantitiesDict = {};\n    requiredQuantitiesWithFee.forEach(({ amount, assetId }) => {\n      quantitiesDict[assetId] = {\n        required: amount,\n        owned: bn21(0)\n      };\n    });\n    request2.inputs.filter(isRequestInputResource).forEach((input) => {\n      const isCoin2 = isRequestInputCoin(input);\n      const assetId = isCoin2 ? String(input.assetId) : baseAssetId;\n      if (quantitiesDict[assetId]) {\n        quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(input.amount);\n      }\n    });\n    let missingQuantities = [];\n    Object.entries(quantitiesDict).forEach(([assetId, { owned, required }]) => {\n      if (owned.lt(required)) {\n        missingQuantities.push({\n          assetId,\n          amount: required.sub(owned)\n        });\n      }\n    });\n    let needsToBeFunded = missingQuantities.length > 0;\n    let fundingAttempts = 0;\n    while (needsToBeFunded && fundingAttempts < MAX_FUNDING_ATTEMPTS) {\n      const resources = await this.getResourcesToSpend(\n        missingQuantities,\n        cacheRequestInputsResourcesFromOwner(request2.inputs, this.address)\n      );\n      request2.addResources(resources);\n      request2.updatePredicateGasUsed(estimatedPredicates);\n      const requestToReestimate2 = clone9(request2);\n      if (addedSignatures) {\n        Array.from({ length: addedSignatures }).forEach(\n          () => requestToReestimate2.addEmptyWitness()\n        );\n      }\n      if (!updateMaxFee) {\n        needsToBeFunded = false;\n        break;\n      }\n      const { maxFee: newFee } = await this.provider.estimateTxGasAndFee({\n        transactionRequest: requestToReestimate2,\n        gasPrice\n      });\n      const totalBaseAssetOnInputs = getAssetAmountInRequestInputs(\n        request2.inputs.filter(isRequestInputResource),\n        baseAssetId,\n        baseAssetId\n      );\n      const totalBaseAssetRequiredWithFee = requiredInBaseAsset.add(newFee);\n      if (totalBaseAssetOnInputs.gt(totalBaseAssetRequiredWithFee)) {\n        needsToBeFunded = false;\n      } else {\n        missingQuantities = [\n          {\n            amount: totalBaseAssetRequiredWithFee.sub(totalBaseAssetOnInputs),\n            assetId: baseAssetId\n          }\n        ];\n      }\n      fundingAttempts += 1;\n    }\n    if (needsToBeFunded) {\n      throw new FuelError21(\n        ErrorCode19.INSUFFICIENT_FUNDS_OR_MAX_COINS,\n        `The account ${this.address} does not have enough base asset funds to cover the transaction execution.`\n      );\n    }\n    request2.updateState(chainId, \"funded\", transactionSummary);\n    await this.provider.validateTransaction(request2);\n    request2.updatePredicateGasUsed(estimatedPredicates);\n    const requestToReestimate = clone9(request2);\n    if (addedSignatures) {\n      Array.from({ length: addedSignatures }).forEach(() => requestToReestimate.addEmptyWitness());\n    }\n    if (!updateMaxFee) {\n      return request2;\n    }\n    const { maxFee } = await this.provider.estimateTxGasAndFee({\n      transactionRequest: requestToReestimate,\n      gasPrice\n    });\n    request2.maxFee = maxFee;\n    return request2;\n  }\n  /**\n   * A helper that creates a transfer transaction request and returns it.\n   *\n   * @param destination - The address of the destination.\n   * @param amount - The amount of coins to transfer.\n   * @param assetId - The asset ID of the coins to transfer (optional).\n   * @param txParams - The transaction parameters (optional).\n   * @returns A promise that resolves to the prepared transaction request.\n   */\n  async createTransfer(destination, amount, assetId, txParams = {}) {\n    let request2 = new ScriptTransactionRequest(txParams);\n    request2 = this.addTransfer(request2, {\n      destination,\n      amount,\n      assetId: assetId || await this.provider.getBaseAssetId()\n    });\n    const { gasPrice, transactionRequest } = await this.assembleTx(request2);\n    request2 = await setAndValidateGasAndFeeForAssembledTx({\n      gasPrice,\n      provider: this.provider,\n      transactionRequest,\n      setGasLimit: txParams?.gasLimit,\n      setMaxFee: txParams?.maxFee\n    });\n    return request2;\n  }\n  /**\n   * Transfers coins to a destination address.\n   *\n   * @param destination - The address of the destination.\n   * @param amount - The amount of coins to transfer.\n   * @param assetId - The asset ID of the coins to transfer (optional).\n   * @param txParams - The transaction parameters (optional).\n   * @returns A promise that resolves to the transaction response.\n   */\n  async transfer(destination, amount, assetId, txParams = {}) {\n    const request2 = await this.createTransfer(destination, amount, assetId, txParams);\n    return this.sendTransaction(request2, { estimateTxDependencies: false });\n  }\n  /**\n   * Transfers multiple amounts of a token to multiple recipients.\n   *\n   * @param transferParams - An array of `TransferParams` objects representing the transfers to be made.\n   * @param txParams - Optional transaction parameters.\n   * @returns A promise that resolves to a `TransactionResponse` object representing the transaction result.\n   */\n  async batchTransfer(transferParams, txParams = {}) {\n    let request2 = new ScriptTransactionRequest(txParams);\n    request2 = this.addBatchTransfer(request2, transferParams);\n    const { gasPrice, transactionRequest } = await this.assembleTx(request2);\n    request2 = await setAndValidateGasAndFeeForAssembledTx({\n      gasPrice,\n      provider: this.provider,\n      transactionRequest,\n      setGasLimit: txParams?.gasLimit,\n      setMaxFee: txParams?.maxFee\n    });\n    return this.sendTransaction(request2, { estimateTxDependencies: false });\n  }\n  /**\n   * Adds a transfer to the given transaction request.\n   *\n   * @param request - The script transaction request to add transfers to.\n   * @param transferParams - The object representing the transfer to be made.\n   * @returns The updated transaction request with the added transfer.\n   */\n  addTransfer(request2, transferParams) {\n    const { destination, amount, assetId } = transferParams;\n    this.validateTransferAmount(amount);\n    request2.addCoinOutput(new Address4(destination), amount, assetId);\n    return request2;\n  }\n  /**\n   * Adds multiple transfers to a script transaction request.\n   *\n   * @param request - The script transaction request to add transfers to.\n   * @param transferParams - An array of `TransferParams` objects representing the transfers to be made.\n   * @returns The updated script transaction request.\n   */\n  addBatchTransfer(request2, transferParams) {\n    transferParams.forEach(({ destination, amount, assetId }) => {\n      this.addTransfer(request2, {\n        destination,\n        amount,\n        assetId\n      });\n    });\n    return request2;\n  }\n  /**\n   * Transfers coins to a contract address.\n   *\n   * @param contractId - The address of the contract.\n   * @param amount - The amount of coins to transfer.\n   * @param assetId - The asset ID of the coins to transfer (optional).\n   * @param txParams - The transaction parameters (optional).\n   * @returns A promise that resolves to the transaction response.\n   */\n  async transferToContract(contractId, amount, assetId, txParams = {}) {\n    return this.batchTransferToContracts([{ amount, assetId, contractId }], txParams);\n  }\n  async batchTransferToContracts(contractTransferParams, txParams = {}) {\n    let request2 = new ScriptTransactionRequest({\n      ...txParams\n    });\n    const quantities = [];\n    const defaultAssetId = await this.provider.getBaseAssetId();\n    const transferParams = contractTransferParams.map((transferParam) => {\n      const amount = bn21(transferParam.amount);\n      const contractAddress = new Address4(transferParam.contractId);\n      const assetId = transferParam.assetId ? hexlify18(transferParam.assetId) : defaultAssetId;\n      if (amount.lte(0)) {\n        throw new FuelError21(\n          ErrorCode19.INVALID_TRANSFER_AMOUNT,\n          \"Transfer amount must be a positive number.\"\n        );\n      }\n      request2.addContractInputAndOutput(contractAddress);\n      quantities.push({ amount, assetId });\n      return {\n        amount,\n        contractId: contractAddress.toB256(),\n        assetId\n      };\n    });\n    const { script, scriptData } = await assembleTransferToContractScript(transferParams);\n    request2.script = script;\n    request2.scriptData = scriptData;\n    const { gasPrice, transactionRequest } = await this.assembleTx(request2, quantities);\n    request2 = await setAndValidateGasAndFeeForAssembledTx({\n      gasPrice,\n      provider: this.provider,\n      transactionRequest,\n      setGasLimit: txParams?.gasLimit,\n      setMaxFee: txParams?.maxFee\n    });\n    return this.sendTransaction(request2);\n  }\n  /**\n   * Withdraws an amount of the base asset to the base chain.\n   *\n   * @param recipient - Address of the recipient on the base chain.\n   * @param amount - Amount of base asset.\n   * @param txParams - The transaction parameters (optional).\n   * @returns A promise that resolves to the transaction response.\n   */\n  async withdrawToBaseLayer(recipient, amount, txParams = {}) {\n    const recipientAddress = new Address4(recipient);\n    const recipientDataArray = arrayify17(\n      \"0x\".concat(recipientAddress.toHexString().substring(2).padStart(64, \"0\"))\n    );\n    const amountDataArray = arrayify17(\n      \"0x\".concat(bn21(amount).toHex().substring(2).padStart(16, \"0\"))\n    );\n    const script = new Uint8Array([\n      ...arrayify17(withdrawScript.bytes),\n      ...recipientDataArray,\n      ...amountDataArray\n    ]);\n    const params = { script, ...txParams };\n    const baseAssetId = await this.provider.getBaseAssetId();\n    let request2 = new ScriptTransactionRequest(params);\n    const quantities = [{ amount: bn21(amount), assetId: baseAssetId }];\n    const { gasPrice, transactionRequest } = await this.assembleTx(request2, quantities);\n    request2 = await setAndValidateGasAndFeeForAssembledTx({\n      gasPrice,\n      provider: this.provider,\n      transactionRequest,\n      setGasLimit: txParams?.gasLimit,\n      setMaxFee: txParams?.maxFee\n    });\n    return this.sendTransaction(request2);\n  }\n  /**\n   * Consolidates base asset UTXOs into fewer, larger ones.\n   *\n   * Retrieves a limited number of base asset coins (as defined by `Provider.RESOURCES_PAGE_SIZE_LIMIT`),\n   * assembles consolidation transactions, and submits them to the network.\n   *\n   * Note: This method currently supports only the base asset.\n   *\n   * @param params - The parameters for coin consolidation, including the asset ID, mode, and output number.\n   * @returns A promise that resolves to the response of the submitted transactions.\n   * @throws Will throw an error if the asset is not a base asset as non-base asset consolidation is not implemented.\n   */\n  async consolidateCoins(params) {\n    const { assetId } = params;\n    const { coins } = await this.getCoins(assetId);\n    const baseAssetId = await this.provider.getBaseAssetId();\n    const isBaseAsset = baseAssetId === assetId;\n    let submitAll;\n    const consolidationParams = {\n      coins,\n      mode: params.mode,\n      outputNum: params.outputNum\n    };\n    if (isBaseAsset) {\n      ({ submitAll } = await this.assembleBaseAssetConsolidationTxs(consolidationParams));\n    } else {\n      throw new FuelError21(\n        ErrorCode19.UNSUPPORTED_FEATURE,\n        \"Consolidation for non-base assets is not supported yet.\"\n      );\n    }\n    return submitAll();\n  }\n  /**\n   * Assembles transactions for consolidating base asset coins into fewer UTXOs.\n   *\n   * This method splits the provided coins into batches and creates transaction requests\n   * to consolidate them. It calculates the necessary fee and sets up the transactions\n   * to be submitted either in parallel (default) or sequentially.\n   *\n   * @param params - The parameters for assembling base asset consolidation transactions.\n   *\n   * @returns An object containing the assembled transactions, the total fee cost, and a callback to submit all transactions.\n   */\n  async assembleBaseAssetConsolidationTxs(params) {\n    const { coins, mode = \"parallel\", outputNum = 1 } = params;\n    const baseAssetId = await this.provider.getBaseAssetId();\n    this.validateConsolidationTxsCoins(coins, baseAssetId);\n    const chainInfo = await this.provider.getChain();\n    const maxInputsNumber = chainInfo.consensusParameters.txParameters.maxInputs.toNumber();\n    let totalFeeCost = bn21(0);\n    const txs = [];\n    const coinsBatches = splitCoinsIntoBatches(coins, maxInputsNumber);\n    const gasPrice = await this.provider.estimateGasPrice(10);\n    const consolidateMoreThanOneCoin = outputNum > 1;\n    coinsBatches.filter((batch) => batch.length > 1).forEach((coinBatch) => {\n      const request2 = new ScriptTransactionRequest({\n        script: \"0x\"\n      });\n      request2.addResources(coinBatch);\n      if (consolidateMoreThanOneCoin) {\n        Array.from({ length: outputNum - 1 }).forEach(() => {\n          request2.addCoinOutput(this.address, 0, baseAssetId);\n        });\n      }\n      const minGas = request2.calculateMinGas(chainInfo);\n      const fee = calculateGasFee({\n        gasPrice,\n        gas: minGas,\n        priceFactor: chainInfo.consensusParameters.feeParameters.gasPriceFactor,\n        tip: request2.tip\n      });\n      request2.maxFee = fee;\n      if (consolidateMoreThanOneCoin) {\n        const total = request2.inputs.filter(isRequestInputCoin).reduce((acc, input) => acc.add(input.amount), bn21(0));\n        const amountPerNewUtxo = total.div(outputNum + 1);\n        request2.outputs.forEach((output) => {\n          if (output.type === OutputType9.Coin) {\n            output.amount = amountPerNewUtxo;\n          }\n        });\n      }\n      totalFeeCost = totalFeeCost.add(fee);\n      txs.push(request2);\n    });\n    const submitAll = this.prepareSubmitAll({ txs, mode });\n    return { txs, totalFeeCost, submitAll };\n  }\n  /**\n   * Prepares a function to submit all transactions either sequentially or in parallel.\n   *\n   * @param params - The parameters for preparing the submitAll callback.\n   *\n   * @returns A callback that, when called, submits all transactions and returns their results and any errors encountered.\n   */\n  prepareSubmitAll = /* @__PURE__ */ __name((params) => {\n    const { txs, mode = \"sequential\" } = params;\n    return async () => {\n      const txResponses = [];\n      const errors = [];\n      if (mode === \"sequential\") {\n        for (const tx of txs) {\n          try {\n            const submit = await this.sendTransaction(tx);\n            const response = await submit.waitForResult();\n            txResponses.push(response);\n          } catch (error) {\n            errors.push(error);\n          }\n        }\n      } else {\n        const results = await Promise.allSettled(\n          txs.map(async (tx) => {\n            const submit = await this.sendTransaction(tx);\n            return submit.waitForResult();\n          })\n        );\n        results.forEach((result) => {\n          if (result.status === \"fulfilled\") {\n            txResponses.push(result.value);\n          } else {\n            errors.push(result.reason);\n          }\n        });\n      }\n      return { txResponses, errors };\n    };\n  }, \"prepareSubmitAll\");\n  /**\n   * Returns a transaction cost to enable user\n   * to set gasLimit and also reserve balance amounts\n   * on the transaction.\n   *\n   * @param transactionRequestLike - The transaction request object.\n   * @param transactionCostParams - The transaction cost parameters (optional).\n   *\n   * @returns A promise that resolves to the transaction cost object.\n   *\n   * @deprecated Use provider.assembleTx instead\n   * Check the migration guide https://docs.fuel.network/docs/fuels-ts/transactions/assemble-tx-migration-guide/ for more information.\n   */\n  async getTransactionCost(transactionRequestLike, { signatureCallback, quantities = [], gasPrice } = {}) {\n    const txRequestClone = clone9(transactionRequestify(transactionRequestLike));\n    const baseAssetId = await this.provider.getBaseAssetId();\n    const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();\n    const requiredQuantities = mergeQuantities(coinOutputsQuantities, quantities);\n    const transactionFeeForDryRun = [{ assetId: baseAssetId, amount: bn21(\"100000000000000000\") }];\n    const findAssetInput = /* @__PURE__ */ __name((assetId) => txRequestClone.inputs.find((input) => {\n      if (input.type === InputType8.Coin) {\n        return input.assetId === assetId;\n      }\n      if (isRequestInputMessageWithoutData(input)) {\n        return baseAssetId === assetId;\n      }\n      return false;\n    }), \"findAssetInput\");\n    const updateAssetInput = /* @__PURE__ */ __name((assetId, quantity) => {\n      const assetInput = findAssetInput(assetId);\n      const usedQuantity = quantity;\n      if (assetInput && \"amount\" in assetInput) {\n        assetInput.amount = usedQuantity;\n      } else {\n        txRequestClone.addResources(\n          this.generateFakeResources([\n            {\n              amount: quantity,\n              assetId\n            }\n          ])\n        );\n      }\n    }, \"updateAssetInput\");\n    mergeQuantities(requiredQuantities, transactionFeeForDryRun).forEach(\n      ({ amount, assetId }) => updateAssetInput(assetId, amount)\n    );\n    const txCost = await this.provider.getTransactionCost(txRequestClone, {\n      signatureCallback,\n      gasPrice\n    });\n    return {\n      ...txCost,\n      requiredQuantities\n    };\n  }\n  /**\n   * Sign a message from the account via the connector.\n   *\n   * @param message - the message to sign.\n   * @returns a promise that resolves to the signature.\n   *\n   * @hidden\n   */\n  async signMessage(message) {\n    if (!this._connector) {\n      throw new FuelError21(ErrorCode19.MISSING_CONNECTOR, \"A connector is required to sign messages.\");\n    }\n    return this._connector.signMessage(this.address.toString(), message);\n  }\n  /**\n   * Signs a transaction from the account via the connector..\n   *\n   * @param transactionRequestLike - The transaction request to sign.\n   * @returns A promise that resolves to the signature of the transaction.\n   */\n  async signTransaction(transactionRequestLike, connectorOptions = {}) {\n    if (!this._connector) {\n      throw new FuelError21(\n        ErrorCode19.MISSING_CONNECTOR,\n        \"A connector is required to sign transactions.\"\n      );\n    }\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    const { transactionRequest: requestToSign, connectorsSendTxParams } = await this.setTransactionStateForConnectors({\n      transactionRequest,\n      connectorOptions\n    });\n    return this._connector.signTransaction(\n      this.address.toString(),\n      requestToSign,\n      connectorsSendTxParams\n    );\n  }\n  /**\n   * Sends a transaction to the network.\n   *\n   * @param transactionRequestLike - The transaction request to be sent.\n   * @param sendTransactionParams - The provider send transaction parameters (optional).\n   * @returns A promise that resolves to the transaction response.\n   */\n  async sendTransaction(transactionRequestLike, { estimateTxDependencies = true, ...connectorOptions } = {}) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    if (this._connector) {\n      const response = await this.setTransactionStateForConnectors({\n        transactionRequest,\n        connectorOptions\n      });\n      const transaction = await this._connector.sendTransaction(\n        this.address.toString(),\n        response.transactionRequest,\n        response.connectorsSendTxParams\n      );\n      return typeof transaction === \"string\" ? this.provider.getTransactionResponse(transaction) : transaction;\n    }\n    if (estimateTxDependencies) {\n      await this.provider.estimateTxDependencies(transactionRequest);\n    }\n    return this.provider.sendTransaction(transactionRequest, {\n      estimateTxDependencies: false\n    });\n  }\n  /**\n   * Simulates a transaction.\n   *\n   * @param transactionRequestLike - The transaction request to be simulated.\n   * @param estimateTxParams - The estimate transaction params (optional).\n   * @returns A promise that resolves to the call result.\n   */\n  async simulateTransaction(transactionRequestLike, { estimateTxDependencies = true } = {}) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    if (estimateTxDependencies) {\n      await this.provider.estimateTxDependencies(transactionRequest);\n    }\n    return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });\n  }\n  /**\n   * Generates an array of fake resources based on the provided coins.\n   *\n   * @param coins - An array of `FakeResources` objects representing the coins.\n   * @returns An array of `Resource` objects with generated properties.\n   */\n  generateFakeResources(coins) {\n    return coins.map((coin) => ({\n      id: hexlify18(randomBytes2(UTXO_ID_LEN3)),\n      owner: this.address,\n      blockCreated: bn21(1),\n      txCreatedIdx: bn21(1),\n      ...coin\n    }));\n  }\n  /** @hidden */\n  async prepareTransactionForSend(request2) {\n    const { transactionId } = request2.flag;\n    if (!isDefined4(transactionId)) {\n      return request2;\n    }\n    const chainId = await this.provider.getChainId();\n    const currentTransactionId = request2.getTransactionId(chainId);\n    if (transactionId !== currentTransactionId) {\n      request2.updateState(chainId);\n    }\n    return request2;\n  }\n  /** @hidden */\n  async prepareTransactionSummary(request2) {\n    const chainId = await this.provider.getChainId();\n    return isDefined4(request2.flag.summary) ? {\n      ...request2.flag.summary,\n      id: request2.getTransactionId(chainId),\n      transactionBytes: hexlify18(request2.toTransactionBytes())\n    } : void 0;\n  }\n  /** @hidden * */\n  async assembleTx(transactionRequest, quantities = []) {\n    const outputQuantities = transactionRequest.outputs.filter((o) => o.type === OutputType9.Coin).map(({ amount, assetId }) => ({ assetId: String(assetId), amount: bn21(amount) }));\n    transactionRequest.gasLimit = bn21(0);\n    transactionRequest.maxFee = bn21(0);\n    const { assembledRequest, gasPrice } = await this.provider.assembleTx({\n      request: transactionRequest,\n      accountCoinQuantities: mergeQuantities(outputQuantities, quantities),\n      feePayerAccount: this\n    });\n    return { transactionRequest: assembledRequest, gasPrice };\n  }\n  /** @hidden * */\n  validateTransferAmount(amount) {\n    if (bn21(amount).lte(0)) {\n      throw new FuelError21(\n        ErrorCode19.INVALID_TRANSFER_AMOUNT,\n        \"Transfer amount must be a positive number.\"\n      );\n    }\n  }\n  /** @hidden * */\n  async estimateAndFundTransaction(transactionRequest, txParams, costParams) {\n    let request2 = transactionRequest;\n    const txCost = await this.getTransactionCost(request2, costParams);\n    request2 = this.validateGasLimitAndMaxFee({\n      transactionRequest: request2,\n      gasUsed: txCost.gasUsed,\n      maxFee: txCost.maxFee,\n      txParams\n    });\n    request2 = await this.fund(request2, txCost);\n    return request2;\n  }\n  /** @hidden * */\n  validateGasLimitAndMaxFee({\n    gasUsed,\n    maxFee,\n    transactionRequest,\n    txParams: { gasLimit: setGasLimit, maxFee: setMaxFee }\n  }) {\n    const request2 = transactionRequestify(transactionRequest);\n    if (!isDefined4(setGasLimit)) {\n      request2.gasLimit = gasUsed;\n    } else if (gasUsed.gt(setGasLimit)) {\n      throw new FuelError21(\n        ErrorCode19.GAS_LIMIT_TOO_LOW,\n        `Gas limit '${setGasLimit}' is lower than the required: '${gasUsed}'.`\n      );\n    }\n    if (!isDefined4(setMaxFee)) {\n      request2.maxFee = maxFee;\n    } else if (maxFee.gt(setMaxFee)) {\n      throw new FuelError21(\n        ErrorCode19.MAX_FEE_TOO_LOW,\n        `Max fee '${setMaxFee}' is lower than the required: '${maxFee}'.`\n      );\n    }\n    return request2;\n  }\n  /** @hidden * */\n  validateConsolidationTxsCoins(coins, assetId) {\n    if (coins.length <= 1) {\n      throw new FuelError21(ErrorCode19.NO_COINS_TO_CONSOLIDATE, \"No coins to consolidate.\");\n    }\n    if (!coins.every((c) => c.assetId === assetId)) {\n      throw new FuelError21(\n        ErrorCode19.COINS_ASSET_ID_MISMATCH,\n        \"All coins to consolidate must be from the same asset id.\"\n      );\n    }\n  }\n  /** @hidden * */\n  async setTransactionStateForConnectors(params) {\n    const { transactionRequest: requestToPrepare, connectorOptions } = params;\n    const { onBeforeSend, skipCustomFee = false } = connectorOptions;\n    const transactionRequest = await this.prepareTransactionForSend(requestToPrepare);\n    const connectorsSendTxParams = {\n      onBeforeSend,\n      skipCustomFee,\n      provider: {\n        url: this.provider.url,\n        cache: await serializeProviderCache(this.provider)\n      },\n      transactionState: requestToPrepare.flag.state,\n      transactionSummary: await this.prepareTransactionSummary(requestToPrepare)\n    };\n    return { transactionRequest, connectorsSendTxParams };\n  }\n};\n\n// src/wallet/base-wallet-unlocked.ts\nimport { hashMessage } from \"@fuel-ts/hasher\";\nimport { hexlify as hexlify21 } from \"@fuel-ts/utils\";\n\n// src/signer/signer.ts\nimport { Address as Address5 } from \"@fuel-ts/address\";\nimport { randomBytes as randomBytes3 } from \"@fuel-ts/crypto\";\nimport { hash as hash2 } from \"@fuel-ts/hasher\";\nimport { toBytes as toBytes2 } from \"@fuel-ts/math\";\nimport { hexlify as hexlify19, concat as concat5, arrayify as arrayify18 } from \"@fuel-ts/utils\";\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\nvar Signer = class _Signer {\n  static {\n    __name(this, \"Signer\");\n  }\n  address;\n  publicKey;\n  compressedPublicKey;\n  privateKey;\n  /**\n   * Create a Signer instance from a given private key\n   *\n   * @param privateKey - The private key to use for signing\n   * @returns A new Signer instance\n   */\n  constructor(privateKey) {\n    if (typeof privateKey === \"string\") {\n      if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n        privateKey = `0x${privateKey}`;\n      }\n    }\n    const privateKeyBytes = toBytes2(privateKey, 32);\n    this.privateKey = hexlify19(privateKeyBytes);\n    this.publicKey = hexlify19(secp256k1.getPublicKey(privateKeyBytes, false).slice(1));\n    this.compressedPublicKey = hexlify19(secp256k1.getPublicKey(privateKeyBytes, true));\n    this.address = new Address5(this.publicKey);\n  }\n  /**\n   * Sign data using the Signer instance\n   *\n   * Signature is a 64 byte array of the concatenated r and s values with the compressed recoveryParam byte.\n   * @ignore\n   * [Read more](FuelLabs/fuel-specs/specs/protocol/cryptographic_primitives.md#public-key-cryptography)\n   *\n   * @param data - The data to be sign\n   * @returns hashed signature\n   */\n  sign(data) {\n    const signature = secp256k1.sign(arrayify18(data), arrayify18(this.privateKey));\n    const r = toBytes2(`0x${signature.r.toString(16)}`, 32);\n    const s = toBytes2(`0x${signature.s.toString(16)}`, 32);\n    s[0] |= (signature.recovery || 0) << 7;\n    return hexlify19(concat5([r, s]));\n  }\n  /**\n   * Add point on the current elliptic curve\n   *\n   * @param point - Point to add on the curve\n   * @returns compressed point on the curve\n   */\n  addPoint(point) {\n    const p0 = secp256k1.ProjectivePoint.fromHex(arrayify18(this.compressedPublicKey));\n    const p1 = secp256k1.ProjectivePoint.fromHex(arrayify18(point));\n    const result = p0.add(p1);\n    return `0x${result.toHex(true)}`;\n  }\n  /**\n   * Recover the public key from a signature performed with [`sign`](#sign).\n   *\n   * @param data - Data\n   * @param signature - hashed signature\n   * @returns public key from signature from the\n   */\n  static recoverPublicKey(data, signature) {\n    const signedMessageBytes = arrayify18(signature);\n    const r = signedMessageBytes.slice(0, 32);\n    const s = signedMessageBytes.slice(32, 64);\n    const recoveryParam = (s[0] & 128) >> 7;\n    s[0] &= 127;\n    const sig = new secp256k1.Signature(BigInt(hexlify19(r)), BigInt(hexlify19(s))).addRecoveryBit(\n      recoveryParam\n    );\n    const publicKey = sig.recoverPublicKey(arrayify18(data)).toRawBytes(false).slice(1);\n    return hexlify19(publicKey);\n  }\n  /**\n   * Recover the address from a signature performed with [`sign`](#sign).\n   *\n   * @param data - Data\n   * @param signature - Signature\n   * @returns Address from signature\n   */\n  static recoverAddress(data, signature) {\n    return new Address5(_Signer.recoverPublicKey(data, signature));\n  }\n  /**\n   * Generate a random privateKey\n   *\n   * @param entropy - Adds extra entropy to generate the privateKey\n   * @returns random 32-byte hashed\n   */\n  static generatePrivateKey(entropy) {\n    return entropy ? hash2(concat5([randomBytes3(32), arrayify18(entropy)])) : randomBytes3(32);\n  }\n  /**\n   * Extended publicKey from a compact publicKey\n   *\n   * @param publicKey - Compact publicKey\n   * @returns extended publicKey\n   */\n  static extendPublicKey(publicKey) {\n    const point = secp256k1.ProjectivePoint.fromHex(arrayify18(publicKey));\n    return hexlify19(point.toRawBytes(false).slice(1));\n  }\n};\n\n// src/wallet/keystore-wallet.ts\nimport { Address as Address6 } from \"@fuel-ts/address\";\nimport {\n  bufferFromString,\n  keccak256,\n  randomBytes as randomBytes4,\n  scrypt,\n  stringFromBuffer,\n  decryptJsonWalletData,\n  encryptJsonWalletData,\n  randomUUID\n} from \"@fuel-ts/crypto\";\nimport { ErrorCode as ErrorCode20, FuelError as FuelError22 } from \"@fuel-ts/errors\";\nimport { hexlify as hexlify20 } from \"@fuel-ts/utils\";\nvar DEFAULT_KDF_PARAMS_LOG_N = 13;\nvar DEFAULT_KDF_PARAMS_R = 8;\nvar DEFAULT_KDF_PARAMS_P = 1;\nvar DEFAULT_KEY_SIZE = 32;\nvar DEFAULT_IV_SIZE = 16;\nvar removeHexPrefix = /* @__PURE__ */ __name((hexString) => {\n  if (/^0x/.test(hexString)) {\n    return hexString.slice(2);\n  }\n  return hexString;\n}, \"removeHexPrefix\");\nasync function encryptKeystoreWallet(privateKey, address, password) {\n  const privateKeyBuffer = bufferFromString(removeHexPrefix(privateKey), \"hex\");\n  const ownerAddress = new Address6(address);\n  const salt = randomBytes4(DEFAULT_KEY_SIZE);\n  const key = scrypt({\n    password: bufferFromString(password),\n    salt,\n    dklen: DEFAULT_KEY_SIZE,\n    n: 2 ** DEFAULT_KDF_PARAMS_LOG_N,\n    r: DEFAULT_KDF_PARAMS_R,\n    p: DEFAULT_KDF_PARAMS_P\n  });\n  const iv = randomBytes4(DEFAULT_IV_SIZE);\n  const ciphertext = await encryptJsonWalletData(privateKeyBuffer, key, iv);\n  const data = Uint8Array.from([...key.subarray(16, 32), ...ciphertext]);\n  const macHashUint8Array = keccak256(data);\n  const mac = stringFromBuffer(macHashUint8Array, \"hex\");\n  const keystore = {\n    id: randomUUID(),\n    version: 3,\n    address: removeHexPrefix(ownerAddress.toHexString()),\n    crypto: {\n      cipher: \"aes-128-ctr\",\n      mac,\n      cipherparams: { iv: stringFromBuffer(iv, \"hex\") },\n      ciphertext: stringFromBuffer(ciphertext, \"hex\"),\n      kdf: \"scrypt\",\n      kdfparams: {\n        dklen: DEFAULT_KEY_SIZE,\n        n: 2 ** DEFAULT_KDF_PARAMS_LOG_N,\n        p: DEFAULT_KDF_PARAMS_P,\n        r: DEFAULT_KDF_PARAMS_R,\n        salt: stringFromBuffer(salt, \"hex\")\n      }\n    }\n  };\n  return JSON.stringify(keystore);\n}\n__name(encryptKeystoreWallet, \"encryptKeystoreWallet\");\nasync function decryptKeystoreWallet(jsonWallet, password) {\n  const keystoreWallet = JSON.parse(jsonWallet);\n  const {\n    crypto: {\n      mac,\n      ciphertext,\n      cipherparams: { iv },\n      kdfparams: { dklen, n, r, p, salt }\n    }\n  } = keystoreWallet;\n  const ciphertextBuffer = bufferFromString(ciphertext, \"hex\");\n  const ivBuffer = bufferFromString(iv, \"hex\");\n  const saltBuffer = bufferFromString(salt, \"hex\");\n  const passwordBuffer = bufferFromString(password);\n  const key = scrypt({\n    password: passwordBuffer,\n    salt: saltBuffer,\n    n,\n    p,\n    r,\n    dklen\n  });\n  const data = Uint8Array.from([...key.subarray(16, 32), ...ciphertextBuffer]);\n  const macHashUint8Array = keccak256(data);\n  const macHash = stringFromBuffer(macHashUint8Array, \"hex\");\n  if (mac !== macHash) {\n    throw new FuelError22(\n      ErrorCode20.INVALID_PASSWORD,\n      \"Failed to decrypt the keystore wallet, the provided password is incorrect.\"\n    );\n  }\n  const buffer = await decryptJsonWalletData(ciphertextBuffer, key, ivBuffer);\n  const privateKey = hexlify20(buffer);\n  return privateKey;\n}\n__name(decryptKeystoreWallet, \"decryptKeystoreWallet\");\n\n// src/wallet/base-wallet-unlocked.ts\nvar BaseWalletUnlocked = class extends Account {\n  static {\n    __name(this, \"BaseWalletUnlocked\");\n  }\n  /**\n   * Default HDWallet path.\n   */\n  static defaultPath = \"m/44'/1179993420'/0'/0/0\";\n  /**\n   * A function that returns the wallet's signer.\n   */\n  signer;\n  /**\n   * Creates a new BaseWalletUnlocked instance.\n   *\n   * @param privateKey - The private key of the wallet.\n   * @param provider - A Provider instance (optional).\n   */\n  constructor(privateKey, provider) {\n    const signer = new Signer(privateKey);\n    super(signer.address, provider);\n    this.signer = () => signer;\n  }\n  /**\n   * Gets the private key of the wallet.\n   *\n   * @returns The private key of the wallet.\n   */\n  get privateKey() {\n    return this.signer().privateKey;\n  }\n  /**\n   * Gets the public key of the wallet.\n   *\n   * @returns\n   */\n  get publicKey() {\n    return this.signer().publicKey;\n  }\n  /**\n   * Signs a message with the wallet's private key.\n   *\n   * @param message - The message to sign.\n   * @returns A promise that resolves to the signature as a ECDSA 64 bytes string.\n   */\n  async signMessage(message) {\n    const signedMessage = await this.signer().sign(hashMessage(message));\n    return hexlify21(signedMessage);\n  }\n  /**\n   * Signs a transaction with the wallet's private key.\n   *\n   * @param transactionRequestLike - The transaction request to sign.\n   * @returns A promise that resolves to the signature as a ECDSA 64 bytes string.\n   */\n  async signTransaction(transactionRequestLike) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    const chainId = await this.provider.getChainId();\n    const hashedTransaction = transactionRequest.getTransactionId(chainId);\n    const signature = await this.signer().sign(hashedTransaction);\n    return hexlify21(signature);\n  }\n  /**\n   * Populates a transaction with the witnesses signature.\n   *\n   * @param transactionRequestLike - The transaction request to populate.\n   * @returns The populated transaction request.\n   */\n  async populateTransactionWitnessesSignature(transactionRequestLike) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    const signedTransaction = await this.signTransaction(transactionRequest);\n    transactionRequest.updateWitnessByOwner(this.address, signedTransaction);\n    return transactionRequest;\n  }\n  /**\n   * Populates the witness signature for a transaction and sends it to the network using `provider.sendTransaction`.\n   *\n   * @param transactionRequestLike - The transaction request to send.\n   * @param estimateTxDependencies - Whether to estimate the transaction dependencies.\n   * @returns A promise that resolves to the TransactionResponse object.\n   */\n  async sendTransaction(transactionRequestLike, { estimateTxDependencies = false, enableAssetBurn } = {}) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    validateTransactionForAssetBurn(\n      await this.provider.getBaseAssetId(),\n      transactionRequest,\n      enableAssetBurn\n    );\n    if (estimateTxDependencies) {\n      await this.provider.estimateTxDependencies(transactionRequest);\n    }\n    return this.provider.sendTransaction(\n      await this.populateTransactionWitnessesSignature(transactionRequest),\n      { estimateTxDependencies: false, enableAssetBurn }\n    );\n  }\n  /**\n   * Populates the witness signature for a transaction and sends a call to the network using `provider.dryRun`.\n   *\n   * @param transactionRequestLike - The transaction request to simulate.\n   * @returns A promise that resolves to the CallResult object.\n   */\n  async simulateTransaction(transactionRequestLike, { estimateTxDependencies = true } = {}) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    if (estimateTxDependencies) {\n      await this.provider.estimateTxDependencies(transactionRequest);\n    }\n    return this.provider.dryRun(\n      await this.populateTransactionWitnessesSignature(transactionRequest),\n      {\n        utxoValidation: true,\n        estimateTxDependencies: false\n      }\n    );\n  }\n  /**\n   * Encrypts an unlocked wallet with a password.\n   *\n   * @param password - the password to encrypt the wallet with.\n   * @returns - the encrypted wallet.\n   */\n  async encrypt(password) {\n    return encryptKeystoreWallet(this.privateKey, this.address, password);\n  }\n};\n\n// src/hdwallet/hdwallet.ts\nimport { computeHmac as computeHmac2, ripemd160 } from \"@fuel-ts/crypto\";\nimport { ErrorCode as ErrorCode23, FuelError as FuelError25 } from \"@fuel-ts/errors\";\nimport { sha256 as sha2564 } from \"@fuel-ts/hasher\";\nimport { bn as bn22, toBytes as toBytes3, toHex } from \"@fuel-ts/math\";\nimport { arrayify as arrayify21, hexlify as hexlify23, concat as concat7, dataSlice as dataSlice2, encodeBase58 as encodeBase582, decodeBase58 } from \"@fuel-ts/utils\";\n\n// src/mnemonic/mnemonic.ts\nimport { randomBytes as randomBytes5, pbkdf2, computeHmac } from \"@fuel-ts/crypto\";\nimport { ErrorCode as ErrorCode22, FuelError as FuelError24 } from \"@fuel-ts/errors\";\nimport { sha256 as sha2563 } from \"@fuel-ts/hasher\";\nimport { arrayify as arrayify20, hexlify as hexlify22, concat as concat6, dataSlice, encodeBase58, toUtf8Bytes } from \"@fuel-ts/utils\";\n\n// src/wordlists/words/english.ts\nvar english = [\n  \"abandon\",\n  \"ability\",\n  \"able\",\n  \"about\",\n  \"above\",\n  \"absent\",\n  \"absorb\",\n  \"abstract\",\n  \"absurd\",\n  \"abuse\",\n  \"access\",\n  \"accident\",\n  \"account\",\n  \"accuse\",\n  \"achieve\",\n  \"acid\",\n  \"acoustic\",\n  \"acquire\",\n  \"across\",\n  \"act\",\n  \"action\",\n  \"actor\",\n  \"actress\",\n  \"actual\",\n  \"adapt\",\n  \"add\",\n  \"addict\",\n  \"address\",\n  \"adjust\",\n  \"admit\",\n  \"adult\",\n  \"advance\",\n  \"advice\",\n  \"aerobic\",\n  \"affair\",\n  \"afford\",\n  \"afraid\",\n  \"again\",\n  \"age\",\n  \"agent\",\n  \"agree\",\n  \"ahead\",\n  \"aim\",\n  \"air\",\n  \"airport\",\n  \"aisle\",\n  \"alarm\",\n  \"album\",\n  \"alcohol\",\n  \"alert\",\n  \"alien\",\n  \"all\",\n  \"alley\",\n  \"allow\",\n  \"almost\",\n  \"alone\",\n  \"alpha\",\n  \"already\",\n  \"also\",\n  \"alter\",\n  \"always\",\n  \"amateur\",\n  \"amazing\",\n  \"among\",\n  \"amount\",\n  \"amused\",\n  \"analyst\",\n  \"anchor\",\n  \"ancient\",\n  \"anger\",\n  \"angle\",\n  \"angry\",\n  \"animal\",\n  \"ankle\",\n  \"announce\",\n  \"annual\",\n  \"another\",\n  \"answer\",\n  \"antenna\",\n  \"antique\",\n  \"anxiety\",\n  \"any\",\n  \"apart\",\n  \"apology\",\n  \"appear\",\n  \"apple\",\n  \"approve\",\n  \"april\",\n  \"arch\",\n  \"arctic\",\n  \"area\",\n  \"arena\",\n  \"argue\",\n  \"arm\",\n  \"armed\",\n  \"armor\",\n  \"army\",\n  \"around\",\n  \"arrange\",\n  \"arrest\",\n  \"arrive\",\n  \"arrow\",\n  \"art\",\n  \"artefact\",\n  \"artist\",\n  \"artwork\",\n  \"ask\",\n  \"aspect\",\n  \"assault\",\n  \"asset\",\n  \"assist\",\n  \"assume\",\n  \"asthma\",\n  \"athlete\",\n  \"atom\",\n  \"attack\",\n  \"attend\",\n  \"attitude\",\n  \"attract\",\n  \"auction\",\n  \"audit\",\n  \"august\",\n  \"aunt\",\n  \"author\",\n  \"auto\",\n  \"autumn\",\n  \"average\",\n  \"avocado\",\n  \"avoid\",\n  \"awake\",\n  \"aware\",\n  \"away\",\n  \"awesome\",\n  \"awful\",\n  \"awkward\",\n  \"axis\",\n  \"baby\",\n  \"bachelor\",\n  \"bacon\",\n  \"badge\",\n  \"bag\",\n  \"balance\",\n  \"balcony\",\n  \"ball\",\n  \"bamboo\",\n  \"banana\",\n  \"banner\",\n  \"bar\",\n  \"barely\",\n  \"bargain\",\n  \"barrel\",\n  \"base\",\n  \"basic\",\n  \"basket\",\n  \"battle\",\n  \"beach\",\n  \"bean\",\n  \"beauty\",\n  \"because\",\n  \"become\",\n  \"beef\",\n  \"before\",\n  \"begin\",\n  \"behave\",\n  \"behind\",\n  \"believe\",\n  \"below\",\n  \"belt\",\n  \"bench\",\n  \"benefit\",\n  \"best\",\n  \"betray\",\n  \"better\",\n  \"between\",\n  \"beyond\",\n  \"bicycle\",\n  \"bid\",\n  \"bike\",\n  \"bind\",\n  \"biology\",\n  \"bird\",\n  \"birth\",\n  \"bitter\",\n  \"black\",\n  \"blade\",\n  \"blame\",\n  \"blanket\",\n  \"blast\",\n  \"bleak\",\n  \"bless\",\n  \"blind\",\n  \"blood\",\n  \"blossom\",\n  \"blouse\",\n  \"blue\",\n  \"blur\",\n  \"blush\",\n  \"board\",\n  \"boat\",\n  \"body\",\n  \"boil\",\n  \"bomb\",\n  \"bone\",\n  \"bonus\",\n  \"book\",\n  \"boost\",\n  \"border\",\n  \"boring\",\n  \"borrow\",\n  \"boss\",\n  \"bottom\",\n  \"bounce\",\n  \"box\",\n  \"boy\",\n  \"bracket\",\n  \"brain\",\n  \"brand\",\n  \"brass\",\n  \"brave\",\n  \"bread\",\n  \"breeze\",\n  \"brick\",\n  \"bridge\",\n  \"brief\",\n  \"bright\",\n  \"bring\",\n  \"brisk\",\n  \"broccoli\",\n  \"broken\",\n  \"bronze\",\n  \"broom\",\n  \"brother\",\n  \"brown\",\n  \"brush\",\n  \"bubble\",\n  \"buddy\",\n  \"budget\",\n  \"buffalo\",\n  \"build\",\n  \"bulb\",\n  \"bulk\",\n  \"bullet\",\n  \"bundle\",\n  \"bunker\",\n  \"burden\",\n  \"burger\",\n  \"burst\",\n  \"bus\",\n  \"business\",\n  \"busy\",\n  \"butter\",\n  \"buyer\",\n  \"buzz\",\n  \"cabbage\",\n  \"cabin\",\n  \"cable\",\n  \"cactus\",\n  \"cage\",\n  \"cake\",\n  \"call\",\n  \"calm\",\n  \"camera\",\n  \"camp\",\n  \"can\",\n  \"canal\",\n  \"cancel\",\n  \"candy\",\n  \"cannon\",\n  \"canoe\",\n  \"canvas\",\n  \"canyon\",\n  \"capable\",\n  \"capital\",\n  \"captain\",\n  \"car\",\n  \"carbon\",\n  \"card\",\n  \"cargo\",\n  \"carpet\",\n  \"carry\",\n  \"cart\",\n  \"case\",\n  \"cash\",\n  \"casino\",\n  \"castle\",\n  \"casual\",\n  \"cat\",\n  \"catalog\",\n  \"catch\",\n  \"category\",\n  \"cattle\",\n  \"caught\",\n  \"cause\",\n  \"caution\",\n  \"cave\",\n  \"ceiling\",\n  \"celery\",\n  \"cement\",\n  \"census\",\n  \"century\",\n  \"cereal\",\n  \"certain\",\n  \"chair\",\n  \"chalk\",\n  \"champion\",\n  \"change\",\n  \"chaos\",\n  \"chapter\",\n  \"charge\",\n  \"chase\",\n  \"chat\",\n  \"cheap\",\n  \"check\",\n  \"cheese\",\n  \"chef\",\n  \"cherry\",\n  \"chest\",\n  \"chicken\",\n  \"chief\",\n  \"child\",\n  \"chimney\",\n  \"choice\",\n  \"choose\",\n  \"chronic\",\n  \"chuckle\",\n  \"chunk\",\n  \"churn\",\n  \"cigar\",\n  \"cinnamon\",\n  \"circle\",\n  \"citizen\",\n  \"city\",\n  \"civil\",\n  \"claim\",\n  \"clap\",\n  \"clarify\",\n  \"claw\",\n  \"clay\",\n  \"clean\",\n  \"clerk\",\n  \"clever\",\n  \"click\",\n  \"client\",\n  \"cliff\",\n  \"climb\",\n  \"clinic\",\n  \"clip\",\n  \"clock\",\n  \"clog\",\n  \"close\",\n  \"cloth\",\n  \"cloud\",\n  \"clown\",\n  \"club\",\n  \"clump\",\n  \"cluster\",\n  \"clutch\",\n  \"coach\",\n  \"coast\",\n  \"coconut\",\n  \"code\",\n  \"coffee\",\n  \"coil\",\n  \"coin\",\n  \"collect\",\n  \"color\",\n  \"column\",\n  \"combine\",\n  \"come\",\n  \"comfort\",\n  \"comic\",\n  \"common\",\n  \"company\",\n  \"concert\",\n  \"conduct\",\n  \"confirm\",\n  \"congress\",\n  \"connect\",\n  \"consider\",\n  \"control\",\n  \"convince\",\n  \"cook\",\n  \"cool\",\n  \"copper\",\n  \"copy\",\n  \"coral\",\n  \"core\",\n  \"corn\",\n  \"correct\",\n  \"cost\",\n  \"cotton\",\n  \"couch\",\n  \"country\",\n  \"couple\",\n  \"course\",\n  \"cousin\",\n  \"cover\",\n  \"coyote\",\n  \"crack\",\n  \"cradle\",\n  \"craft\",\n  \"cram\",\n  \"crane\",\n  \"crash\",\n  \"crater\",\n  \"crawl\",\n  \"crazy\",\n  \"cream\",\n  \"credit\",\n  \"creek\",\n  \"crew\",\n  \"cricket\",\n  \"crime\",\n  \"crisp\",\n  \"critic\",\n  \"crop\",\n  \"cross\",\n  \"crouch\",\n  \"crowd\",\n  \"crucial\",\n  \"cruel\",\n  \"cruise\",\n  \"crumble\",\n  \"crunch\",\n  \"crush\",\n  \"cry\",\n  \"crystal\",\n  \"cube\",\n  \"culture\",\n  \"cup\",\n  \"cupboard\",\n  \"curious\",\n  \"current\",\n  \"curtain\",\n  \"curve\",\n  \"cushion\",\n  \"custom\",\n  \"cute\",\n  \"cycle\",\n  \"dad\",\n  \"damage\",\n  \"damp\",\n  \"dance\",\n  \"danger\",\n  \"daring\",\n  \"dash\",\n  \"daughter\",\n  \"dawn\",\n  \"day\",\n  \"deal\",\n  \"debate\",\n  \"debris\",\n  \"decade\",\n  \"december\",\n  \"decide\",\n  \"decline\",\n  \"decorate\",\n  \"decrease\",\n  \"deer\",\n  \"defense\",\n  \"define\",\n  \"defy\",\n  \"degree\",\n  \"delay\",\n  \"deliver\",\n  \"demand\",\n  \"demise\",\n  \"denial\",\n  \"dentist\",\n  \"deny\",\n  \"depart\",\n  \"depend\",\n  \"deposit\",\n  \"depth\",\n  \"deputy\",\n  \"derive\",\n  \"describe\",\n  \"desert\",\n  \"design\",\n  \"desk\",\n  \"despair\",\n  \"destroy\",\n  \"detail\",\n  \"detect\",\n  \"develop\",\n  \"device\",\n  \"devote\",\n  \"diagram\",\n  \"dial\",\n  \"diamond\",\n  \"diary\",\n  \"dice\",\n  \"diesel\",\n  \"diet\",\n  \"differ\",\n  \"digital\",\n  \"dignity\",\n  \"dilemma\",\n  \"dinner\",\n  \"dinosaur\",\n  \"direct\",\n  \"dirt\",\n  \"disagree\",\n  \"discover\",\n  \"disease\",\n  \"dish\",\n  \"dismiss\",\n  \"disorder\",\n  \"display\",\n  \"distance\",\n  \"divert\",\n  \"divide\",\n  \"divorce\",\n  \"dizzy\",\n  \"doctor\",\n  \"document\",\n  \"dog\",\n  \"doll\",\n  \"dolphin\",\n  \"domain\",\n  \"donate\",\n  \"donkey\",\n  \"donor\",\n  \"door\",\n  \"dose\",\n  \"double\",\n  \"dove\",\n  \"draft\",\n  \"dragon\",\n  \"drama\",\n  \"drastic\",\n  \"draw\",\n  \"dream\",\n  \"dress\",\n  \"drift\",\n  \"drill\",\n  \"drink\",\n  \"drip\",\n  \"drive\",\n  \"drop\",\n  \"drum\",\n  \"dry\",\n  \"duck\",\n  \"dumb\",\n  \"dune\",\n  \"during\",\n  \"dust\",\n  \"dutch\",\n  \"duty\",\n  \"dwarf\",\n  \"dynamic\",\n  \"eager\",\n  \"eagle\",\n  \"early\",\n  \"earn\",\n  \"earth\",\n  \"easily\",\n  \"east\",\n  \"easy\",\n  \"echo\",\n  \"ecology\",\n  \"economy\",\n  \"edge\",\n  \"edit\",\n  \"educate\",\n  \"effort\",\n  \"egg\",\n  \"eight\",\n  \"either\",\n  \"elbow\",\n  \"elder\",\n  \"electric\",\n  \"elegant\",\n  \"element\",\n  \"elephant\",\n  \"elevator\",\n  \"elite\",\n  \"else\",\n  \"embark\",\n  \"embody\",\n  \"embrace\",\n  \"emerge\",\n  \"emotion\",\n  \"employ\",\n  \"empower\",\n  \"empty\",\n  \"enable\",\n  \"enact\",\n  \"end\",\n  \"endless\",\n  \"endorse\",\n  \"enemy\",\n  \"energy\",\n  \"enforce\",\n  \"engage\",\n  \"engine\",\n  \"enhance\",\n  \"enjoy\",\n  \"enlist\",\n  \"enough\",\n  \"enrich\",\n  \"enroll\",\n  \"ensure\",\n  \"enter\",\n  \"entire\",\n  \"entry\",\n  \"envelope\",\n  \"episode\",\n  \"equal\",\n  \"equip\",\n  \"era\",\n  \"erase\",\n  \"erode\",\n  \"erosion\",\n  \"error\",\n  \"erupt\",\n  \"escape\",\n  \"essay\",\n  \"essence\",\n  \"estate\",\n  \"eternal\",\n  \"ethics\",\n  \"evidence\",\n  \"evil\",\n  \"evoke\",\n  \"evolve\",\n  \"exact\",\n  \"example\",\n  \"excess\",\n  \"exchange\",\n  \"excite\",\n  \"exclude\",\n  \"excuse\",\n  \"execute\",\n  \"exercise\",\n  \"exhaust\",\n  \"exhibit\",\n  \"exile\",\n  \"exist\",\n  \"exit\",\n  \"exotic\",\n  \"expand\",\n  \"expect\",\n  \"expire\",\n  \"explain\",\n  \"expose\",\n  \"express\",\n  \"extend\",\n  \"extra\",\n  \"eye\",\n  \"eyebrow\",\n  \"fabric\",\n  \"face\",\n  \"faculty\",\n  \"fade\",\n  \"faint\",\n  \"faith\",\n  \"fall\",\n  \"false\",\n  \"fame\",\n  \"family\",\n  \"famous\",\n  \"fan\",\n  \"fancy\",\n  \"fantasy\",\n  \"farm\",\n  \"fashion\",\n  \"fat\",\n  \"fatal\",\n  \"father\",\n  \"fatigue\",\n  \"fault\",\n  \"favorite\",\n  \"feature\",\n  \"february\",\n  \"federal\",\n  \"fee\",\n  \"feed\",\n  \"feel\",\n  \"female\",\n  \"fence\",\n  \"festival\",\n  \"fetch\",\n  \"fever\",\n  \"few\",\n  \"fiber\",\n  \"fiction\",\n  \"field\",\n  \"figure\",\n  \"file\",\n  \"film\",\n  \"filter\",\n  \"final\",\n  \"find\",\n  \"fine\",\n  \"finger\",\n  \"finish\",\n  \"fire\",\n  \"firm\",\n  \"first\",\n  \"fiscal\",\n  \"fish\",\n  \"fit\",\n  \"fitness\",\n  \"fix\",\n  \"flag\",\n  \"flame\",\n  \"flash\",\n  \"flat\",\n  \"flavor\",\n  \"flee\",\n  \"flight\",\n  \"flip\",\n  \"float\",\n  \"flock\",\n  \"floor\",\n  \"flower\",\n  \"fluid\",\n  \"flush\",\n  \"fly\",\n  \"foam\",\n  \"focus\",\n  \"fog\",\n  \"foil\",\n  \"fold\",\n  \"follow\",\n  \"food\",\n  \"foot\",\n  \"force\",\n  \"forest\",\n  \"forget\",\n  \"fork\",\n  \"fortune\",\n  \"forum\",\n  \"forward\",\n  \"fossil\",\n  \"foster\",\n  \"found\",\n  \"fox\",\n  \"fragile\",\n  \"frame\",\n  \"frequent\",\n  \"fresh\",\n  \"friend\",\n  \"fringe\",\n  \"frog\",\n  \"front\",\n  \"frost\",\n  \"frown\",\n  \"frozen\",\n  \"fruit\",\n  \"fuel\",\n  \"fun\",\n  \"funny\",\n  \"furnace\",\n  \"fury\",\n  \"future\",\n  \"gadget\",\n  \"gain\",\n  \"galaxy\",\n  \"gallery\",\n  \"game\",\n  \"gap\",\n  \"garage\",\n  \"garbage\",\n  \"garden\",\n  \"garlic\",\n  \"garment\",\n  \"gas\",\n  \"gasp\",\n  \"gate\",\n  \"gather\",\n  \"gauge\",\n  \"gaze\",\n  \"general\",\n  \"genius\",\n  \"genre\",\n  \"gentle\",\n  \"genuine\",\n  \"gesture\",\n  \"ghost\",\n  \"giant\",\n  \"gift\",\n  \"giggle\",\n  \"ginger\",\n  \"giraffe\",\n  \"girl\",\n  \"give\",\n  \"glad\",\n  \"glance\",\n  \"glare\",\n  \"glass\",\n  \"glide\",\n  \"glimpse\",\n  \"globe\",\n  \"gloom\",\n  \"glory\",\n  \"glove\",\n  \"glow\",\n  \"glue\",\n  \"goat\",\n  \"goddess\",\n  \"gold\",\n  \"good\",\n  \"goose\",\n  \"gorilla\",\n  \"gospel\",\n  \"gossip\",\n  \"govern\",\n  \"gown\",\n  \"grab\",\n  \"grace\",\n  \"grain\",\n  \"grant\",\n  \"grape\",\n  \"grass\",\n  \"gravity\",\n  \"great\",\n  \"green\",\n  \"grid\",\n  \"grief\",\n  \"grit\",\n  \"grocery\",\n  \"group\",\n  \"grow\",\n  \"grunt\",\n  \"guard\",\n  \"guess\",\n  \"guide\",\n  \"guilt\",\n  \"guitar\",\n  \"gun\",\n  \"gym\",\n  \"habit\",\n  \"hair\",\n  \"half\",\n  \"hammer\",\n  \"hamster\",\n  \"hand\",\n  \"happy\",\n  \"harbor\",\n  \"hard\",\n  \"harsh\",\n  \"harvest\",\n  \"hat\",\n  \"have\",\n  \"hawk\",\n  \"hazard\",\n  \"head\",\n  \"health\",\n  \"heart\",\n  \"heavy\",\n  \"hedgehog\",\n  \"height\",\n  \"hello\",\n  \"helmet\",\n  \"help\",\n  \"hen\",\n  \"hero\",\n  \"hidden\",\n  \"high\",\n  \"hill\",\n  \"hint\",\n  \"hip\",\n  \"hire\",\n  \"history\",\n  \"hobby\",\n  \"hockey\",\n  \"hold\",\n  \"hole\",\n  \"holiday\",\n  \"hollow\",\n  \"home\",\n  \"honey\",\n  \"hood\",\n  \"hope\",\n  \"horn\",\n  \"horror\",\n  \"horse\",\n  \"hospital\",\n  \"host\",\n  \"hotel\",\n  \"hour\",\n  \"hover\",\n  \"hub\",\n  \"huge\",\n  \"human\",\n  \"humble\",\n  \"humor\",\n  \"hundred\",\n  \"hungry\",\n  \"hunt\",\n  \"hurdle\",\n  \"hurry\",\n  \"hurt\",\n  \"husband\",\n  \"hybrid\",\n  \"ice\",\n  \"icon\",\n  \"idea\",\n  \"identify\",\n  \"idle\",\n  \"ignore\",\n  \"ill\",\n  \"illegal\",\n  \"illness\",\n  \"image\",\n  \"imitate\",\n  \"immense\",\n  \"immune\",\n  \"impact\",\n  \"impose\",\n  \"improve\",\n  \"impulse\",\n  \"inch\",\n  \"include\",\n  \"income\",\n  \"increase\",\n  \"index\",\n  \"indicate\",\n  \"indoor\",\n  \"industry\",\n  \"infant\",\n  \"inflict\",\n  \"inform\",\n  \"inhale\",\n  \"inherit\",\n  \"initial\",\n  \"inject\",\n  \"injury\",\n  \"inmate\",\n  \"inner\",\n  \"innocent\",\n  \"input\",\n  \"inquiry\",\n  \"insane\",\n  \"insect\",\n  \"inside\",\n  \"inspire\",\n  \"install\",\n  \"intact\",\n  \"interest\",\n  \"into\",\n  \"invest\",\n  \"invite\",\n  \"involve\",\n  \"iron\",\n  \"island\",\n  \"isolate\",\n  \"issue\",\n  \"item\",\n  \"ivory\",\n  \"jacket\",\n  \"jaguar\",\n  \"jar\",\n  \"jazz\",\n  \"jealous\",\n  \"jeans\",\n  \"jelly\",\n  \"jewel\",\n  \"job\",\n  \"join\",\n  \"joke\",\n  \"journey\",\n  \"joy\",\n  \"judge\",\n  \"juice\",\n  \"jump\",\n  \"jungle\",\n  \"junior\",\n  \"junk\",\n  \"just\",\n  \"kangaroo\",\n  \"keen\",\n  \"keep\",\n  \"ketchup\",\n  \"key\",\n  \"kick\",\n  \"kid\",\n  \"kidney\",\n  \"kind\",\n  \"kingdom\",\n  \"kiss\",\n  \"kit\",\n  \"kitchen\",\n  \"kite\",\n  \"kitten\",\n  \"kiwi\",\n  \"knee\",\n  \"knife\",\n  \"knock\",\n  \"know\",\n  \"lab\",\n  \"label\",\n  \"labor\",\n  \"ladder\",\n  \"lady\",\n  \"lake\",\n  \"lamp\",\n  \"language\",\n  \"laptop\",\n  \"large\",\n  \"later\",\n  \"latin\",\n  \"laugh\",\n  \"laundry\",\n  \"lava\",\n  \"law\",\n  \"lawn\",\n  \"lawsuit\",\n  \"layer\",\n  \"lazy\",\n  \"leader\",\n  \"leaf\",\n  \"learn\",\n  \"leave\",\n  \"lecture\",\n  \"left\",\n  \"leg\",\n  \"legal\",\n  \"legend\",\n  \"leisure\",\n  \"lemon\",\n  \"lend\",\n  \"length\",\n  \"lens\",\n  \"leopard\",\n  \"lesson\",\n  \"letter\",\n  \"level\",\n  \"liar\",\n  \"liberty\",\n  \"library\",\n  \"license\",\n  \"life\",\n  \"lift\",\n  \"light\",\n  \"like\",\n  \"limb\",\n  \"limit\",\n  \"link\",\n  \"lion\",\n  \"liquid\",\n  \"list\",\n  \"little\",\n  \"live\",\n  \"lizard\",\n  \"load\",\n  \"loan\",\n  \"lobster\",\n  \"local\",\n  \"lock\",\n  \"logic\",\n  \"lonely\",\n  \"long\",\n  \"loop\",\n  \"lottery\",\n  \"loud\",\n  \"lounge\",\n  \"love\",\n  \"loyal\",\n  \"lucky\",\n  \"luggage\",\n  \"lumber\",\n  \"lunar\",\n  \"lunch\",\n  \"luxury\",\n  \"lyrics\",\n  \"machine\",\n  \"mad\",\n  \"magic\",\n  \"magnet\",\n  \"maid\",\n  \"mail\",\n  \"main\",\n  \"major\",\n  \"make\",\n  \"mammal\",\n  \"man\",\n  \"manage\",\n  \"mandate\",\n  \"mango\",\n  \"mansion\",\n  \"manual\",\n  \"maple\",\n  \"marble\",\n  \"march\",\n  \"margin\",\n  \"marine\",\n  \"market\",\n  \"marriage\",\n  \"mask\",\n  \"mass\",\n  \"master\",\n  \"match\",\n  \"material\",\n  \"math\",\n  \"matrix\",\n  \"matter\",\n  \"maximum\",\n  \"maze\",\n  \"meadow\",\n  \"mean\",\n  \"measure\",\n  \"meat\",\n  \"mechanic\",\n  \"medal\",\n  \"media\",\n  \"melody\",\n  \"melt\",\n  \"member\",\n  \"memory\",\n  \"mention\",\n  \"menu\",\n  \"mercy\",\n  \"merge\",\n  \"merit\",\n  \"merry\",\n  \"mesh\",\n  \"message\",\n  \"metal\",\n  \"method\",\n  \"middle\",\n  \"midnight\",\n  \"milk\",\n  \"million\",\n  \"mimic\",\n  \"mind\",\n  \"minimum\",\n  \"minor\",\n  \"minute\",\n  \"miracle\",\n  \"mirror\",\n  \"misery\",\n  \"miss\",\n  \"mistake\",\n  \"mix\",\n  \"mixed\",\n  \"mixture\",\n  \"mobile\",\n  \"model\",\n  \"modify\",\n  \"mom\",\n  \"moment\",\n  \"monitor\",\n  \"monkey\",\n  \"monster\",\n  \"month\",\n  \"moon\",\n  \"moral\",\n  \"more\",\n  \"morning\",\n  \"mosquito\",\n  \"mother\",\n  \"motion\",\n  \"motor\",\n  \"mountain\",\n  \"mouse\",\n  \"move\",\n  \"movie\",\n  \"much\",\n  \"muffin\",\n  \"mule\",\n  \"multiply\",\n  \"muscle\",\n  \"museum\",\n  \"mushroom\",\n  \"music\",\n  \"must\",\n  \"mutual\",\n  \"myself\",\n  \"mystery\",\n  \"myth\",\n  \"naive\",\n  \"name\",\n  \"napkin\",\n  \"narrow\",\n  \"nasty\",\n  \"nation\",\n  \"nature\",\n  \"near\",\n  \"neck\",\n  \"need\",\n  \"negative\",\n  \"neglect\",\n  \"neither\",\n  \"nephew\",\n  \"nerve\",\n  \"nest\",\n  \"net\",\n  \"network\",\n  \"neutral\",\n  \"never\",\n  \"news\",\n  \"next\",\n  \"nice\",\n  \"night\",\n  \"noble\",\n  \"noise\",\n  \"nominee\",\n  \"noodle\",\n  \"normal\",\n  \"north\",\n  \"nose\",\n  \"notable\",\n  \"note\",\n  \"nothing\",\n  \"notice\",\n  \"novel\",\n  \"now\",\n  \"nuclear\",\n  \"number\",\n  \"nurse\",\n  \"nut\",\n  \"oak\",\n  \"obey\",\n  \"object\",\n  \"oblige\",\n  \"obscure\",\n  \"observe\",\n  \"obtain\",\n  \"obvious\",\n  \"occur\",\n  \"ocean\",\n  \"october\",\n  \"odor\",\n  \"off\",\n  \"offer\",\n  \"office\",\n  \"often\",\n  \"oil\",\n  \"okay\",\n  \"old\",\n  \"olive\",\n  \"olympic\",\n  \"omit\",\n  \"once\",\n  \"one\",\n  \"onion\",\n  \"online\",\n  \"only\",\n  \"open\",\n  \"opera\",\n  \"opinion\",\n  \"oppose\",\n  \"option\",\n  \"orange\",\n  \"orbit\",\n  \"orchard\",\n  \"order\",\n  \"ordinary\",\n  \"organ\",\n  \"orient\",\n  \"original\",\n  \"orphan\",\n  \"ostrich\",\n  \"other\",\n  \"outdoor\",\n  \"outer\",\n  \"output\",\n  \"outside\",\n  \"oval\",\n  \"oven\",\n  \"over\",\n  \"own\",\n  \"owner\",\n  \"oxygen\",\n  \"oyster\",\n  \"ozone\",\n  \"pact\",\n  \"paddle\",\n  \"page\",\n  \"pair\",\n  \"palace\",\n  \"palm\",\n  \"panda\",\n  \"panel\",\n  \"panic\",\n  \"panther\",\n  \"paper\",\n  \"parade\",\n  \"parent\",\n  \"park\",\n  \"parrot\",\n  \"party\",\n  \"pass\",\n  \"patch\",\n  \"path\",\n  \"patient\",\n  \"patrol\",\n  \"pattern\",\n  \"pause\",\n  \"pave\",\n  \"payment\",\n  \"peace\",\n  \"peanut\",\n  \"pear\",\n  \"peasant\",\n  \"pelican\",\n  \"pen\",\n  \"penalty\",\n  \"pencil\",\n  \"people\",\n  \"pepper\",\n  \"perfect\",\n  \"permit\",\n  \"person\",\n  \"pet\",\n  \"phone\",\n  \"photo\",\n  \"phrase\",\n  \"physical\",\n  \"piano\",\n  \"picnic\",\n  \"picture\",\n  \"piece\",\n  \"pig\",\n  \"pigeon\",\n  \"pill\",\n  \"pilot\",\n  \"pink\",\n  \"pioneer\",\n  \"pipe\",\n  \"pistol\",\n  \"pitch\",\n  \"pizza\",\n  \"place\",\n  \"planet\",\n  \"plastic\",\n  \"plate\",\n  \"play\",\n  \"please\",\n  \"pledge\",\n  \"pluck\",\n  \"plug\",\n  \"plunge\",\n  \"poem\",\n  \"poet\",\n  \"point\",\n  \"polar\",\n  \"pole\",\n  \"police\",\n  \"pond\",\n  \"pony\",\n  \"pool\",\n  \"popular\",\n  \"portion\",\n  \"position\",\n  \"possible\",\n  \"post\",\n  \"potato\",\n  \"pottery\",\n  \"poverty\",\n  \"powder\",\n  \"power\",\n  \"practice\",\n  \"praise\",\n  \"predict\",\n  \"prefer\",\n  \"prepare\",\n  \"present\",\n  \"pretty\",\n  \"prevent\",\n  \"price\",\n  \"pride\",\n  \"primary\",\n  \"print\",\n  \"priority\",\n  \"prison\",\n  \"private\",\n  \"prize\",\n  \"problem\",\n  \"process\",\n  \"produce\",\n  \"profit\",\n  \"program\",\n  \"project\",\n  \"promote\",\n  \"proof\",\n  \"property\",\n  \"prosper\",\n  \"protect\",\n  \"proud\",\n  \"provide\",\n  \"public\",\n  \"pudding\",\n  \"pull\",\n  \"pulp\",\n  \"pulse\",\n  \"pumpkin\",\n  \"punch\",\n  \"pupil\",\n  \"puppy\",\n  \"purchase\",\n  \"purity\",\n  \"purpose\",\n  \"purse\",\n  \"push\",\n  \"put\",\n  \"puzzle\",\n  \"pyramid\",\n  \"quality\",\n  \"quantum\",\n  \"quarter\",\n  \"question\",\n  \"quick\",\n  \"quit\",\n  \"quiz\",\n  \"quote\",\n  \"rabbit\",\n  \"raccoon\",\n  \"race\",\n  \"rack\",\n  \"radar\",\n  \"radio\",\n  \"rail\",\n  \"rain\",\n  \"raise\",\n  \"rally\",\n  \"ramp\",\n  \"ranch\",\n  \"random\",\n  \"range\",\n  \"rapid\",\n  \"rare\",\n  \"rate\",\n  \"rather\",\n  \"raven\",\n  \"raw\",\n  \"razor\",\n  \"ready\",\n  \"real\",\n  \"reason\",\n  \"rebel\",\n  \"rebuild\",\n  \"recall\",\n  \"receive\",\n  \"recipe\",\n  \"record\",\n  \"recycle\",\n  \"reduce\",\n  \"reflect\",\n  \"reform\",\n  \"refuse\",\n  \"region\",\n  \"regret\",\n  \"regular\",\n  \"reject\",\n  \"relax\",\n  \"release\",\n  \"relief\",\n  \"rely\",\n  \"remain\",\n  \"remember\",\n  \"remind\",\n  \"remove\",\n  \"render\",\n  \"renew\",\n  \"rent\",\n  \"reopen\",\n  \"repair\",\n  \"repeat\",\n  \"replace\",\n  \"report\",\n  \"require\",\n  \"rescue\",\n  \"resemble\",\n  \"resist\",\n  \"resource\",\n  \"response\",\n  \"result\",\n  \"retire\",\n  \"retreat\",\n  \"return\",\n  \"reunion\",\n  \"reveal\",\n  \"review\",\n  \"reward\",\n  \"rhythm\",\n  \"rib\",\n  \"ribbon\",\n  \"rice\",\n  \"rich\",\n  \"ride\",\n  \"ridge\",\n  \"rifle\",\n  \"right\",\n  \"rigid\",\n  \"ring\",\n  \"riot\",\n  \"ripple\",\n  \"risk\",\n  \"ritual\",\n  \"rival\",\n  \"river\",\n  \"road\",\n  \"roast\",\n  \"robot\",\n  \"robust\",\n  \"rocket\",\n  \"romance\",\n  \"roof\",\n  \"rookie\",\n  \"room\",\n  \"rose\",\n  \"rotate\",\n  \"rough\",\n  \"round\",\n  \"route\",\n  \"royal\",\n  \"rubber\",\n  \"rude\",\n  \"rug\",\n  \"rule\",\n  \"run\",\n  \"runway\",\n  \"rural\",\n  \"sad\",\n  \"saddle\",\n  \"sadness\",\n  \"safe\",\n  \"sail\",\n  \"salad\",\n  \"salmon\",\n  \"salon\",\n  \"salt\",\n  \"salute\",\n  \"same\",\n  \"sample\",\n  \"sand\",\n  \"satisfy\",\n  \"satoshi\",\n  \"sauce\",\n  \"sausage\",\n  \"save\",\n  \"say\",\n  \"scale\",\n  \"scan\",\n  \"scare\",\n  \"scatter\",\n  \"scene\",\n  \"scheme\",\n  \"school\",\n  \"science\",\n  \"scissors\",\n  \"scorpion\",\n  \"scout\",\n  \"scrap\",\n  \"screen\",\n  \"script\",\n  \"scrub\",\n  \"sea\",\n  \"search\",\n  \"season\",\n  \"seat\",\n  \"second\",\n  \"secret\",\n  \"section\",\n  \"security\",\n  \"seed\",\n  \"seek\",\n  \"segment\",\n  \"select\",\n  \"sell\",\n  \"seminar\",\n  \"senior\",\n  \"sense\",\n  \"sentence\",\n  \"series\",\n  \"service\",\n  \"session\",\n  \"settle\",\n  \"setup\",\n  \"seven\",\n  \"shadow\",\n  \"shaft\",\n  \"shallow\",\n  \"share\",\n  \"shed\",\n  \"shell\",\n  \"sheriff\",\n  \"shield\",\n  \"shift\",\n  \"shine\",\n  \"ship\",\n  \"shiver\",\n  \"shock\",\n  \"shoe\",\n  \"shoot\",\n  \"shop\",\n  \"short\",\n  \"shoulder\",\n  \"shove\",\n  \"shrimp\",\n  \"shrug\",\n  \"shuffle\",\n  \"shy\",\n  \"sibling\",\n  \"sick\",\n  \"side\",\n  \"siege\",\n  \"sight\",\n  \"sign\",\n  \"silent\",\n  \"silk\",\n  \"silly\",\n  \"silver\",\n  \"similar\",\n  \"simple\",\n  \"since\",\n  \"sing\",\n  \"siren\",\n  \"sister\",\n  \"situate\",\n  \"six\",\n  \"size\",\n  \"skate\",\n  \"sketch\",\n  \"ski\",\n  \"skill\",\n  \"skin\",\n  \"skirt\",\n  \"skull\",\n  \"slab\",\n  \"slam\",\n  \"sleep\",\n  \"slender\",\n  \"slice\",\n  \"slide\",\n  \"slight\",\n  \"slim\",\n  \"slogan\",\n  \"slot\",\n  \"slow\",\n  \"slush\",\n  \"small\",\n  \"smart\",\n  \"smile\",\n  \"smoke\",\n  \"smooth\",\n  \"snack\",\n  \"snake\",\n  \"snap\",\n  \"sniff\",\n  \"snow\",\n  \"soap\",\n  \"soccer\",\n  \"social\",\n  \"sock\",\n  \"soda\",\n  \"soft\",\n  \"solar\",\n  \"soldier\",\n  \"solid\",\n  \"solution\",\n  \"solve\",\n  \"someone\",\n  \"song\",\n  \"soon\",\n  \"sorry\",\n  \"sort\",\n  \"soul\",\n  \"sound\",\n  \"soup\",\n  \"source\",\n  \"south\",\n  \"space\",\n  \"spare\",\n  \"spatial\",\n  \"spawn\",\n  \"speak\",\n  \"special\",\n  \"speed\",\n  \"spell\",\n  \"spend\",\n  \"sphere\",\n  \"spice\",\n  \"spider\",\n  \"spike\",\n  \"spin\",\n  \"spirit\",\n  \"split\",\n  \"spoil\",\n  \"sponsor\",\n  \"spoon\",\n  \"sport\",\n  \"spot\",\n  \"spray\",\n  \"spread\",\n  \"spring\",\n  \"spy\",\n  \"square\",\n  \"squeeze\",\n  \"squirrel\",\n  \"stable\",\n  \"stadium\",\n  \"staff\",\n  \"stage\",\n  \"stairs\",\n  \"stamp\",\n  \"stand\",\n  \"start\",\n  \"state\",\n  \"stay\",\n  \"steak\",\n  \"steel\",\n  \"stem\",\n  \"step\",\n  \"stereo\",\n  \"stick\",\n  \"still\",\n  \"sting\",\n  \"stock\",\n  \"stomach\",\n  \"stone\",\n  \"stool\",\n  \"story\",\n  \"stove\",\n  \"strategy\",\n  \"street\",\n  \"strike\",\n  \"strong\",\n  \"struggle\",\n  \"student\",\n  \"stuff\",\n  \"stumble\",\n  \"style\",\n  \"subject\",\n  \"submit\",\n  \"subway\",\n  \"success\",\n  \"such\",\n  \"sudden\",\n  \"suffer\",\n  \"sugar\",\n  \"suggest\",\n  \"suit\",\n  \"summer\",\n  \"sun\",\n  \"sunny\",\n  \"sunset\",\n  \"super\",\n  \"supply\",\n  \"supreme\",\n  \"sure\",\n  \"surface\",\n  \"surge\",\n  \"surprise\",\n  \"surround\",\n  \"survey\",\n  \"suspect\",\n  \"sustain\",\n  \"swallow\",\n  \"swamp\",\n  \"swap\",\n  \"swarm\",\n  \"swear\",\n  \"sweet\",\n  \"swift\",\n  \"swim\",\n  \"swing\",\n  \"switch\",\n  \"sword\",\n  \"symbol\",\n  \"symptom\",\n  \"syrup\",\n  \"system\",\n  \"table\",\n  \"tackle\",\n  \"tag\",\n  \"tail\",\n  \"talent\",\n  \"talk\",\n  \"tank\",\n  \"tape\",\n  \"target\",\n  \"task\",\n  \"taste\",\n  \"tattoo\",\n  \"taxi\",\n  \"teach\",\n  \"team\",\n  \"tell\",\n  \"ten\",\n  \"tenant\",\n  \"tennis\",\n  \"tent\",\n  \"term\",\n  \"test\",\n  \"text\",\n  \"thank\",\n  \"that\",\n  \"theme\",\n  \"then\",\n  \"theory\",\n  \"there\",\n  \"they\",\n  \"thing\",\n  \"this\",\n  \"thought\",\n  \"three\",\n  \"thrive\",\n  \"throw\",\n  \"thumb\",\n  \"thunder\",\n  \"ticket\",\n  \"tide\",\n  \"tiger\",\n  \"tilt\",\n  \"timber\",\n  \"time\",\n  \"tiny\",\n  \"tip\",\n  \"tired\",\n  \"tissue\",\n  \"title\",\n  \"toast\",\n  \"tobacco\",\n  \"today\",\n  \"toddler\",\n  \"toe\",\n  \"together\",\n  \"toilet\",\n  \"token\",\n  \"tomato\",\n  \"tomorrow\",\n  \"tone\",\n  \"tongue\",\n  \"tonight\",\n  \"tool\",\n  \"tooth\",\n  \"top\",\n  \"topic\",\n  \"topple\",\n  \"torch\",\n  \"tornado\",\n  \"tortoise\",\n  \"toss\",\n  \"total\",\n  \"tourist\",\n  \"toward\",\n  \"tower\",\n  \"town\",\n  \"toy\",\n  \"track\",\n  \"trade\",\n  \"traffic\",\n  \"tragic\",\n  \"train\",\n  \"transfer\",\n  \"trap\",\n  \"trash\",\n  \"travel\",\n  \"tray\",\n  \"treat\",\n  \"tree\",\n  \"trend\",\n  \"trial\",\n  \"tribe\",\n  \"trick\",\n  \"trigger\",\n  \"trim\",\n  \"trip\",\n  \"trophy\",\n  \"trouble\",\n  \"truck\",\n  \"true\",\n  \"truly\",\n  \"trumpet\",\n  \"trust\",\n  \"truth\",\n  \"try\",\n  \"tube\",\n  \"tuition\",\n  \"tumble\",\n  \"tuna\",\n  \"tunnel\",\n  \"turkey\",\n  \"turn\",\n  \"turtle\",\n  \"twelve\",\n  \"twenty\",\n  \"twice\",\n  \"twin\",\n  \"twist\",\n  \"two\",\n  \"type\",\n  \"typical\",\n  \"ugly\",\n  \"umbrella\",\n  \"unable\",\n  \"unaware\",\n  \"uncle\",\n  \"uncover\",\n  \"under\",\n  \"undo\",\n  \"unfair\",\n  \"unfold\",\n  \"unhappy\",\n  \"uniform\",\n  \"unique\",\n  \"unit\",\n  \"universe\",\n  \"unknown\",\n  \"unlock\",\n  \"until\",\n  \"unusual\",\n  \"unveil\",\n  \"update\",\n  \"upgrade\",\n  \"uphold\",\n  \"upon\",\n  \"upper\",\n  \"upset\",\n  \"urban\",\n  \"urge\",\n  \"usage\",\n  \"use\",\n  \"used\",\n  \"useful\",\n  \"useless\",\n  \"usual\",\n  \"utility\",\n  \"vacant\",\n  \"vacuum\",\n  \"vague\",\n  \"valid\",\n  \"valley\",\n  \"valve\",\n  \"van\",\n  \"vanish\",\n  \"vapor\",\n  \"various\",\n  \"vast\",\n  \"vault\",\n  \"vehicle\",\n  \"velvet\",\n  \"vendor\",\n  \"venture\",\n  \"venue\",\n  \"verb\",\n  \"verify\",\n  \"version\",\n  \"very\",\n  \"vessel\",\n  \"veteran\",\n  \"viable\",\n  \"vibrant\",\n  \"vicious\",\n  \"victory\",\n  \"video\",\n  \"view\",\n  \"village\",\n  \"vintage\",\n  \"violin\",\n  \"virtual\",\n  \"virus\",\n  \"visa\",\n  \"visit\",\n  \"visual\",\n  \"vital\",\n  \"vivid\",\n  \"vocal\",\n  \"voice\",\n  \"void\",\n  \"volcano\",\n  \"volume\",\n  \"vote\",\n  \"voyage\",\n  \"wage\",\n  \"wagon\",\n  \"wait\",\n  \"walk\",\n  \"wall\",\n  \"walnut\",\n  \"want\",\n  \"warfare\",\n  \"warm\",\n  \"warrior\",\n  \"wash\",\n  \"wasp\",\n  \"waste\",\n  \"water\",\n  \"wave\",\n  \"way\",\n  \"wealth\",\n  \"weapon\",\n  \"wear\",\n  \"weasel\",\n  \"weather\",\n  \"web\",\n  \"wedding\",\n  \"weekend\",\n  \"weird\",\n  \"welcome\",\n  \"west\",\n  \"wet\",\n  \"whale\",\n  \"what\",\n  \"wheat\",\n  \"wheel\",\n  \"when\",\n  \"where\",\n  \"whip\",\n  \"whisper\",\n  \"wide\",\n  \"width\",\n  \"wife\",\n  \"wild\",\n  \"will\",\n  \"win\",\n  \"window\",\n  \"wine\",\n  \"wing\",\n  \"wink\",\n  \"winner\",\n  \"winter\",\n  \"wire\",\n  \"wisdom\",\n  \"wise\",\n  \"wish\",\n  \"witness\",\n  \"wolf\",\n  \"woman\",\n  \"wonder\",\n  \"wood\",\n  \"wool\",\n  \"word\",\n  \"work\",\n  \"world\",\n  \"worry\",\n  \"worth\",\n  \"wrap\",\n  \"wreck\",\n  \"wrestle\",\n  \"wrist\",\n  \"write\",\n  \"wrong\",\n  \"yard\",\n  \"year\",\n  \"yellow\",\n  \"you\",\n  \"young\",\n  \"youth\",\n  \"zebra\",\n  \"zero\",\n  \"zone\",\n  \"zoo\"\n];\n\n// src/wordlists/index.ts\nvar Language = /* @__PURE__ */ ((Language2) => {\n  Language2[\"english\"] = \"english\";\n  return Language2;\n})(Language || {});\n\n// src/mnemonic/utils.ts\nimport { ErrorCode as ErrorCode21, FuelError as FuelError23 } from \"@fuel-ts/errors\";\nimport { sha256 as sha2562 } from \"@fuel-ts/hasher\";\nimport { arrayify as arrayify19 } from \"@fuel-ts/utils\";\nfunction getLowerMask(bits) {\n  return (1 << bits) - 1;\n}\n__name(getLowerMask, \"getLowerMask\");\nfunction getUpperMask(bits) {\n  return (1 << bits) - 1 << 8 - bits;\n}\n__name(getUpperMask, \"getUpperMask\");\nfunction getWords(mnemonic) {\n  if (!Array.isArray(mnemonic)) {\n    return mnemonic.split(/\\s+/);\n  }\n  return mnemonic;\n}\n__name(getWords, \"getWords\");\nfunction getPhrase(mnemonic) {\n  if (Array.isArray(mnemonic)) {\n    return mnemonic.join(\" \");\n  }\n  return mnemonic;\n}\n__name(getPhrase, \"getPhrase\");\nfunction entropyToMnemonicIndices(entropy) {\n  const indices = [0];\n  let remainingBits = 11;\n  for (let i = 0; i < entropy.length; i += 1) {\n    if (remainingBits > 8) {\n      indices[indices.length - 1] <<= 8;\n      indices[indices.length - 1] |= entropy[i];\n      remainingBits -= 8;\n    } else {\n      indices[indices.length - 1] <<= remainingBits;\n      indices[indices.length - 1] |= entropy[i] >> 8 - remainingBits;\n      indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n      remainingBits += 3;\n    }\n  }\n  const checksumBits = entropy.length / 4;\n  const checksum = arrayify19(sha2562(entropy))[0] & getUpperMask(checksumBits);\n  indices[indices.length - 1] <<= checksumBits;\n  indices[indices.length - 1] |= checksum >> 8 - checksumBits;\n  return indices;\n}\n__name(entropyToMnemonicIndices, \"entropyToMnemonicIndices\");\nfunction mnemonicWordsToEntropy(words, wordlist) {\n  const size = Math.ceil(11 * words.length / 8);\n  const entropy = arrayify19(new Uint8Array(size));\n  let offset = 0;\n  for (let i = 0; i < words.length; i += 1) {\n    const index = wordlist.indexOf(words[i].normalize(\"NFKD\"));\n    if (index === -1) {\n      throw new FuelError23(\n        ErrorCode21.INVALID_MNEMONIC,\n        `Invalid mnemonic: the word '${words[i]}' is not found in the provided wordlist.`\n      );\n    }\n    for (let bit = 0; bit < 11; bit += 1) {\n      if (index & 1 << 10 - bit) {\n        entropy[offset >> 3] |= 1 << 7 - offset % 8;\n      }\n      offset += 1;\n    }\n  }\n  const entropyBits = 32 * words.length / 3;\n  const checksumBits = words.length / 3;\n  const checksumMask = getUpperMask(checksumBits);\n  const checksum = arrayify19(sha2562(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n  if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n    throw new FuelError23(\n      ErrorCode21.INVALID_CHECKSUM,\n      \"Checksum validation failed for the provided mnemonic.\"\n    );\n  }\n  return entropy.slice(0, entropyBits / 8);\n}\n__name(mnemonicWordsToEntropy, \"mnemonicWordsToEntropy\");\n\n// src/mnemonic/mnemonic.ts\nvar MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\nvar MainnetPRV = \"0x0488ade4\";\nvar TestnetPRV = \"0x04358394\";\nvar MNEMONIC_SIZES = [12, 15, 18, 21, 24];\nfunction assertWordList(wordlist) {\n  if (wordlist.length !== 2048) {\n    throw new FuelError24(\n      ErrorCode22.INVALID_WORD_LIST,\n      `Expected word list length of 2048, but got ${wordlist.length}.`\n    );\n  }\n}\n__name(assertWordList, \"assertWordList\");\nfunction assertEntropy(entropy) {\n  if (entropy.length % 4 !== 0 || entropy.length < 16 || entropy.length > 32) {\n    throw new FuelError24(\n      ErrorCode22.INVALID_ENTROPY,\n      `Entropy should be between 16 and 32 bytes and a multiple of 4, but got ${entropy.length} bytes.`\n    );\n  }\n}\n__name(assertEntropy, \"assertEntropy\");\nfunction assertMnemonic(words) {\n  if (!MNEMONIC_SIZES.includes(words.length)) {\n    const errorMsg = `Invalid mnemonic size. Expected one of [${MNEMONIC_SIZES.join(\n      \", \"\n    )}] words, but got ${words.length}.`;\n    throw new FuelError24(ErrorCode22.INVALID_MNEMONIC, errorMsg);\n  }\n}\n__name(assertMnemonic, \"assertMnemonic\");\nvar Mnemonic = class _Mnemonic {\n  static {\n    __name(this, \"Mnemonic\");\n  }\n  wordlist;\n  /**\n   *\n   * @param wordlist - Provide a wordlist with the list of words used to generate the mnemonic phrase. The default value is the English list.\n   * @returns Mnemonic instance\n   */\n  constructor(wordlist = english) {\n    this.wordlist = wordlist;\n    assertWordList(this.wordlist);\n  }\n  /**\n   *\n   * @param phrase - Mnemonic phrase composed by words from the provided wordlist\n   * @returns Entropy hash\n   */\n  mnemonicToEntropy(phrase) {\n    return _Mnemonic.mnemonicToEntropy(phrase, this.wordlist);\n  }\n  /**\n   *\n   * @param entropy - Entropy source to the mnemonic phrase.\n   * @returns Mnemonic phrase\n   */\n  entropyToMnemonic(entropy) {\n    return _Mnemonic.entropyToMnemonic(entropy, this.wordlist);\n  }\n  /**\n   *\n   * @param phrase - Mnemonic phrase composed by words from the provided wordlist\n   * @param wordlist - Provide a wordlist with the list of words used to generate the mnemonic phrase. The default value is the English list.\n   * @returns Mnemonic phrase\n   */\n  static mnemonicToEntropy(phrase, wordlist = english) {\n    const words = getWords(phrase);\n    assertMnemonic(words);\n    return hexlify22(mnemonicWordsToEntropy(words, wordlist));\n  }\n  /**\n   * @param entropy - Entropy source to the mnemonic phrase.\n   * @param testnet - Inform if should use testnet or mainnet prefix, default value is true (`mainnet`).\n   * @returns 64-byte array contains privateKey and chainCode as described on BIP39\n   */\n  static entropyToMnemonic(entropy, wordlist = english) {\n    const entropyBytes = arrayify20(entropy);\n    assertWordList(wordlist);\n    assertEntropy(entropyBytes);\n    return entropyToMnemonicIndices(entropyBytes).map((i) => wordlist[i]).join(\" \");\n  }\n  /**\n   * @param phrase - Mnemonic phrase composed by words from the provided wordlist\n   * @param passphrase - Add additional security to protect the generated seed with a memorized passphrase. `Note: if the owner forgot the passphrase, all wallets and accounts derive from the phrase will be lost.`\n   * @returns 64-byte array contains privateKey and chainCode as described on BIP39\n   */\n  static mnemonicToSeed(phrase, passphrase = \"\") {\n    assertMnemonic(getWords(phrase));\n    const phraseBytes = toUtf8Bytes(getPhrase(phrase));\n    const salt = toUtf8Bytes(`mnemonic${passphrase}`);\n    return pbkdf2(phraseBytes, salt, 2048, 64, \"sha512\");\n  }\n  /**\n   * @param phrase - Mnemonic phrase composed by words from the provided wordlist\n   * @param passphrase - Add additional security to protect the generated seed with a memorized passphrase. `Note: if the owner forgot the passphrase, all wallets and accounts derive from the phrase will be lost.`\n   * @returns 64-byte array contains privateKey and chainCode as described on BIP39\n   */\n  static mnemonicToMasterKeys(phrase, passphrase = \"\") {\n    const seed = _Mnemonic.mnemonicToSeed(phrase, passphrase);\n    return _Mnemonic.masterKeysFromSeed(seed);\n  }\n  /**\n   * Validates if given mnemonic is  valid\n   * @param phrase - Mnemonic phrase composed by words from the provided wordlist\n   * @returns true if phrase is a valid mnemonic\n   */\n  static isMnemonicValid(phrase) {\n    const words = getWords(phrase);\n    let i = 0;\n    try {\n      assertMnemonic(words);\n    } catch {\n      return false;\n    }\n    while (i < words.length) {\n      if (_Mnemonic.binarySearch(words[i]) === false) {\n        return false;\n      }\n      i += 1;\n    }\n    return true;\n  }\n  static binarySearch(target) {\n    const words = english;\n    let left = 0;\n    let right = words.length - 1;\n    while (left <= right) {\n      const mid = Math.floor((left + right) / 2);\n      if (words[mid] === target) {\n        return true;\n      }\n      if (target < words[mid]) {\n        right = mid - 1;\n      } else {\n        left = mid + 1;\n      }\n    }\n    return false;\n  }\n  /**\n   * @param seed - BIP39 seed\n   * @param testnet - Inform if should use testnet or mainnet prefix, the default value is true (`mainnet`).\n   * @returns 64-byte array contains privateKey and chainCode as described on BIP39\n   */\n  static masterKeysFromSeed(seed) {\n    const seedArray = arrayify20(seed);\n    if (seedArray.length < 16 || seedArray.length > 64) {\n      throw new FuelError24(\n        ErrorCode22.INVALID_SEED,\n        `Seed length should be between 16 and 64 bytes, but received ${seedArray.length} bytes.`\n      );\n    }\n    return arrayify20(computeHmac(\"sha512\", MasterSecret, seedArray));\n  }\n  /**\n   * Get the extendKey as defined on BIP-32 from the provided seed\n   *\n   * @param seed - BIP39 seed\n   * @param testnet - Inform if should use testnet or mainnet prefix, default value is true (`mainnet`).\n   * @returns BIP-32 extended private key\n   */\n  static seedToExtendedKey(seed, testnet = false) {\n    const masterKey = _Mnemonic.masterKeysFromSeed(seed);\n    const prefix = arrayify20(testnet ? TestnetPRV : MainnetPRV);\n    const depth = \"0x00\";\n    const fingerprint = \"0x00000000\";\n    const index = \"0x00000000\";\n    const chainCode = masterKey.slice(32);\n    const privateKey = masterKey.slice(0, 32);\n    const extendedKey = concat6([\n      prefix,\n      depth,\n      fingerprint,\n      index,\n      chainCode,\n      concat6([\"0x00\", privateKey])\n    ]);\n    const checksum = dataSlice(sha2563(sha2563(extendedKey)), 0, 4);\n    return encodeBase58(concat6([extendedKey, checksum]));\n  }\n  /**\n   *  Create a new mnemonic using a randomly generated number as entropy.\n   *  As defined in BIP39, the entropy must be a multiple of 32 bits, and its size must be between 128 and 256 bits.\n   *  Therefore, the possible values for `strength` are 128, 160, 192, 224, and 256.\n   *  If not provided, the default entropy length will be set to 256 bits.\n   *  The return is a list of words that encodes the generated entropy.\n   *\n   *\n   * @param size - Number of bytes used as an entropy\n   * @param extraEntropy - Optional extra entropy to increase randomness\n   * @returns A randomly generated mnemonic\n   */\n  static generate(size = 32, extraEntropy = \"\") {\n    const entropy = extraEntropy ? sha2563(concat6([randomBytes5(size), arrayify20(extraEntropy)])) : randomBytes5(size);\n    return _Mnemonic.entropyToMnemonic(entropy);\n  }\n};\nvar mnemonic_default = Mnemonic;\n\n// src/hdwallet/hdwallet.ts\nvar HARDENED_INDEX = 2147483648;\nvar MainnetPRV2 = hexlify23(\"0x0488ade4\");\nvar MainnetPUB = hexlify23(\"0x0488b21e\");\nvar TestnetPRV2 = hexlify23(\"0x04358394\");\nvar TestnetPUB = hexlify23(\"0x043587cf\");\nfunction base58check(data) {\n  return encodeBase582(concat7([data, dataSlice2(sha2564(sha2564(data)), 0, 4)]));\n}\n__name(base58check, \"base58check\");\nfunction getExtendedKeyPrefix(isPublic = false, testnet = false) {\n  if (isPublic) {\n    return testnet ? TestnetPUB : MainnetPUB;\n  }\n  return testnet ? TestnetPRV2 : MainnetPRV2;\n}\n__name(getExtendedKeyPrefix, \"getExtendedKeyPrefix\");\nfunction isPublicExtendedKey(extendedKey) {\n  return [MainnetPUB, TestnetPUB].includes(hexlify23(extendedKey.slice(0, 4)));\n}\n__name(isPublicExtendedKey, \"isPublicExtendedKey\");\nfunction isValidExtendedKey(extendedKey) {\n  return [MainnetPRV2, TestnetPRV2, MainnetPUB, TestnetPUB].includes(\n    hexlify23(extendedKey.slice(0, 4))\n  );\n}\n__name(isValidExtendedKey, \"isValidExtendedKey\");\nfunction parsePath(path, depth = 0) {\n  const components = path.split(\"/\");\n  if (components.length === 0 || components[0] === \"m\" && depth !== 0) {\n    throw new FuelError25(ErrorCode23.HD_WALLET_ERROR, `invalid path - ${path}`);\n  }\n  if (components[0] === \"m\") {\n    components.shift();\n  }\n  return components.map(\n    (p) => ~p.indexOf(`'`) ? parseInt(p, 10) + HARDENED_INDEX : parseInt(p, 10)\n  );\n}\n__name(parsePath, \"parsePath\");\nvar HDWallet = class _HDWallet {\n  static {\n    __name(this, \"HDWallet\");\n  }\n  depth = 0;\n  index = 0;\n  fingerprint = hexlify23(\"0x00000000\");\n  parentFingerprint = hexlify23(\"0x00000000\");\n  privateKey;\n  publicKey;\n  chainCode;\n  /**\n   * HDWallet is a implementation of the BIP-0044 and BIP-0032, Multi-Account Hierarchy for Deterministic Wallets\n   *\n   * @param config - Wallet configurations\n   */\n  constructor(config) {\n    if (config.privateKey) {\n      const signer = new Signer(config.privateKey);\n      this.publicKey = hexlify23(signer.compressedPublicKey);\n      this.privateKey = hexlify23(config.privateKey);\n    } else {\n      if (!config.publicKey) {\n        throw new FuelError25(\n          ErrorCode23.HD_WALLET_ERROR,\n          \"Both public and private Key cannot be missing. At least one should be provided.\"\n        );\n      }\n      this.publicKey = hexlify23(config.publicKey);\n    }\n    this.parentFingerprint = config.parentFingerprint || this.parentFingerprint;\n    this.fingerprint = dataSlice2(ripemd160(sha2564(this.publicKey)), 0, 4);\n    this.depth = config.depth || this.depth;\n    this.index = config.index || this.index;\n    this.chainCode = config.chainCode;\n  }\n  get extendedKey() {\n    return this.toExtendedKey();\n  }\n  /**\n   * Derive the current HDWallet instance navigating only on the index.\n   * `Ex.: m/44'/0 -> Ex.: m/44'/1 -> m/44'/2`. [Learn more](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)\n   *\n   * @param index - Index of the child HDWallet.\n   * @returns A new instance of HDWallet on the derived index\n   */\n  deriveIndex(index) {\n    const privateKey = this.privateKey && arrayify21(this.privateKey);\n    const publicKey = arrayify21(this.publicKey);\n    const chainCode = arrayify21(this.chainCode);\n    const data = new Uint8Array(37);\n    if (index & HARDENED_INDEX) {\n      if (!privateKey) {\n        throw new FuelError25(\n          ErrorCode23.HD_WALLET_ERROR,\n          \"Cannot derive a hardened index without a private Key.\"\n        );\n      }\n      data.set(privateKey, 1);\n    } else {\n      data.set(arrayify21(this.publicKey));\n    }\n    data.set(toBytes3(index, 4), 33);\n    const bytes = arrayify21(computeHmac2(\"sha512\", chainCode, data));\n    const IL = bytes.slice(0, 32);\n    const IR = bytes.slice(32);\n    if (privateKey) {\n      const N = \"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\";\n      const ki = bn22(IL).add(privateKey).mod(N).toBytes(32);\n      return new _HDWallet({\n        privateKey: ki,\n        chainCode: IR,\n        index,\n        depth: this.depth + 1,\n        parentFingerprint: this.fingerprint\n      });\n    }\n    const signer = new Signer(hexlify23(IL));\n    const Ki = signer.addPoint(publicKey);\n    return new _HDWallet({\n      publicKey: Ki,\n      chainCode: IR,\n      index,\n      depth: this.depth + 1,\n      parentFingerprint: this.fingerprint\n    });\n  }\n  /**\n   * Derive the current HDWallet instance to the path. [Learn more](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)\n   *\n   * @param path - The string representation of the child HDWallet. `Ex.: m/44'/0'/0'/0/0`\n   * @returns A new instance of HDWallet on the derived path\n   */\n  derivePath(path) {\n    const paths = parsePath(path, this.depth);\n    return paths.reduce((hdwallet, index) => hdwallet.deriveIndex(index), this);\n  }\n  /**\n   * Get the extendKey as defined on BIP-32 from the provided seed\n   *\n   * @param isPublic - enable to export public extendedKey, it not required when HDWallet didn't have the privateKey.\n   * @param testnet - Inform if should use testnet or mainnet prefix, default value is true (`mainnet`).\n   * @returns BIP-32 extended private key\n   */\n  toExtendedKey(isPublic = false, testnet = false) {\n    if (this.depth >= 256) {\n      throw new FuelError25(\n        ErrorCode23.HD_WALLET_ERROR,\n        `Exceeded max depth of 255. Current depth: ${this.depth}.`\n      );\n    }\n    const prefix = getExtendedKeyPrefix(this.privateKey == null || isPublic, testnet);\n    const depth = hexlify23(Uint8Array.from([this.depth]));\n    const parentFingerprint = this.parentFingerprint;\n    const index = toHex(this.index, 4);\n    const chainCode = this.chainCode;\n    const key = this.privateKey != null && !isPublic ? concat7([\"0x00\", this.privateKey]) : this.publicKey;\n    const extendedKey = arrayify21(concat7([prefix, depth, parentFingerprint, index, chainCode, key]));\n    return base58check(extendedKey);\n  }\n  /**\n   * Create HDWallet instance from seed\n   *\n   * @param seed - Seed\n   * @returns A new instance of HDWallet\n   */\n  static fromSeed(seed) {\n    const masterKey = mnemonic_default.masterKeysFromSeed(seed);\n    return new _HDWallet({\n      chainCode: arrayify21(masterKey.slice(32)),\n      privateKey: arrayify21(masterKey.slice(0, 32))\n    });\n  }\n  static fromExtendedKey(extendedKey) {\n    const decoded = hexlify23(toBytes3(decodeBase58(extendedKey)));\n    const bytes = arrayify21(decoded);\n    const validChecksum = base58check(bytes.slice(0, 78)) === extendedKey;\n    if (bytes.length !== 82 || !isValidExtendedKey(bytes)) {\n      throw new FuelError25(ErrorCode23.HD_WALLET_ERROR, \"Provided key is not a valid extended key.\");\n    }\n    if (!validChecksum) {\n      throw new FuelError25(ErrorCode23.HD_WALLET_ERROR, \"Provided key has an invalid checksum.\");\n    }\n    const depth = bytes[4];\n    const parentFingerprint = hexlify23(bytes.slice(5, 9));\n    const index = parseInt(hexlify23(bytes.slice(9, 13)).substring(2), 16);\n    const chainCode = hexlify23(bytes.slice(13, 45));\n    const key = bytes.slice(45, 78);\n    if (depth === 0 && parentFingerprint !== \"0x00000000\" || depth === 0 && index !== 0) {\n      throw new FuelError25(\n        ErrorCode23.HD_WALLET_ERROR,\n        \"Inconsistency detected: Depth is zero but fingerprint/index is non-zero.\"\n      );\n    }\n    if (isPublicExtendedKey(bytes)) {\n      if (key[0] !== 3) {\n        throw new FuelError25(ErrorCode23.HD_WALLET_ERROR, \"Invalid public extended key.\");\n      }\n      return new _HDWallet({\n        publicKey: key,\n        chainCode,\n        index,\n        depth,\n        parentFingerprint\n      });\n    }\n    if (key[0] !== 0) {\n      throw new FuelError25(ErrorCode23.HD_WALLET_ERROR, \"Invalid private extended key.\");\n    }\n    return new _HDWallet({\n      privateKey: key.slice(1),\n      chainCode,\n      index,\n      depth,\n      parentFingerprint\n    });\n  }\n};\nvar hdwallet_default = HDWallet;\n\n// src/wallet/wallets.ts\nvar WalletLocked = class extends Account {\n  static {\n    __name(this, \"WalletLocked\");\n  }\n  /**\n   * Unlocks the wallet using the provided private key and returns an instance of WalletUnlocked.\n   *\n   * @param privateKey - The private key used to unlock the wallet.\n   * @returns An instance of WalletUnlocked.\n   */\n  unlock(privateKey) {\n    return new WalletUnlocked(privateKey, this._provider);\n  }\n};\nvar WalletUnlocked = class _WalletUnlocked extends BaseWalletUnlocked {\n  static {\n    __name(this, \"WalletUnlocked\");\n  }\n  /**\n   * Locks the wallet and returns an instance of WalletLocked.\n   *\n   * @returns An instance of WalletLocked.\n   */\n  lock() {\n    this.signer = () => new Signer(\"0x00\");\n    return new WalletLocked(this.address, this._provider);\n  }\n  /**\n   * Generate a new Wallet Unlocked with a random key pair.\n   *\n   * @param generateOptions - Options to customize the generation process (optional).\n   * @returns An instance of WalletUnlocked.\n   */\n  static generate(generateOptions) {\n    const privateKey = Signer.generatePrivateKey(generateOptions?.entropy);\n    return new _WalletUnlocked(privateKey, generateOptions?.provider);\n  }\n  /**\n   * Create a Wallet Unlocked from a seed.\n   *\n   * @param seed - The seed phrase.\n   * @param provider - A Provider instance (optional).\n   * @param path - The derivation path (optional).\n   * @returns An instance of WalletUnlocked.\n   */\n  static fromSeed(seed, path, provider) {\n    const hdWallet = hdwallet_default.fromSeed(seed);\n    const childWallet = hdWallet.derivePath(path || _WalletUnlocked.defaultPath);\n    return new _WalletUnlocked(childWallet.privateKey, provider);\n  }\n  /**\n   * Create a Wallet Unlocked from a mnemonic phrase.\n   *\n   * @param mnemonic - The mnemonic phrase.\n   * @param provider - A Provider instance (optional).\n   * @param path - The derivation path (optional).\n   * @param passphrase - The passphrase for the mnemonic (optional).\n   * @returns An instance of WalletUnlocked.\n   */\n  static fromMnemonic(mnemonic, path, passphrase, provider) {\n    const seed = mnemonic_default.mnemonicToSeed(mnemonic, passphrase);\n    const hdWallet = hdwallet_default.fromSeed(seed);\n    const childWallet = hdWallet.derivePath(path || _WalletUnlocked.defaultPath);\n    return new _WalletUnlocked(childWallet.privateKey, provider);\n  }\n  /**\n   * Create a Wallet Unlocked from an extended key.\n   *\n   * @param extendedKey - The extended key.\n   * @param provider - A Provider instance (optional).\n   * @returns An instance of WalletUnlocked.\n   */\n  static fromExtendedKey(extendedKey, provider) {\n    const hdWallet = hdwallet_default.fromExtendedKey(extendedKey);\n    return new _WalletUnlocked(hdWallet.privateKey, provider);\n  }\n  /**\n   * Create a Wallet Unlocked from an encrypted JSON.\n   *\n   * @param jsonWallet - The encrypted JSON keystore.\n   * @param password - The password to decrypt the JSON.\n   * @param provider - A Provider instance (optional).\n   * @returns An unlocked wallet instance.\n   */\n  static async fromEncryptedJson(jsonWallet, password, provider) {\n    const privateKey = await decryptKeystoreWallet(jsonWallet, password);\n    return new _WalletUnlocked(privateKey, provider);\n  }\n};\n\n// src/wallet/wallet.ts\nvar Wallet = class {\n  static {\n    __name(this, \"Wallet\");\n  }\n  /**\n   * Creates a locked wallet instance from an address and a provider.\n   *\n   * @param address - The address of the wallet.\n   * @param provider - A Provider instance (optional).\n   * @returns A locked wallet instance.\n   */\n  static fromAddress(address, provider) {\n    return new WalletLocked(address, provider);\n  }\n  /**\n   * Creates an unlocked wallet instance from a private key and a provider.\n   *\n   * @param privateKey - The private key of the wallet.\n   * @param provider - A Provider instance (optional).\n   * @returns An unlocked wallet instance.\n   */\n  static fromPrivateKey(privateKey, provider) {\n    return new WalletUnlocked(privateKey, provider);\n  }\n  /**\n   * Generate a new Wallet Unlocked with a random key pair.\n   *\n   * @param generateOptions - Options to customize the generation process (optional).\n   * @returns An unlocked wallet instance.\n   */\n  static generate = WalletUnlocked.generate;\n  /**\n   * Create a Wallet Unlocked from a seed.\n   *\n   * @param seed - The seed phrase.\n   * @param provider - A Provider instance (optional).\n   * @param path - The derivation path (optional).\n   * @returns An unlocked wallet instance.\n   */\n  static fromSeed = WalletUnlocked.fromSeed;\n  /**\n   * Create a Wallet Unlocked from a mnemonic phrase.\n   *\n   * @param mnemonic - The mnemonic phrase.\n   * @param provider - A Provider instance (optional).\n   * @param path - The derivation path (optional).\n   * @param passphrase - The passphrase for the mnemonic (optional).\n   * @returns An unlocked wallet instance.\n   */\n  static fromMnemonic = WalletUnlocked.fromMnemonic;\n  /**\n   * Create a Wallet Unlocked from an extended key.\n   *\n   * @param extendedKey - The extended key.\n   * @param provider - A Provider instance (optional).\n   * @returns An unlocked wallet instance.\n   */\n  static fromExtendedKey = WalletUnlocked.fromExtendedKey;\n  /**\n   * Create a Wallet Unlocked from an encrypted JSON.\n   *\n   * @param jsonWallet - The encrypted JSON keystore.\n   * @param password - The password to decrypt the JSON.\n   * @param provider - A Provider instance (optional).\n   * @returns An unlocked wallet instance.\n   */\n  static fromEncryptedJson = WalletUnlocked.fromEncryptedJson;\n};\n\n// src/wallet-manager/wallet-manager.ts\nimport { Address as Address9 } from \"@fuel-ts/address\";\nimport { encrypt, decrypt } from \"@fuel-ts/crypto\";\nimport { ErrorCode as ErrorCode26, FuelError as FuelError28 } from \"@fuel-ts/errors\";\nimport { EventEmitter } from \"events\";\n\n// src/wallet-manager/storages/memory-storage.ts\nvar MemoryStorage = class {\n  static {\n    __name(this, \"MemoryStorage\");\n  }\n  storage = /* @__PURE__ */ new Map();\n  async getItem(key) {\n    const item = await this.storage.get(key);\n    return item;\n  }\n  async setItem(key, value) {\n    await this.storage.set(key, value);\n  }\n  async removeItem(key) {\n    await this.storage.delete(key);\n  }\n  async clear() {\n    await this.storage.clear();\n  }\n};\n\n// src/wallet-manager/vaults/mnemonic-vault.ts\nimport { Address as Address7 } from \"@fuel-ts/address\";\nimport { ErrorCode as ErrorCode24, FuelError as FuelError26 } from \"@fuel-ts/errors\";\nvar MnemonicVault = class {\n  static {\n    __name(this, \"MnemonicVault\");\n  }\n  static type = \"mnemonic\";\n  #secret;\n  pathKey = \"{}\";\n  rootPath = `m/44'/1179993420'/${this.pathKey}'/0/0`;\n  numberOfAccounts = 0;\n  constructor(options) {\n    this.#secret = options.secret || mnemonic_default.generate();\n    this.rootPath = options.rootPath || this.rootPath;\n    this.numberOfAccounts = options.numberOfAccounts || 1;\n  }\n  getDerivePath(index) {\n    if (this.rootPath.includes(this.pathKey)) {\n      return this.rootPath.replace(this.pathKey, String(index));\n    }\n    return `${this.rootPath}/${index}`;\n  }\n  serialize() {\n    return {\n      secret: this.#secret,\n      rootPath: this.rootPath,\n      numberOfAccounts: this.numberOfAccounts\n    };\n  }\n  getAccounts() {\n    const accounts = [];\n    let numberOfAccounts = 0;\n    do {\n      const wallet = Wallet.fromMnemonic(this.#secret, this.getDerivePath(numberOfAccounts));\n      accounts.push({\n        publicKey: wallet.publicKey,\n        address: wallet.address\n      });\n      numberOfAccounts += 1;\n    } while (numberOfAccounts < this.numberOfAccounts);\n    return accounts;\n  }\n  addAccount() {\n    this.numberOfAccounts += 1;\n    const wallet = Wallet.fromMnemonic(this.#secret, this.getDerivePath(this.numberOfAccounts - 1));\n    return {\n      publicKey: wallet.publicKey,\n      address: wallet.address\n    };\n  }\n  exportAccount(address) {\n    let numberOfAccounts = 0;\n    const ownerAddress = new Address7(address);\n    do {\n      const wallet = Wallet.fromMnemonic(this.#secret, this.getDerivePath(numberOfAccounts));\n      if (wallet.address.equals(ownerAddress)) {\n        return wallet.privateKey;\n      }\n      numberOfAccounts += 1;\n    } while (numberOfAccounts < this.numberOfAccounts);\n    throw new FuelError26(\n      ErrorCode24.WALLET_MANAGER_ERROR,\n      `Account with address '${address}' not found in derived wallets.`\n    );\n  }\n  getWallet(address) {\n    const privateKey = this.exportAccount(address);\n    return Wallet.fromPrivateKey(privateKey);\n  }\n};\n\n// src/wallet-manager/vaults/privatekey-vault.ts\nimport { Address as Address8 } from \"@fuel-ts/address\";\nimport { ErrorCode as ErrorCode25, FuelError as FuelError27 } from \"@fuel-ts/errors\";\nvar PrivateKeyVault = class {\n  static {\n    __name(this, \"PrivateKeyVault\");\n  }\n  static type = \"privateKey\";\n  #privateKeys = [];\n  /**\n   * If privateKey vault is initialized with a secretKey, it creates\n   * one account with the fallowing secret\n   */\n  constructor(options = {}) {\n    if (options.secret) {\n      this.#privateKeys = [options.secret];\n    } else {\n      this.#privateKeys = options.accounts || [Wallet.generate().privateKey];\n    }\n  }\n  serialize() {\n    return {\n      accounts: this.#privateKeys\n    };\n  }\n  getPublicAccount(privateKey) {\n    const wallet = Wallet.fromPrivateKey(privateKey);\n    return {\n      address: wallet.address,\n      publicKey: wallet.publicKey\n    };\n  }\n  getAccounts() {\n    return this.#privateKeys.map((pk) => this.getPublicAccount(pk));\n  }\n  addAccount() {\n    const wallet = Wallet.generate();\n    this.#privateKeys.push(wallet.privateKey);\n    return this.getPublicAccount(wallet.privateKey);\n  }\n  exportAccount(address) {\n    const ownerAddress = new Address8(address);\n    const privateKey = this.#privateKeys.find(\n      (pk) => Wallet.fromPrivateKey(pk).address.equals(ownerAddress)\n    );\n    if (!privateKey) {\n      throw new FuelError27(\n        ErrorCode25.WALLET_MANAGER_ERROR,\n        `No private key found for address '${address}'.`\n      );\n    }\n    return privateKey;\n  }\n  getWallet(address) {\n    const privateKey = this.exportAccount(address);\n    return Wallet.fromPrivateKey(privateKey);\n  }\n};\n\n// src/wallet-manager/wallet-manager.ts\nvar ERROR_MESSAGES = {\n  invalid_vault_type: \"The provided Vault type is invalid.\",\n  address_not_found: \"No private key found for address the specified wallet address.\",\n  vault_not_found: \"The specified vault was not found.\",\n  wallet_not_unlocked: \"The wallet is currently locked.\",\n  passphrase_not_match: \"The provided passphrase did not match the expected value.\"\n};\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new FuelError28(ErrorCode26.WALLET_MANAGER_ERROR, message);\n  }\n}\n__name(assert, \"assert\");\nvar WalletManager = class _WalletManager extends EventEmitter {\n  static {\n    __name(this, \"WalletManager\");\n  }\n  /**\n   * Vaults\n   *\n   * Vaults are responsible to store secret keys and return an `Wallet` instance,\n   * to interact with the network.\n   *\n   * Each vault has access to its own state\n   *\n   */\n  static Vaults = [MnemonicVault, PrivateKeyVault];\n  /**\n   * Storage\n   *\n   * Persistent encrypted data. `The default storage works only on memory`.\n   */\n  storage = new MemoryStorage();\n  /* Key name passed to the storage */\n  STORAGE_KEY = \"WalletManager\";\n  // `This variables are only accessible from inside the class`\n  #vaults = [];\n  #passphrase = \"\";\n  #isLocked = true;\n  constructor(options) {\n    super();\n    this.storage = options?.storage || this.storage;\n  }\n  get isLocked() {\n    return this.#isLocked;\n  }\n  /**\n   * Return the vault serialized object containing all the privateKeys,\n   * the format of the return depends on the Vault type.\n   */\n  exportVault(vaultId) {\n    assert(!this.#isLocked, ERROR_MESSAGES.wallet_not_unlocked);\n    const vaultState = this.#vaults.find((_, idx) => idx === vaultId);\n    assert(vaultState, ERROR_MESSAGES.vault_not_found);\n    return vaultState.vault.serialize();\n  }\n  /**\n   * List all vaults on the Wallet Manager, this function not return secret's\n   */\n  getVaults() {\n    return this.#vaults.map((v, idx) => ({\n      title: v.title,\n      type: v.type,\n      vaultId: idx\n    }));\n  }\n  /**\n   * List all accounts on the Wallet Manager not vault information is revealed\n   */\n  getAccounts() {\n    return this.#vaults.flatMap(\n      (vaultState, vaultId) => vaultState.vault.getAccounts().map((account) => ({ ...account, vaultId }))\n    );\n  }\n  /**\n   * Create a Wallet instance for the specific account\n   */\n  getWallet(address) {\n    const ownerAddress = new Address9(address);\n    const vaultState = this.#vaults.find(\n      (vs) => vs.vault.getAccounts().find((a) => a.address.equals(ownerAddress))\n    );\n    assert(vaultState, ERROR_MESSAGES.address_not_found);\n    return vaultState.vault.getWallet(ownerAddress);\n  }\n  /**\n   * Export specific account privateKey\n   */\n  exportPrivateKey(address) {\n    const ownerAddress = new Address9(address);\n    assert(!this.#isLocked, ERROR_MESSAGES.wallet_not_unlocked);\n    const vaultState = this.#vaults.find(\n      (vs) => vs.vault.getAccounts().find((a) => a.address.equals(ownerAddress))\n    );\n    assert(vaultState, ERROR_MESSAGES.address_not_found);\n    return vaultState.vault.exportAccount(ownerAddress);\n  }\n  /**\n   * Add account to a selected vault or on the first vault as default.\n   * If not vaults are adds it will return error\n   */\n  async addAccount(options) {\n    await this.loadState();\n    const vaultState = this.#vaults[options?.vaultId || 0];\n    await assert(vaultState, ERROR_MESSAGES.vault_not_found);\n    const account = vaultState.vault.addAccount();\n    await this.saveState();\n    return account;\n  }\n  /**\n   * Remove vault by index, by remove the vault you also remove all accounts\n   * created by the vault.\n   */\n  async removeVault(index) {\n    this.#vaults.splice(index, 1);\n    await this.saveState();\n  }\n  /**\n   * Add Vault, the `vaultConfig.type` will look for the Vaults supported if\n   * didn't found it will throw.\n   */\n  async addVault(vaultConfig) {\n    await this.loadState();\n    const Vault2 = this.getVaultClass(vaultConfig.type);\n    const vault = new Vault2(vaultConfig);\n    this.#vaults = this.#vaults.concat({\n      title: vaultConfig.title,\n      type: vaultConfig.type,\n      vault\n    });\n    await this.saveState();\n  }\n  /**\n   * Lock wallet. It removes passphrase from class instance, encrypt and hide all address and\n   * secrets.\n   */\n  lock() {\n    this.#isLocked = true;\n    this.#vaults = [];\n    this.#passphrase = \"\";\n    this.emit(\"lock\");\n  }\n  /**\n   * Unlock wallet. It sets passphrase on WalletManger instance load all address from configured vaults.\n   * Vaults with secrets are not unlocked or instantiated on this moment.\n   */\n  async unlock(passphrase) {\n    this.#passphrase = passphrase;\n    this.#isLocked = false;\n    try {\n      await this.loadState();\n      this.emit(\"unlock\");\n    } catch (err) {\n      await this.lock();\n      throw err;\n    }\n  }\n  /**\n   * Update WalletManager encryption passphrase\n   */\n  async updatePassphrase(oldpass, newpass) {\n    const isLocked = this.#isLocked;\n    await this.unlock(oldpass);\n    this.#passphrase = newpass;\n    await this.saveState();\n    await this.loadState();\n    if (isLocked) {\n      await this.lock();\n    }\n  }\n  /**\n   * Retrieve and decrypt WalletManager state from storage\n   */\n  async loadState() {\n    await assert(!this.#isLocked, ERROR_MESSAGES.wallet_not_unlocked);\n    const data = await this.storage.getItem(this.STORAGE_KEY);\n    if (data) {\n      const state = await decrypt(this.#passphrase, JSON.parse(data));\n      this.#vaults = this.#deserializeVaults(state.vaults);\n    }\n  }\n  /**\n   * Store encrypted WalletManager state on storage\n   */\n  async saveState() {\n    await assert(!this.#isLocked, ERROR_MESSAGES.wallet_not_unlocked);\n    const encryptedData = await encrypt(this.#passphrase, {\n      vaults: this.#serializeVaults(this.#vaults)\n    });\n    await this.storage.setItem(this.STORAGE_KEY, JSON.stringify(encryptedData));\n    this.emit(\"update\");\n  }\n  /**\n   * Serialize all vaults to store\n   *\n   * `This is only accessible from inside the class`\n   */\n  #serializeVaults(vaults) {\n    return vaults.map(({ title, type, vault }) => ({\n      title,\n      type,\n      data: vault.serialize()\n    }));\n  }\n  /**\n   * Deserialize all vaults to state\n   *\n   * `This is only accessible from inside the class`\n   */\n  #deserializeVaults(vaults) {\n    return vaults.map(({ title, type, data: vaultConfig }) => {\n      const VaultClass = this.getVaultClass(type);\n      return {\n        title,\n        type,\n        vault: new VaultClass(vaultConfig)\n      };\n    });\n  }\n  /**\n   * Return a instantiable Class reference from `WalletManager.Vaults` supported list.\n   */\n  getVaultClass(type) {\n    const VaultClass = _WalletManager.Vaults.find((v) => v.type === type);\n    assert(VaultClass, ERROR_MESSAGES.invalid_vault_type);\n    return VaultClass;\n  }\n};\n\n// src/wallet-manager/types.ts\nimport { ErrorCode as ErrorCode27, FuelError as FuelError29 } from \"@fuel-ts/errors\";\nvar Vault = class {\n  static {\n    __name(this, \"Vault\");\n  }\n  static type;\n  constructor(_options) {\n    throw new FuelError29(ErrorCode27.NOT_IMPLEMENTED, \"Not implemented.\");\n  }\n  serialize() {\n    throw new FuelError29(ErrorCode27.NOT_IMPLEMENTED, \"Not implemented.\");\n  }\n  getAccounts() {\n    throw new FuelError29(ErrorCode27.NOT_IMPLEMENTED, \"Not implemented.\");\n  }\n  addAccount() {\n    throw new FuelError29(ErrorCode27.NOT_IMPLEMENTED, \"Not implemented.\");\n  }\n  exportAccount(_address) {\n    throw new FuelError29(ErrorCode27.NOT_IMPLEMENTED, \"Not implemented.\");\n  }\n  getWallet(_address) {\n    throw new FuelError29(ErrorCode27.NOT_IMPLEMENTED, \"Not implemented.\");\n  }\n};\nvar StorageAbstract = class {\n  static {\n    __name(this, \"StorageAbstract\");\n  }\n};\n\n// src/predicate/predicate.ts\nimport { Interface as Interface5 } from \"@fuel-ts/abi-coder\";\nimport { Address as Address10 } from \"@fuel-ts/address\";\nimport { ErrorCode as ErrorCode29, FuelError as FuelError31 } from \"@fuel-ts/errors\";\nimport { arrayify as arrayify24, hexlify as hexlify25 } from \"@fuel-ts/utils\";\n\n// src/utils/deployScriptOrPredicate.ts\nimport { FuelError as FuelError30, ErrorCode as ErrorCode28 } from \"@fuel-ts/errors\";\nimport { arrayify as arrayify22 } from \"@fuel-ts/utils\";\n\n// src/utils/predicate-script-loader-instructions.ts\nimport { BigNumberCoder as BigNumberCoder4 } from \"@fuel-ts/abi-coder\";\nimport { sha256 as sha2565 } from \"@fuel-ts/hasher\";\nimport { concat as concat8 } from \"@fuel-ts/utils\";\nimport * as asm2 from \"@fuels/vm-asm\";\nvar BLOB_ID_SIZE = 32;\nvar REG_ADDRESS_OF_DATA_AFTER_CODE = 16;\nvar REG_START_OF_LOADED_CODE = 17;\nvar REG_GENERAL_USE = 18;\nvar WORD_SIZE2 = 8;\nvar DATA_OFFSET_INDEX = 8;\nvar CONFIGURABLE_OFFSET_INDEX = 16;\nfunction getBytecodeDataOffset(bytecode) {\n  const [offset] = new BigNumberCoder4(\"u64\").decode(bytecode, DATA_OFFSET_INDEX);\n  return offset.toNumber();\n}\n__name(getBytecodeDataOffset, \"getBytecodeDataOffset\");\nfunction getBytecodeConfigurableOffset(bytecode) {\n  const [offset] = new BigNumberCoder4(\"u64\").decode(bytecode, CONFIGURABLE_OFFSET_INDEX);\n  return offset.toNumber();\n}\n__name(getBytecodeConfigurableOffset, \"getBytecodeConfigurableOffset\");\nfunction getBytecodeId(bytecode) {\n  const configurableOffset = getBytecodeConfigurableOffset(bytecode);\n  const byteCodeWithoutConfigurableSection = bytecode.slice(0, configurableOffset);\n  return sha2565(byteCodeWithoutConfigurableSection);\n}\n__name(getBytecodeId, \"getBytecodeId\");\nfunction getLegacyBlobId(bytecode) {\n  const dataOffset = getBytecodeDataOffset(bytecode);\n  const byteCodeWithoutDataSection = bytecode.slice(0, dataOffset);\n  return sha2565(byteCodeWithoutDataSection);\n}\n__name(getLegacyBlobId, \"getLegacyBlobId\");\nfunction getPredicateScriptLoaderInstructions(originalBinary, blobId) {\n  const { RegId, Instruction } = asm2;\n  const REG_PC = RegId.pc().to_u8();\n  const REG_SP = RegId.sp().to_u8();\n  const REG_IS = RegId.is().to_u8();\n  const getInstructions = /* @__PURE__ */ __name((numOfInstructions2) => [\n    // 1. Load the blob content into memory\n    // Find the start of the hardcoded blob ID, which is located after the loader code ends.\n    asm2.move_(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_PC),\n    // hold the address of the blob ID.\n    asm2.addi(\n      REG_ADDRESS_OF_DATA_AFTER_CODE,\n      REG_ADDRESS_OF_DATA_AFTER_CODE,\n      numOfInstructions2 * Instruction.size()\n    ),\n    // The code is going to be loaded from the current value of SP onwards, save\n    // the location into REG_START_OF_LOADED_CODE so we can jump into it at the end.\n    asm2.move_(REG_START_OF_LOADED_CODE, REG_SP),\n    // REG_GENERAL_USE to hold the size of the blob.\n    asm2.bsiz(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE),\n    // Push the blob contents onto the stack.\n    asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 1),\n    // Move on to the data section length\n    asm2.addi(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_ADDRESS_OF_DATA_AFTER_CODE, BLOB_ID_SIZE),\n    // load the size of the data section into REG_GENERAL_USE\n    asm2.lw(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE, 0),\n    // after we have read the length of the data section, we move the pointer to the actual\n    // data by skipping WORD_SIZE bytes.\n    asm2.addi(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_ADDRESS_OF_DATA_AFTER_CODE, WORD_SIZE2),\n    // load the data section of the executable\n    asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 2),\n    // Jump into the memory where the contract is loaded.\n    // What follows is called _jmp_mem by the sway compiler.\n    // Subtract the address contained in IS because jmp will add it back.\n    asm2.sub(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, REG_IS),\n    // jmp will multiply by 4, so we need to divide to cancel that out.\n    asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),\n    // Jump to the start of the contract we loaded.\n    asm2.jmp(REG_START_OF_LOADED_CODE)\n  ], \"getInstructions\");\n  const getInstructionsNoDataSection = /* @__PURE__ */ __name((numOfInstructions2) => [\n    // 1. Load the blob content into memory\n    // Find the start of the hardcoded blob ID, which is located after the loader code ends.\n    // 1. Load the blob content into memory\n    // Find the start of the hardcoded blob ID, which is located after the loader code ends.\n    asm2.move_(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_PC),\n    // hold the address of the blob ID.\n    asm2.addi(\n      REG_ADDRESS_OF_DATA_AFTER_CODE,\n      REG_ADDRESS_OF_DATA_AFTER_CODE,\n      numOfInstructions2 * Instruction.size()\n    ),\n    // The code is going to be loaded from the current value of SP onwards, save\n    // the location into REG_START_OF_LOADED_CODE so we can jump into it at the end.\n    asm2.move_(REG_START_OF_LOADED_CODE, REG_SP),\n    // REG_GENERAL_USE to hold the size of the blob.\n    asm2.bsiz(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE),\n    // Push the blob contents onto the stack.\n    asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 1),\n    // Jump into the memory where the contract is loaded.\n    // What follows is called _jmp_mem by the sway compiler.\n    // Subtract the address contained in IS because jmp will add it back.\n    asm2.sub(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, REG_IS),\n    // jmp will multiply by 4, so we need to divide to cancel that out.\n    asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),\n    // Jump to the start of the contract we loaded.\n    asm2.jmp(REG_START_OF_LOADED_CODE)\n  ], \"getInstructionsNoDataSection\");\n  const offset = getBytecodeConfigurableOffset(originalBinary);\n  if (originalBinary.length < offset) {\n    throw new Error(\n      `Data section offset is out of bounds, offset: ${offset}, binary length: ${originalBinary.length}`\n    );\n  }\n  const configurableSection = originalBinary.slice(offset);\n  if (configurableSection.length > 0) {\n    const numOfInstructions2 = getInstructions(0).length;\n    if (numOfInstructions2 > 65535) {\n      throw new Error(\"Too many instructions, exceeding u16::MAX.\");\n    }\n    const instructionBytes2 = new Uint8Array(\n      getInstructions(numOfInstructions2).flatMap(\n        (instruction) => Array.from(instruction.to_bytes())\n      )\n    );\n    const blobBytes2 = new Uint8Array(blobId);\n    const dataSectionLenBytes = new Uint8Array(8);\n    const dataView = new DataView(dataSectionLenBytes.buffer);\n    dataView.setBigUint64(0, BigInt(configurableSection.length), false);\n    const loaderBytecode2 = new Uint8Array([\n      ...instructionBytes2,\n      ...blobBytes2,\n      ...dataSectionLenBytes\n    ]);\n    return {\n      loaderBytecode: concat8([loaderBytecode2, configurableSection]),\n      blobOffset: loaderBytecode2.length\n    };\n  }\n  const numOfInstructions = getInstructionsNoDataSection(0).length;\n  if (numOfInstructions > 65535) {\n    throw new Error(\"Too many instructions, exceeding u16::MAX.\");\n  }\n  const instructionBytes = new Uint8Array(\n    getInstructionsNoDataSection(numOfInstructions).flatMap(\n      (instruction) => Array.from(instruction.to_bytes())\n    )\n  );\n  const blobBytes = new Uint8Array(blobId);\n  const loaderBytecode = new Uint8Array([...instructionBytes, ...blobBytes]);\n  return { loaderBytecode };\n}\n__name(getPredicateScriptLoaderInstructions, \"getPredicateScriptLoaderInstructions\");\n\n// src/utils/deployScriptOrPredicate.ts\nasync function fundBlobTx(deployer, blobTxRequest) {\n  const { assembledRequest } = await deployer.provider.assembleTx({\n    request: blobTxRequest,\n    feePayerAccount: deployer,\n    accountCoinQuantities: []\n  });\n  return assembledRequest;\n}\n__name(fundBlobTx, \"fundBlobTx\");\nfunction adjustConfigurableOffsets(jsonAbi, configurableOffsetDiff) {\n  const { configurables: readOnlyConfigurables } = jsonAbi;\n  const configurables = [];\n  readOnlyConfigurables.forEach((config) => {\n    configurables.push({ ...config, offset: config.offset - configurableOffsetDiff });\n  });\n  return { ...jsonAbi, configurables };\n}\n__name(adjustConfigurableOffsets, \"adjustConfigurableOffsets\");\nasync function deployScriptOrPredicate({\n  deployer,\n  bytecode,\n  abi,\n  loaderInstanceCallback\n}) {\n  const blobId = getBytecodeId(arrayify22(bytecode));\n  const configurableOffset = getBytecodeConfigurableOffset(arrayify22(bytecode));\n  const byteCodeWithoutConfigurableSection = bytecode.slice(0, configurableOffset);\n  const blobTxRequest = new BlobTransactionRequest({\n    blobId,\n    witnessIndex: 0,\n    witnesses: [byteCodeWithoutConfigurableSection]\n  });\n  const { loaderBytecode, blobOffset } = getPredicateScriptLoaderInstructions(\n    arrayify22(bytecode),\n    arrayify22(blobId)\n  );\n  const newConfigurableOffsetDiff = byteCodeWithoutConfigurableSection.length - (blobOffset || 0);\n  const newAbi = adjustConfigurableOffsets(abi, newConfigurableOffsetDiff);\n  const blobExists = (await deployer.provider.getBlobs([blobId])).length > 0;\n  const loaderInstance = loaderInstanceCallback(loaderBytecode, newAbi);\n  if (blobExists) {\n    return {\n      waitForResult: /* @__PURE__ */ __name(() => Promise.resolve(loaderInstance), \"waitForResult\"),\n      blobId\n    };\n  }\n  const fundedBlobRequest = await fundBlobTx(deployer, blobTxRequest);\n  const waitForResult = /* @__PURE__ */ __name(async () => {\n    try {\n      const blobTx = await deployer.sendTransaction(fundedBlobRequest);\n      const result = await blobTx.waitForResult();\n      if (result.status !== \"success\" /* success */) {\n        throw new Error();\n      }\n    } catch (err) {\n      throw new FuelError30(ErrorCode28.TRANSACTION_FAILED, \"Failed to deploy predicate chunk\");\n    }\n    return loaderInstance;\n  }, \"waitForResult\");\n  return {\n    waitForResult,\n    blobId\n  };\n}\n__name(deployScriptOrPredicate, \"deployScriptOrPredicate\");\n\n// src/predicate/utils/getPredicateRoot.ts\nimport { hash as hash3 } from \"@fuel-ts/hasher\";\nimport { calcRoot } from \"@fuel-ts/merkle\";\nimport { chunkAndPadBytes, hexlify as hexlify24, concat as concat9, arrayify as arrayify23 } from \"@fuel-ts/utils\";\nvar getPredicateRoot = /* @__PURE__ */ __name((bytecode) => {\n  const chunkSize = 16 * 1024;\n  const bytes = arrayify23(bytecode);\n  const chunks = chunkAndPadBytes(bytes, chunkSize);\n  const codeRoot = calcRoot(chunks.map((c) => hexlify24(c)));\n  const predicateRoot = hash3(concat9([\"0x4655454C\", codeRoot]));\n  return predicateRoot;\n}, \"getPredicateRoot\");\n\n// src/predicate/predicate.ts\nvar Predicate = class _Predicate extends Account {\n  static {\n    __name(this, \"Predicate\");\n  }\n  bytes;\n  predicateData = [];\n  interface;\n  initialBytecode;\n  configurableConstants;\n  /**\n   * Creates an instance of the Predicate class.\n   *\n   * @param bytecode - The bytecode of the predicate.\n   * @param abi - The JSON ABI of the predicate.\n   * @param provider - The provider used to interact with the blockchain.\n   * @param data - The predicate input data (optional).\n   * @param configurableConstants - Optional configurable constants for the predicate.\n   */\n  constructor({\n    bytecode,\n    abi,\n    provider,\n    data,\n    configurableConstants\n  }) {\n    const { predicateBytes, predicateInterface } = _Predicate.processPredicateData(\n      bytecode,\n      abi,\n      configurableConstants\n    );\n    const address = new Address10(getPredicateRoot(predicateBytes));\n    super(address, provider);\n    this.initialBytecode = arrayify24(bytecode);\n    this.bytes = predicateBytes;\n    this.interface = predicateInterface;\n    this.configurableConstants = configurableConstants;\n    if (data !== void 0 && data.length > 0) {\n      this.predicateData = data;\n    }\n  }\n  /**\n   * Populates the transaction data with predicate data.\n   *\n   * @param transactionRequestLike - The transaction request-like object.\n   * @returns The transaction request with predicate data.\n   */\n  populateTransactionPredicateData(transactionRequestLike) {\n    const request2 = transactionRequestify(transactionRequestLike);\n    const placeholderIndex = this.getIndexFromPlaceholderWitness(request2);\n    if (placeholderIndex !== -1) {\n      request2.removeWitness(placeholderIndex);\n    }\n    request2.inputs.filter(isRequestInputCoinOrMessage).forEach((input) => {\n      if (isRequestInputResourceFromOwner(input, this.address)) {\n        input.predicate = hexlify25(this.bytes);\n        input.predicateData = hexlify25(this.getPredicateData());\n        input.witnessIndex = 0;\n      }\n    });\n    return request2;\n  }\n  /**\n   * Sends a transaction with the populated predicate data.\n   *\n   * @param transactionRequestLike - The transaction request-like object.\n   * @returns A promise that resolves to the transaction response.\n   */\n  sendTransaction(transactionRequestLike) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    return super.sendTransaction(transactionRequest, { estimateTxDependencies: false });\n  }\n  /**\n   * Simulates a transaction with the populated predicate data.\n   *\n   * @param transactionRequestLike - The transaction request-like object.\n   * @returns A promise that resolves to the call result.\n   */\n  simulateTransaction(transactionRequestLike) {\n    const transactionRequest = transactionRequestify(transactionRequestLike);\n    return super.simulateTransaction(transactionRequest, { estimateTxDependencies: false });\n  }\n  /**\n   * Retrieves the properly encoded predicate data.\n   *\n   * @returns A Uint8Array containing the encoded predicate data. If no predicate data is available, returns an empty Uint8Array.\n   */\n  getPredicateData() {\n    if (!this.predicateData.length) {\n      return new Uint8Array();\n    }\n    const mainFn = this.interface?.functions.main;\n    return mainFn?.encodeArguments(this.predicateData) || new Uint8Array();\n  }\n  /**\n   * Creates a new Predicate instance from an existing Predicate instance.\n   * @param overrides - The data and configurable constants to override.\n   * @returns A new Predicate instance with the same bytecode, ABI and provider but with the ability to set the data and configurable constants.\n   */\n  toNewInstance(overrides = {}) {\n    return new _Predicate({\n      bytecode: this.initialBytecode,\n      abi: this.interface.jsonAbi,\n      provider: this.provider,\n      data: overrides.data ?? this.predicateData,\n      configurableConstants: overrides.configurableConstants ?? this.configurableConstants\n    });\n  }\n  /**\n   * Sets the predicate data.\n   *\n   * @param data - The data to be set for the predicate.\n   */\n  setData(data) {\n    this.predicateData = data;\n  }\n  /**\n   * Processes the predicate data and returns the altered bytecode and interface.\n   *\n   * @param bytes - The bytes of the predicate.\n   * @param jsonAbi - The JSON ABI of the predicate.\n   * @param configurableConstants - Optional configurable constants for the predicate.\n   * @returns An object containing the new predicate bytes and interface.\n   */\n  static processPredicateData(bytes, jsonAbi, configurableConstants) {\n    let predicateBytes = arrayify24(bytes);\n    const abiInterface = new Interface5(jsonAbi);\n    if (abiInterface.functions.main === void 0) {\n      throw new FuelError31(\n        ErrorCode29.ABI_MAIN_METHOD_MISSING,\n        'Cannot use ABI without \"main\" function.'\n      );\n    }\n    if (configurableConstants && Object.keys(configurableConstants).length) {\n      predicateBytes = _Predicate.setConfigurableConstants(\n        predicateBytes,\n        configurableConstants,\n        abiInterface\n      );\n    }\n    return {\n      predicateBytes,\n      predicateInterface: abiInterface\n    };\n  }\n  /**\n   * Retrieves resources satisfying the spend query for the account.\n   *\n   * @param quantities - IDs of coins to exclude.\n   * @param resourcesIdsToIgnore - IDs of resources to be excluded from the query.\n   * @returns A promise that resolves to an array of Resources.\n   */\n  async getResourcesToSpend(quantities, resourcesIdsToIgnore) {\n    const resources = await this.provider.getResourcesToSpend(\n      this.address,\n      quantities,\n      resourcesIdsToIgnore\n    );\n    return resources.map((resource) => ({\n      ...resource,\n      predicate: hexlify25(this.bytes),\n      predicateData: hexlify25(this.getPredicateData())\n    }));\n  }\n  /**\n   * Generates an array of fake resources based on the provided coins.\n   *\n   * @param coins - An array of `FakeResources` objects representing the coins.\n   * @returns An array of `Resource` objects with generated properties.\n   */\n  generateFakeResources(coins) {\n    return super.generateFakeResources(coins).map((coin) => ({\n      ...coin,\n      predicate: hexlify25(this.bytes),\n      predicateData: hexlify25(this.getPredicateData())\n    }));\n  }\n  /**\n   * Sets the configurable constants for the predicate.\n   *\n   * @param bytes - The bytes of the predicate.\n   * @param configurableConstants - Configurable constants to be set.\n   * @param abiInterface - The ABI interface of the predicate.\n   * @returns The mutated bytes with the configurable constants set.\n   */\n  static setConfigurableConstants(bytes, configurableConstants, abiInterface) {\n    const mutatedBytes = bytes;\n    try {\n      if (Object.keys(abiInterface.configurables).length === 0) {\n        throw new FuelError31(\n          ErrorCode29.INVALID_CONFIGURABLE_CONSTANTS,\n          \"Predicate has no configurable constants to be set\"\n        );\n      }\n      Object.entries(configurableConstants).forEach(([key, value]) => {\n        if (!abiInterface?.configurables[key]) {\n          throw new FuelError31(\n            ErrorCode29.CONFIGURABLE_NOT_FOUND,\n            `No configurable constant named '${key}' found in the Predicate`\n          );\n        }\n        const { offset } = abiInterface.configurables[key];\n        const encoded = abiInterface.encodeConfigurable(key, value);\n        mutatedBytes.set(encoded, offset);\n      });\n    } catch (err) {\n      throw new FuelError31(\n        ErrorCode29.INVALID_CONFIGURABLE_CONSTANTS,\n        `Error setting configurable constants: ${err.message}.`\n      );\n    }\n    return mutatedBytes;\n  }\n  /**\n   * Returns the index of the witness placeholder that was added to this predicate.\n   * If no witness placeholder was added, it returns -1.\n   * @param request - The transaction request.\n   * @returns The index of the witness placeholder, or -1 if there is no witness placeholder.\n   */\n  getIndexFromPlaceholderWitness(request2) {\n    const predicateInputs = request2.inputs.filter(isRequestInputResource).filter((input) => isRequestInputResourceFromOwner(input, this.address));\n    let index = -1;\n    const hasEmptyPredicateInputs = predicateInputs.find((input) => !input.predicate);\n    if (hasEmptyPredicateInputs) {\n      index = hasEmptyPredicateInputs.witnessIndex;\n      const allInputsAreEmpty = predicateInputs.every((input) => !input.predicate);\n      if (!allInputsAreEmpty) {\n        const wasFilledInputAddedFirst = !!predicateInputs[0]?.predicate;\n        if (wasFilledInputAddedFirst) {\n          index = -1;\n        }\n      }\n    }\n    return index;\n  }\n  /**\n   *\n   * @param account - The account used to pay the deployment costs.\n   * @returns The _blobId_ and a _waitForResult_ callback that returns the deployed predicate\n   * once the blob deployment transaction finishes.\n   *\n   * The returned loader predicate will have the same configurable constants\n   * as the original predicate which was used to generate the loader predicate.\n   */\n  async deploy(account) {\n    return deployScriptOrPredicate({\n      deployer: account,\n      abi: this.interface.jsonAbi,\n      bytecode: this.bytes,\n      loaderInstanceCallback: /* @__PURE__ */ __name((loaderBytecode, newAbi) => new _Predicate({\n        bytecode: loaderBytecode,\n        abi: newAbi,\n        provider: this.provider,\n        data: this.predicateData\n      }), \"loaderInstanceCallback\")\n    });\n  }\n};\n\n// src/connectors/fuel.ts\nimport { ErrorCode as ErrorCode30, FuelError as FuelError34 } from \"@fuel-ts/errors\";\n\n// src/connectors/fuel-connector.ts\nimport { FuelError as FuelError32 } from \"@fuel-ts/errors\";\nimport { EventEmitter as EventEmitter2 } from \"events\";\n\n// src/connectors/types/connector-types.ts\nvar FuelConnectorMethods = /* @__PURE__ */ ((FuelConnectorMethods2) => {\n  FuelConnectorMethods2[\"ping\"] = \"ping\";\n  FuelConnectorMethods2[\"version\"] = \"version\";\n  FuelConnectorMethods2[\"connect\"] = \"connect\";\n  FuelConnectorMethods2[\"disconnect\"] = \"disconnect\";\n  FuelConnectorMethods2[\"isConnected\"] = \"isConnected\";\n  FuelConnectorMethods2[\"accounts\"] = \"accounts\";\n  FuelConnectorMethods2[\"currentAccount\"] = \"currentAccount\";\n  FuelConnectorMethods2[\"signTransaction\"] = \"signTransaction\";\n  FuelConnectorMethods2[\"signMessage\"] = \"signMessage\";\n  FuelConnectorMethods2[\"sendTransaction\"] = \"sendTransaction\";\n  FuelConnectorMethods2[\"assets\"] = \"assets\";\n  FuelConnectorMethods2[\"addAsset\"] = \"addAsset\";\n  FuelConnectorMethods2[\"addAssets\"] = \"addAssets\";\n  FuelConnectorMethods2[\"networks\"] = \"networks\";\n  FuelConnectorMethods2[\"currentNetwork\"] = \"currentNetwork\";\n  FuelConnectorMethods2[\"addNetwork\"] = \"addNetwork\";\n  FuelConnectorMethods2[\"selectNetwork\"] = \"selectNetwork\";\n  FuelConnectorMethods2[\"addABI\"] = \"addABI\";\n  FuelConnectorMethods2[\"getABI\"] = \"getABI\";\n  FuelConnectorMethods2[\"hasABI\"] = \"hasABI\";\n  return FuelConnectorMethods2;\n})(FuelConnectorMethods || {});\nvar FuelConnectorEventTypes = /* @__PURE__ */ ((FuelConnectorEventTypes2) => {\n  FuelConnectorEventTypes2[\"connectors\"] = \"connectors\";\n  FuelConnectorEventTypes2[\"currentConnector\"] = \"currentConnector\";\n  FuelConnectorEventTypes2[\"connection\"] = \"connection\";\n  FuelConnectorEventTypes2[\"accounts\"] = \"accounts\";\n  FuelConnectorEventTypes2[\"currentAccount\"] = \"currentAccount\";\n  FuelConnectorEventTypes2[\"networks\"] = \"networks\";\n  FuelConnectorEventTypes2[\"currentNetwork\"] = \"currentNetwork\";\n  FuelConnectorEventTypes2[\"assets\"] = \"assets\";\n  FuelConnectorEventTypes2[\"abis\"] = \"abis\";\n  return FuelConnectorEventTypes2;\n})(FuelConnectorEventTypes || {});\nvar FuelConnectorEventType = \"FuelConnector\";\n\n// src/connectors/types/local-storage.ts\nvar LocalStorage = class {\n  static {\n    __name(this, \"LocalStorage\");\n  }\n  storage;\n  constructor(localStorage) {\n    this.storage = localStorage;\n  }\n  async setItem(key, value) {\n    this.storage.setItem(key, value);\n  }\n  async getItem(key) {\n    return this.storage.getItem(key);\n  }\n  async removeItem(key) {\n    this.storage.removeItem(key);\n  }\n  async clear() {\n    this.storage.clear();\n  }\n};\n\n// src/connectors/fuel-connector.ts\nvar FuelConnector = class extends EventEmitter2 {\n  static {\n    __name(this, \"FuelConnector\");\n  }\n  name = \"\";\n  metadata = {};\n  connected = false;\n  installed = false;\n  external = true;\n  events = FuelConnectorEventTypes;\n  /**\n   * Should return true if the connector is loaded\n   * in less then one second.\n   *\n   * @returns Always true.\n   */\n  async ping() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should return the current version of the connector\n   * and the network version that is compatible.\n   *\n   * @returns boolean - connection status.\n   */\n  async version() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should return true if the connector is connected\n   * to any of the accounts available.\n   *\n   * @returns The connection status.\n   */\n  async isConnected() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should return all the accounts authorized for the\n   * current connection.\n   *\n   * @returns The accounts addresses strings\n   */\n  async accounts() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should start the connection process and return\n   * true if the account authorize the connection.\n   *\n   * and return false if the user reject the connection.\n   *\n   * @emits accounts\n   * @returns boolean - connection status.\n   */\n  async connect() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should disconnect the current connection and\n   * return false if the disconnection was successful.\n   *\n   * @emits assets connection\n   * @returns The connection status.\n   */\n  async disconnect() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should start the sign message process and return\n   * the signed message.\n   *\n   * @param address - The address to sign the message\n   * @param message - The message to sign all text will be treated as text utf-8\n   *\n   * @returns Message signature\n   */\n  async signMessage(_address, _message) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should start the sign transaction process and return\n   * the signed transaction.\n   *\n   * @param address - The address to sign the transaction\n   * @param transaction - The transaction to sign\n   *\n   * @returns Transaction signature\n   */\n  async signTransaction(_address, _transaction, _params) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should start the send transaction process and return\n   * the transaction id submitted to the network.\n   *\n   * If the network is not available for the connection\n   * it should throw an error to avoid the transaction\n   * to be sent to the wrong network and lost.\n   *\n   * @param address - The address to sign the transaction\n   * @param transaction - The transaction to send\n   * @param params - Optional parameters to send the transaction\n   * @returns The transaction id or transaction response\n   */\n  async sendTransaction(_address, _transaction, _params) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should return the current account selected inside the connector, if the account\n   * is authorized for the connection.\n   *\n   * If the account is not authorized it should return null.\n   *\n   * @returns The current account selected otherwise null.\n   */\n  async currentAccount() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should add the assets metadata to the connector and return true if the asset\n   * was added successfully.\n   *\n   * If the asset already exists it should throw an error.\n   *\n   * @emits assets\n   * @param assets - The assets to add the metadata to the connection.\n   * @throws Error if the asset already exists\n   * @returns True if the asset was added successfully\n   */\n  async addAssets(_assets) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should add the asset metadata to the connector and return true if the asset\n   * was added successfully.\n   *\n   * If the asset already exists it should throw an error.\n   *\n   * @emits assets\n   * @param asset - The asset to add the metadata to the connection.\n   * @throws Error if the asset already exists\n   * @returns True if the asset was added successfully\n   */\n  async addAsset(_asset) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should return all the assets added to the connector. If a connection is already established.\n   *\n   * @returns Array of assets metadata from the connector vinculated to the all accounts from a specific Wallet.\n   */\n  async assets() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should start the add network process and return true if the network was added successfully.\n   *\n   * @emits networks\n   * @throws Error if the network already exists\n   * @param networkUrl - The URL of the network to be added.\n   * @returns Return true if the network was added successfully\n   */\n  async addNetwork(_networkUrl) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should start the select network process and return true if the network has change successfully.\n   *\n   * @emits networks\n   * @throws Error if the network already exists\n   * @param network - The network to be selected.\n   * @returns Return true if the network was added successfully\n   */\n  async selectNetwork(_network) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should return all the networks available from the connector. If the connection is already established.\n   *\n   * @returns Return all the networks added to the connector.\n   */\n  async networks() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should return the current network selected inside the connector. Even if the connection is not established.\n   *\n   * @returns Return the current network selected inside the connector.\n   */\n  async currentNetwork() {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should add the ABI to the connector and return true if the ABI was added successfully.\n   *\n   * @param contractId - The contract id to add the ABI.\n   * @param abi - The JSON ABI that represents a contract.\n   * @returns Return true if the ABI was added successfully.\n   */\n  async addABI(_contractId, _abi) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should return the ABI from the connector vinculated to the all accounts from a specific Wallet.\n   *\n   * @param id - The contract id to get the ABI.\n   * @returns The ABI if it exists, otherwise return null.\n   */\n  async getABI(_id) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Should return true if the abi exists in the connector vinculated to the all accounts from a specific Wallet.\n   *\n   * @param id - The contract id to get the abi\n   * @returns Returns true if the abi exists or false if not.\n   */\n  async hasABI(_id) {\n    throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, \"Method not implemented.\");\n  }\n  /**\n   * Event listener for the connector.\n   *\n   * @param eventName - The event name to listen\n   * @param listener - The listener function\n   */\n  on(eventName, listener) {\n    super.on(eventName, listener);\n    return this;\n  }\n};\n\n// src/connectors/utils/cache.ts\nfunction cacheFor(fn, { cache: cache2, cacheTime, key }) {\n  return async (...args) => {\n    if (cache2[key] && cache2[key]?.value) {\n      return cache2[key]?.value;\n    }\n    clearTimeout(cache2[key]?.timeout);\n    const result = await fn(...args);\n    cache2[key] = {\n      timeout: Number(\n        setTimeout(() => {\n          cache2[key] = null;\n        }, cacheTime)\n      ),\n      value: result\n    };\n    return result;\n  };\n}\n__name(cacheFor, \"cacheFor\");\n\n// src/connectors/utils/dispatch-fuel-connector-event.ts\nfunction dispatchFuelConnectorEvent(connector) {\n  window.dispatchEvent(\n    new CustomEvent(FuelConnectorEventType, {\n      detail: connector\n    })\n  );\n}\n__name(dispatchFuelConnectorEvent, \"dispatchFuelConnectorEvent\");\n\n// src/connectors/utils/promises.ts\nimport { FuelError as FuelError33 } from \"@fuel-ts/errors\";\nfunction deferPromise() {\n  const defer = {};\n  defer.promise = new Promise((resolve, reject) => {\n    defer.reject = reject;\n    defer.resolve = resolve;\n  });\n  return defer;\n}\n__name(deferPromise, \"deferPromise\");\nasync function withTimeout(promise, timeout = 1050) {\n  const timeoutPromise = new Promise((resolve, reject) => {\n    setTimeout(() => {\n      reject(new FuelError33(FuelError33.CODES.TIMEOUT_EXCEEDED, \"Promise timed out\"));\n    }, timeout);\n  });\n  return Promise.race([timeoutPromise, promise]);\n}\n__name(withTimeout, \"withTimeout\");\n\n// src/connectors/fuel.ts\nvar HAS_CONNECTOR_TIMEOUT = 2e3;\nvar PING_CACHE_TIME = 5e3;\nvar { warn } = console;\nvar Fuel = class _Fuel extends FuelConnector {\n  static {\n    __name(this, \"Fuel\");\n  }\n  static STORAGE_KEY = \"fuel-current-connector\";\n  static defaultConfig = {};\n  _storage = null;\n  _connectors = [];\n  _targetObject = null;\n  _unsubscribes = [];\n  _targetUnsubscribe = /* @__PURE__ */ __name(() => {\n  }, \"_targetUnsubscribe\");\n  _pingCache = {};\n  _currentConnector;\n  _initializationPromise = null;\n  constructor(config = _Fuel.defaultConfig) {\n    super();\n    this.setMaxListeners(1e3);\n    this._connectors = config.connectors ?? [];\n    this._targetObject = this.getTargetObject(config.targetObject);\n    this._storage = config.storage === void 0 ? this.getStorage() : config.storage;\n    this.setupMethods();\n    this._initializationPromise = this.initialize();\n  }\n  async initialize() {\n    try {\n      const connectResponse = this.setDefaultConnector();\n      this._targetUnsubscribe = this.setupConnectorListener();\n      await connectResponse;\n    } catch (error) {\n      throw new FuelError34(ErrorCode30.INVALID_PROVIDER, \"Error initializing Fuel Connector\");\n    }\n  }\n  async init() {\n    await this._initializationPromise;\n    return this;\n  }\n  /**\n   * Return the target object to listen for global events.\n   */\n  getTargetObject(targetObject) {\n    if (targetObject) {\n      return targetObject;\n    }\n    if (typeof window !== \"undefined\") {\n      return window;\n    }\n    if (typeof document !== \"undefined\") {\n      return document;\n    }\n    return null;\n  }\n  /**\n   * Return the storage used.\n   */\n  getStorage() {\n    if (typeof window !== \"undefined\") {\n      return new LocalStorage(window.localStorage);\n    }\n    return void 0;\n  }\n  /**\n   * Setup the default connector from the storage.\n   */\n  async setDefaultConnector() {\n    const connectorName = await this._storage?.getItem(_Fuel.STORAGE_KEY) || this._connectors[0]?.name;\n    if (connectorName) {\n      return this.selectConnector(connectorName, {\n        emitEvents: false\n      });\n    }\n    return void 0;\n  }\n  /**\n   * Start listener for all the events of the current\n   * connector and emit them to the Fuel instance\n   */\n  setupConnectorEvents(events) {\n    if (!this._currentConnector) {\n      return;\n    }\n    const currentConnector = this._currentConnector;\n    this._unsubscribes.map((unSub) => unSub());\n    this._unsubscribes = events.map((event) => {\n      const handler = /* @__PURE__ */ __name((...args) => this.emit(event, ...args), \"handler\");\n      currentConnector.on(event, handler);\n      return () => currentConnector.off(event, handler);\n    });\n  }\n  /**\n   * Call method from the current connector.\n   */\n  async callMethod(method, ...args) {\n    const hasConnector = await this.hasConnector();\n    await this.pingConnector();\n    if (!this._currentConnector || !hasConnector) {\n      throw new FuelError34(\n        ErrorCode30.MISSING_CONNECTOR,\n        `No connector selected for calling ${method}. Use hasConnector before executing other methods.`\n      );\n    }\n    if (typeof this._currentConnector[method] === \"function\") {\n      return this._currentConnector[method](...args);\n    }\n    return void 0;\n  }\n  /**\n   * Create a method for each method proxy that is available on the Common interface\n   * and call the method from the current connector.\n   */\n  setupMethods() {\n    Object.values(FuelConnectorMethods).forEach((method) => {\n      this[method] = async (...args) => this.callMethod(method, ...args);\n    });\n  }\n  /**\n   * Fetch the status of a connector and set the installed and connected\n   * status.\n   */\n  async fetchConnectorStatus(connector) {\n    const requestTimestamp = Date.now();\n    const [isConnected, ping] = await Promise.allSettled([\n      withTimeout(connector.isConnected()),\n      withTimeout(this.pingConnector(connector))\n    ]);\n    const isStale = requestTimestamp < (connector._latestUpdate || 0);\n    if (!isStale) {\n      connector._latestUpdate = Date.now();\n      connector.installed = ping.status === \"fulfilled\" && ping.value;\n      connector.connected = isConnected.status === \"fulfilled\" && isConnected.value;\n    }\n    return {\n      installed: connector.installed,\n      connected: connector.connected\n    };\n  }\n  /**\n   * Fetch the status of all connectors and set the installed and connected\n   * status.\n   */\n  async fetchConnectorsStatus() {\n    return Promise.all(\n      this._connectors.map(async (connector) => this.fetchConnectorStatus(connector))\n    );\n  }\n  /**\n   * Fetch the status of a connector and set the installed and connected\n   * status. If no connector is provided it will ping the current connector.\n   */\n  async pingConnector(connector) {\n    const curConnector = connector || this._currentConnector;\n    if (!curConnector) {\n      return false;\n    }\n    try {\n      return await cacheFor(async () => withTimeout(curConnector.ping()), {\n        key: curConnector.name,\n        cache: this._pingCache,\n        cacheTime: PING_CACHE_TIME\n      })();\n    } catch {\n      throw new FuelError34(ErrorCode30.INVALID_PROVIDER, \"Current connector is not available.\");\n    }\n  }\n  /**\n   * Setup a listener for the FuelConnector event and add the connector\n   * to the list of new connectors.\n   */\n  setupConnectorListener = /* @__PURE__ */ __name(() => {\n    const { _targetObject: targetObject } = this;\n    const eventName = FuelConnectorEventType;\n    if (targetObject?.on) {\n      targetObject.on(eventName, this.addConnector);\n      return () => {\n        targetObject.off?.(eventName, this.addConnector);\n      };\n    }\n    if (targetObject?.addEventListener) {\n      const handler = /* @__PURE__ */ __name((e) => {\n        this.addConnector(e.detail);\n      }, \"handler\");\n      targetObject.addEventListener(eventName, handler);\n      return () => {\n        targetObject.removeEventListener?.(eventName, handler);\n      };\n    }\n    return () => {\n    };\n  }, \"setupConnectorListener\");\n  /**\n   * Add a new connector to the list of connectors.\n   */\n  addConnector = /* @__PURE__ */ __name(async (connector) => {\n    if (!this.getConnector(connector)) {\n      this._connectors.push(connector);\n    }\n    await this.fetchConnectorStatus(connector);\n    this.emit(this.events.connectors, this._connectors);\n    if (!this._currentConnector) {\n      await this.selectConnector(connector.name, {\n        emitEvents: false\n      });\n    }\n  }, \"addConnector\");\n  triggerConnectorEvents = /* @__PURE__ */ __name(async () => {\n    const [isConnected, networks2, currentNetwork] = await Promise.all([\n      this.isConnected(),\n      this.networks(),\n      this.currentNetwork()\n    ]);\n    this.emit(this.events.connection, isConnected);\n    this.emit(this.events.networks, networks2);\n    this.emit(this.events.currentNetwork, currentNetwork);\n    if (isConnected) {\n      const [accounts, currentAccount] = await Promise.all([\n        this.accounts(),\n        this.currentAccount()\n      ]);\n      this.emit(this.events.accounts, accounts);\n      this.emit(this.events.currentAccount, currentAccount);\n    }\n  }, \"triggerConnectorEvents\");\n  /**\n   * Get a connector from the list of connectors.\n   */\n  getConnector = /* @__PURE__ */ __name((connector) => this._connectors.find((c) => {\n    const connectorName = typeof connector === \"string\" ? connector : connector.name;\n    return c.name === connectorName || c === connector;\n  }) || null, \"getConnector\");\n  /**\n   * Return the list of connectors with the status of installed and connected.\n   */\n  async connectors() {\n    await this.fetchConnectorsStatus();\n    return this._connectors;\n  }\n  /**\n   * Set the current connector to be used.\n   */\n  async selectConnector(connectorName, options = {\n    emitEvents: true\n  }) {\n    const connector = this.getConnector(connectorName);\n    if (!connector) {\n      return false;\n    }\n    if (this._currentConnector?.name === connectorName) {\n      return true;\n    }\n    const { installed } = await this.fetchConnectorStatus(connector);\n    if (installed) {\n      this._currentConnector = connector;\n      this.emit(this.events.currentConnector, connector);\n      this.setupConnectorEvents(Object.values(FuelConnectorEventTypes));\n      await this._storage?.setItem(_Fuel.STORAGE_KEY, connector.name);\n      if (options.emitEvents) {\n        this.triggerConnectorEvents();\n      }\n      return true;\n    }\n    return false;\n  }\n  /**\n   * Return the current selected connector.\n   */\n  currentConnector() {\n    return this._currentConnector;\n  }\n  /**\n   * Return true if any connector is available.\n   */\n  async hasConnector() {\n    if (this._currentConnector) {\n      return true;\n    }\n    const defer = deferPromise();\n    this.once(this.events.currentConnector, () => {\n      defer.resolve(true);\n    });\n    return withTimeout(defer.promise, HAS_CONNECTOR_TIMEOUT).then(() => true).catch(() => false);\n  }\n  async hasWallet() {\n    return this.hasConnector();\n  }\n  /**\n   * Return a Fuel Provider instance with extends features to work with\n   * connectors.\n   *\n   * @deprecated getProvider is deprecated and is going to be removed in the future, use getWallet instead.\n   */\n  async getProvider(providerOrNetwork) {\n    warn(\n      \"getProvider is deprecated and is going to be removed in the future, use getWallet instead.\"\n    );\n    return this._getProvider(providerOrNetwork);\n  }\n  /**\n   * Return a Fuel Provider instance with extends features to work with\n   * connectors.\n   */\n  async _getProvider(providerOrNetwork) {\n    let provider;\n    if (providerOrNetwork && \"getTransactionResponse\" in providerOrNetwork) {\n      provider = providerOrNetwork;\n    } else if (providerOrNetwork && \"chainId\" in providerOrNetwork && \"url\" in providerOrNetwork) {\n      provider = new Provider(providerOrNetwork.url);\n    } else if (!providerOrNetwork) {\n      const currentNetwork = await this.currentNetwork();\n      provider = new Provider(currentNetwork.url);\n    } else {\n      throw new FuelError34(ErrorCode30.INVALID_PROVIDER, \"Provider is not valid.\");\n    }\n    return provider;\n  }\n  /**\n   * Return a Fuel Wallet Locked instance with extends features to work with\n   * connectors.\n   */\n  async getWallet(address, providerOrNetwork) {\n    const provider = await this._getProvider(providerOrNetwork);\n    return new Account(address, provider, this);\n  }\n  /**\n   * Remove all open listeners this is useful when you want to\n   * remove the Fuel instance and avoid memory leaks.\n   */\n  unsubscribe() {\n    this._unsubscribes.map((unSub) => unSub());\n    this._targetUnsubscribe();\n    this.removeAllListeners();\n  }\n  /**\n   * Clean all the data from the storage.\n   */\n  async clean() {\n    await this._storage?.removeItem(_Fuel.STORAGE_KEY);\n  }\n  /**\n   * Removes all listeners and cleans the storage.\n   */\n  async destroy() {\n    this.unsubscribe();\n    await this.clean();\n  }\n};\nexport {\n  AbstractAccount,\n  AbstractScriptRequest,\n  Account,\n  AddressType,\n  BALANCES_PAGE_SIZE_LIMIT,\n  BLOCKS_PAGE_SIZE_LIMIT,\n  BaseTransactionRequest,\n  BaseWalletUnlocked,\n  BlobTransactionRequest,\n  CHAIN_IDS,\n  ChainName,\n  ChangeOutputCollisionError,\n  CreateTransactionRequest,\n  DEFAULT_RESOURCE_CACHE_TTL,\n  Fuel,\n  FuelConnector,\n  FuelConnectorEventType,\n  FuelConnectorEventTypes,\n  FuelConnectorMethods,\n  GAS_USED_MODIFIER,\n  hdwallet_default as HDWallet,\n  Language,\n  LocalStorage,\n  MNEMONIC_SIZES,\n  MemoryStorage,\n  mnemonic_default as Mnemonic,\n  MnemonicVault,\n  NON_PAGINATED_BALANCES_SIZE,\n  NoWitnessAtIndexError,\n  NoWitnessByOwnerError,\n  OperationName,\n  Predicate,\n  PrivateKeyVault,\n  Provider,\n  RESOURCES_PAGE_SIZE_LIMIT,\n  ScriptTransactionRequest,\n  Signer,\n  StorageAbstract,\n  TRANSACTIONS_PAGE_SIZE_LIMIT,\n  TransactionResponse,\n  TransactionStatus,\n  TransactionType2 as TransactionType,\n  TransactionTypeName,\n  UpgradeTransactionRequest,\n  UploadTransactionRequest,\n  Vault,\n  Wallet,\n  WalletLocked,\n  WalletManager,\n  WalletUnlocked,\n  addAmountToCoinQuantities,\n  addOperation,\n  aggregateInputsAmountsByAssetAndOwner,\n  assemblePanicError,\n  assemblePreConfirmationTransactionSummary,\n  assembleReceiptByType,\n  assembleRevertError,\n  assembleSignalErrorMessage,\n  assembleTransactionSummary,\n  assembleTransactionSummaryFromJson,\n  assets,\n  buildBlockExplorerUrl,\n  cacheFor,\n  cacheRequestInputsResources,\n  cacheRequestInputsResourcesFromOwner,\n  calculateGasFee,\n  calculateMetadataGasForTxBlob,\n  calculateMetadataGasForTxCreate,\n  calculateMetadataGasForTxScript,\n  calculateMetadataGasForTxUpgrade,\n  calculateMetadataGasForTxUpload,\n  calculateMinGasForTxUpload,\n  calculateTXFeeForSummary,\n  coinQuantityfy,\n  deferPromise,\n  deployScriptOrPredicate,\n  deserializeChain,\n  deserializeInput,\n  deserializeNodeInfo,\n  deserializeOutput,\n  deserializeProcessedTxOutput,\n  deserializeProviderCache,\n  deserializeReceipt,\n  deserializeTransactionResponseJson,\n  dispatchFuelConnectorEvent,\n  english,\n  extractBurnedAssetsFromReceipts,\n  extractMintedAssetsFromReceipts,\n  extractResolvedOutputs,\n  extractTxError,\n  fuelAssetsBaseUrl,\n  gasUsedByInputs,\n  getAllDecodedLogs,\n  getAssetAmountInRequestInputs,\n  getAssetById,\n  getAssetEth,\n  getAssetFuel,\n  getAssetNetwork,\n  getAssetWithNetwork,\n  getAssetsByOwner,\n  getBurnableAssetCount,\n  getBytecodeConfigurableOffset,\n  getBytecodeDataOffset,\n  getBytecodeId,\n  getContractCallOperations,\n  getContractCreatedOperations,\n  getDecodedLogs,\n  getDefaultChainId,\n  getGasUsedFromReceipts,\n  getInputAccountAddress,\n  getInputContractFromIndex,\n  getInputFromAssetId,\n  getInputsByType,\n  getInputsByTypes,\n  getInputsCoin,\n  getInputsCoinAndMessage,\n  getInputsContract,\n  getInputsMessage,\n  getLegacyBlobId,\n  getMaxGas,\n  getMinGas,\n  getOperations,\n  getOutputsByType,\n  getOutputsChange,\n  getOutputsCoin,\n  getOutputsContract,\n  getOutputsContractCreated,\n  getOutputsVariable,\n  getPayProducerOperations,\n  getPredicateRoot,\n  getReceiptsByType,\n  getReceiptsCall,\n  getReceiptsMessageOut,\n  getReceiptsTransferOut,\n  getReceiptsWithMissingData,\n  getRequestInputResourceOwner,\n  getTotalFeeFromStatus,\n  getTransactionStatusName,\n  getTransactionSummary,\n  getTransactionSummaryFromRequest,\n  getTransactionTypeName,\n  getTransactionsSummaries,\n  getTransferOperations,\n  getWithdrawFromFuelOperations,\n  hasSameAssetId,\n  inputify,\n  isCoin,\n  isInputCoin,\n  isMessage,\n  isMessageCoin,\n  isPredicate,\n  isRawCoin,\n  isRawMessage,\n  isRequestInputCoin,\n  isRequestInputCoinOrMessage,\n  isRequestInputMessage,\n  isRequestInputMessageWithoutData,\n  isRequestInputResource,\n  isRequestInputResourceFromOwner,\n  isTransactionTypeBlob,\n  isTransactionTypeCreate,\n  isTransactionTypeScript,\n  isTransactionTypeUpgrade,\n  isTransactionTypeUpload,\n  isType,\n  isTypeBlob,\n  isTypeCreate,\n  isTypeMint,\n  isTypeScript,\n  isTypeUpgrade,\n  isTypeUpload,\n  mergeQuantities,\n  normalizeJSON,\n  outputify,\n  processGqlReceipt,\n  processGraphqlStatus,\n  rawAssets,\n  resolveAccountForAssembleTxParams,\n  resolveGasDependentCosts,\n  resolveIconPaths,\n  returnZeroScript,\n  serializeChain,\n  serializeNodeInfo,\n  serializeProviderCache,\n  serializeTransactionResponseJson,\n  setAndValidateGasAndFeeForAssembledTx,\n  transactionRequestify,\n  urlJoin,\n  validateTransactionForAssetBurn,\n  withTimeout,\n  withdrawScript\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/types.ts\nvar AbstractProgram = class {\n  static {\n    __name(this, \"AbstractProgram\");\n  }\n};\nvar AbstractContract = class extends AbstractProgram {\n  static {\n    __name(this, \"AbstractContract\");\n  }\n};\n\n// src/utils.ts\nimport { getAllDecodedLogs, getDecodedLogs } from \"@fuel-ts/account\";\nimport { ErrorCode, FuelError } from \"@fuel-ts/errors\";\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new FuelError(ErrorCode.TRANSACTION_ERROR, message);\n  }\n}\n__name(assert, \"assert\");\nfunction getAbisFromAllCalls(functionScopes) {\n  return functionScopes.reduce((acc, funcScope, i) => {\n    const { program, externalAbis } = funcScope.getCallConfig();\n    if (i === 0) {\n      acc.main = program.interface.jsonAbi;\n      acc.otherContractsAbis = {};\n    } else {\n      acc.otherContractsAbis[program.id.toB256()] = program.interface.jsonAbi;\n    }\n    acc.otherContractsAbis = { ...acc.otherContractsAbis, ...externalAbis };\n    return acc;\n  }, {});\n}\n__name(getAbisFromAllCalls, \"getAbisFromAllCalls\");\nvar getResultLogs = /* @__PURE__ */ __name((receipts, mainCallConfig, functionScopes) => {\n  if (!mainCallConfig) {\n    return [];\n  }\n  const { main, otherContractsAbis } = getAbisFromAllCalls(functionScopes);\n  return getDecodedLogs(receipts, main, otherContractsAbis);\n}, \"getResultLogs\");\nvar getAllResultLogs = /* @__PURE__ */ __name((opts) => {\n  const { receipts, mainCallConfig, functionScopes } = opts;\n  if (!mainCallConfig) {\n    return { logs: [], groupedLogs: {} };\n  }\n  const { main, otherContractsAbis } = getAbisFromAllCalls(functionScopes);\n  return getAllDecodedLogs({ receipts, mainAbi: main, externalAbis: otherContractsAbis });\n}, \"getAllResultLogs\");\n\n// src/functions/invocation-scope.ts\nimport { coinQuantityfy } from \"@fuel-ts/account\";\nimport { ErrorCode as ErrorCode5, FuelError as FuelError5 } from \"@fuel-ts/errors\";\n\n// src/functions/base-invocation-scope.ts\nimport {\n  mergeQuantities,\n  ScriptTransactionRequest,\n  Wallet,\n  setAndValidateGasAndFeeForAssembledTx\n} from \"@fuel-ts/account\";\nimport { Address } from \"@fuel-ts/address\";\nimport { ErrorCode as ErrorCode4, FuelError as FuelError4 } from \"@fuel-ts/errors\";\nimport { bn as bn2 } from \"@fuel-ts/math\";\nimport { InputType, OutputType, TransactionType } from \"@fuel-ts/transactions\";\nimport { isDefined } from \"@fuel-ts/utils\";\nimport * as asm2 from \"@fuels/vm-asm\";\nimport { clone } from \"ramda\";\n\n// src/contract-call-script.ts\nimport {\n  WORD_SIZE as WORD_SIZE2,\n  B256Coder,\n  ASSET_ID_LEN as ASSET_ID_LEN2,\n  BigNumberCoder,\n  CONTRACT_ID_LEN as CONTRACT_ID_LEN2\n} from \"@fuel-ts/abi-coder\";\nimport { ZeroBytes32 } from \"@fuel-ts/address/configs\";\nimport { ErrorCode as ErrorCode3, FuelError as FuelError3 } from \"@fuel-ts/errors\";\nimport { bn, toNumber } from \"@fuel-ts/math\";\nimport { ReceiptType as ReceiptType2 } from \"@fuel-ts/transactions\";\nimport { concat as concat2, arrayify as arrayify2 } from \"@fuel-ts/utils\";\nimport * as asm from \"@fuels/vm-asm\";\n\n// src/instruction-set.ts\nimport { concat, hexlify } from \"@fuel-ts/utils\";\nvar InstructionSet = class {\n  static {\n    __name(this, \"InstructionSet\");\n  }\n  #operations;\n  constructor(...args) {\n    this.#operations = args || [];\n  }\n  entries() {\n    return this.#operations;\n  }\n  push(...args) {\n    this.#operations.push(...args);\n  }\n  concat(ops) {\n    return this.#operations.concat(ops);\n  }\n  extend(ops) {\n    this.#operations.push(...ops);\n  }\n  toBytes() {\n    return concat(\n      this.#operations.reduce((instructions, line) => {\n        instructions.push(line.to_bytes());\n        return instructions;\n      }, [])\n    );\n  }\n  toHex() {\n    return hexlify(this.toBytes());\n  }\n  toString() {\n    return `Program:\n${JSON.stringify(this.#operations, null, 2)}`;\n  }\n  byteLength() {\n    return this.toBytes().byteLength;\n  }\n};\n\n// src/script-request.ts\nimport {\n  ASSET_ID_LEN,\n  CONTRACT_ID_LEN,\n  SCRIPT_FIXED_SIZE,\n  WORD_SIZE,\n  calculateVmTxMemory\n} from \"@fuel-ts/abi-coder\";\nimport { extractTxError } from \"@fuel-ts/account\";\nimport { ErrorCode as ErrorCode2, FuelError as FuelError2 } from \"@fuel-ts/errors\";\nimport { ReceiptType } from \"@fuel-ts/transactions\";\nimport { arrayify } from \"@fuel-ts/utils\";\nvar calculateScriptDataBaseOffset = /* @__PURE__ */ __name((maxInputs) => SCRIPT_FIXED_SIZE + calculateVmTxMemory({ maxInputs }), \"calculateScriptDataBaseOffset\");\nvar POINTER_DATA_OFFSET = WORD_SIZE + ASSET_ID_LEN + CONTRACT_ID_LEN + WORD_SIZE + WORD_SIZE;\nfunction callResultToScriptResult(callResult) {\n  const receipts = [...callResult.receipts];\n  let scriptResultReceipt;\n  let returnReceipt;\n  receipts.forEach((receipt) => {\n    if (receipt.type === ReceiptType.ScriptResult) {\n      scriptResultReceipt = receipt;\n    } else if (receipt.type === ReceiptType.Return || receipt.type === ReceiptType.ReturnData || receipt.type === ReceiptType.Revert) {\n      returnReceipt = receipt;\n    }\n  });\n  if (!scriptResultReceipt || !returnReceipt) {\n    throw new FuelError2(ErrorCode2.SCRIPT_REVERTED, `Transaction reverted.`);\n  }\n  const scriptResult = {\n    code: scriptResultReceipt.result,\n    gasUsed: scriptResultReceipt.gasUsed,\n    receipts,\n    scriptResultReceipt,\n    returnReceipt,\n    callResult\n  };\n  return scriptResult;\n}\n__name(callResultToScriptResult, \"callResultToScriptResult\");\nfunction decodeCallResult(callResult, decoder, logs = [], groupedLogs = {}, abis) {\n  try {\n    const scriptResult = callResultToScriptResult(callResult);\n    return decoder(scriptResult);\n  } catch (error) {\n    if (error.code === ErrorCode2.SCRIPT_REVERTED) {\n      const statusReason = callResult?.dryRunStatus?.reason;\n      throw extractTxError({\n        logs,\n        groupedLogs,\n        receipts: callResult.receipts,\n        statusReason,\n        abis\n      });\n    }\n    throw error;\n  }\n}\n__name(decodeCallResult, \"decodeCallResult\");\nfunction callResultToInvocationResult(callResult, call2, logs, groupedLogs, abis) {\n  return decodeCallResult(\n    callResult,\n    (scriptResult) => {\n      if (scriptResult.returnReceipt.type === ReceiptType.Revert) {\n        throw new FuelError2(\n          ErrorCode2.SCRIPT_REVERTED,\n          `Script Reverted. Logs: ${JSON.stringify(logs)}`\n        );\n      }\n      if (scriptResult.returnReceipt.type !== ReceiptType.Return && scriptResult.returnReceipt.type !== ReceiptType.ReturnData) {\n        const { type } = scriptResult.returnReceipt;\n        throw new FuelError2(\n          ErrorCode2.SCRIPT_REVERTED,\n          `Script Return Type [${type}] Invalid. Logs: ${JSON.stringify({\n            logs,\n            groupedLogs,\n            receipt: scriptResult.returnReceipt\n          })}`\n        );\n      }\n      let value;\n      if (scriptResult.returnReceipt.type === ReceiptType.Return) {\n        value = scriptResult.returnReceipt.val;\n      }\n      if (scriptResult.returnReceipt.type === ReceiptType.ReturnData) {\n        const decoded = call2.func.decodeOutput(scriptResult.returnReceipt.data);\n        value = decoded[0];\n      }\n      return value;\n    },\n    logs,\n    groupedLogs,\n    abis\n  );\n}\n__name(callResultToInvocationResult, \"callResultToInvocationResult\");\nvar ScriptRequest = class _ScriptRequest {\n  static {\n    __name(this, \"ScriptRequest\");\n  }\n  /**\n   * The bytes of the script.\n   */\n  bytes;\n  /**\n   * A function to encode the script data.\n   */\n  scriptDataEncoder;\n  /**\n   * A function to decode the script result.\n   */\n  scriptResultDecoder;\n  /**\n   * Creates an instance of the ScriptRequest class.\n   *\n   * @param bytes - The bytes of the script.\n   * @param scriptDataEncoder - The script data encoder function.\n   * @param scriptResultDecoder - The script result decoder function.\n   */\n  constructor(bytes, scriptDataEncoder, scriptResultDecoder2) {\n    this.bytes = arrayify(bytes);\n    this.scriptDataEncoder = scriptDataEncoder;\n    this.scriptResultDecoder = scriptResultDecoder2;\n  }\n  /**\n   * Gets the script data offset for the given bytes.\n   *\n   * @param byteLength - The byte length of the script.\n   * @param maxInputs - The maxInputs value from the chain's consensus params.\n   * @returns The script data offset.\n   */\n  static getScriptDataOffsetWithScriptBytes(byteLength, maxInputs) {\n    const scriptDataBaseOffset = calculateVmTxMemory({ maxInputs }) + SCRIPT_FIXED_SIZE;\n    return scriptDataBaseOffset + byteLength;\n  }\n  /**\n   * Gets the script data offset.\n   *\n   * @param maxInputs - The maxInputs value from the chain's consensus params.\n   * @returns The script data offset.\n   */\n  getScriptDataOffset(maxInputs) {\n    return _ScriptRequest.getScriptDataOffsetWithScriptBytes(this.bytes.length, maxInputs);\n  }\n  /**\n   * Encodes the data for a script call.\n   *\n   * @param data - The script data.\n   * @returns The encoded data.\n   */\n  encodeScriptData(data) {\n    const callScript = this.scriptDataEncoder(data);\n    if (ArrayBuffer.isView(callScript)) {\n      return callScript;\n    }\n    this.bytes = arrayify(callScript.script);\n    return callScript.data;\n  }\n  /**\n   * Decodes the result of a script call.\n   *\n   * @param callResult - The CallResult from the script call.\n   * @param logs - Optional logs associated with the decoding.\n   * @returns The decoded result.\n   */\n  decodeCallResult(callResult, logs = []) {\n    return decodeCallResult(callResult, this.scriptResultDecoder, logs);\n  }\n};\n\n// src/contract-call-script.ts\nvar DEFAULT_OPCODE_PARAMS = {\n  assetIdOffset: 0,\n  amountOffset: 0,\n  gasForwardedOffset: 0,\n  callDataOffset: 0\n};\nvar SCRIPT_WRAPPER_CONTRACT_ID = ZeroBytes32;\nvar getSingleCallInstructions = /* @__PURE__ */ __name(({\n  callDataOffset,\n  gasForwardedOffset,\n  amountOffset,\n  assetIdOffset\n}) => {\n  const inst = new InstructionSet(\n    asm.movi(16, callDataOffset),\n    asm.movi(17, amountOffset),\n    asm.lw(17, 17, 0),\n    asm.movi(18, assetIdOffset)\n  );\n  if (gasForwardedOffset) {\n    inst.push(\n      asm.movi(19, gasForwardedOffset),\n      asm.lw(19, 19, 0),\n      asm.call(16, 17, 18, 19)\n    );\n  } else {\n    inst.push(asm.call(16, 17, 18, asm.RegId.cgas().to_u8()));\n  }\n  return inst;\n}, \"getSingleCallInstructions\");\nfunction getInstructions(offsets) {\n  if (!offsets.length) {\n    return new Uint8Array();\n  }\n  const multiCallInstructions = new InstructionSet();\n  for (let i = 0; i < offsets.length; i += 1) {\n    multiCallInstructions.extend(getSingleCallInstructions(offsets[i]).entries());\n  }\n  multiCallInstructions.push(asm.ret(1));\n  return multiCallInstructions.toBytes();\n}\n__name(getInstructions, \"getInstructions\");\nvar isReturnType = /* @__PURE__ */ __name((type) => type === ReceiptType2.Return || type === ReceiptType2.ReturnData, \"isReturnType\");\nvar getMainCallReceipt = /* @__PURE__ */ __name((receipts, contractId) => receipts.find(\n  ({ type, id, to }) => type === ReceiptType2.Call && id === SCRIPT_WRAPPER_CONTRACT_ID && to === contractId\n), \"getMainCallReceipt\");\nvar scriptResultDecoder = /* @__PURE__ */ __name((contractId) => (result) => {\n  if (toNumber(result.code) !== 0) {\n    throw new FuelError3(ErrorCode3.SCRIPT_REVERTED, `Transaction reverted.`);\n  }\n  const mainCallResult = getMainCallReceipt(\n    result.receipts,\n    contractId.toB256()\n  );\n  const mainCallInstructionStart = bn(mainCallResult?.is);\n  const receipts = result.receipts;\n  return receipts.filter(({ type }) => isReturnType(type)).flatMap((receipt) => {\n    if (!mainCallInstructionStart.eq(bn(receipt.is))) {\n      return [];\n    }\n    if (receipt.type === ReceiptType2.Return) {\n      return [new BigNumberCoder(\"u64\").encode(receipt.val)];\n    }\n    if (receipt.type === ReceiptType2.ReturnData) {\n      const encodedScriptReturn = arrayify2(receipt.data);\n      return [encodedScriptReturn];\n    }\n    return [new Uint8Array()];\n  });\n}, \"scriptResultDecoder\");\nvar decodeContractCallScriptResult = /* @__PURE__ */ __name((callResult, contractId, logs = [], groupedLogs = {}, abis) => decodeCallResult(callResult, scriptResultDecoder(contractId), logs, groupedLogs, abis), \"decodeContractCallScriptResult\");\nvar getCallInstructionsLength = /* @__PURE__ */ __name((contractCalls) => contractCalls.reduce(\n  (sum, call2) => {\n    const offset = { ...DEFAULT_OPCODE_PARAMS };\n    if (call2.gas) {\n      offset.gasForwardedOffset = 1;\n    }\n    return sum + getSingleCallInstructions(offset).byteLength();\n  },\n  asm.Instruction.size()\n  // placeholder for single RET instruction which is added later\n), \"getCallInstructionsLength\");\nvar getContractCallScript = /* @__PURE__ */ __name((functionScopes, maxInputs) => new ScriptRequest(\n  // Script to call the contract, start with stub size matching length of calls\n  getInstructions(new Array(functionScopes.length).fill(DEFAULT_OPCODE_PARAMS)),\n  (contractCalls) => {\n    const TOTAL_CALLS = contractCalls.length;\n    if (TOTAL_CALLS === 0) {\n      return { data: new Uint8Array(), script: new Uint8Array() };\n    }\n    const callInstructionsLength = getCallInstructionsLength(contractCalls);\n    const paddingLength = (8 - callInstructionsLength % 8) % 8;\n    const paddedInstructionsLength = callInstructionsLength + paddingLength;\n    const dataOffset = calculateScriptDataBaseOffset(maxInputs.toNumber()) + paddedInstructionsLength;\n    const paramOffsets = [];\n    let segmentOffset = dataOffset;\n    const scriptData = [];\n    for (let i = 0; i < TOTAL_CALLS; i += 1) {\n      const call2 = contractCalls[i];\n      const amountOffset = segmentOffset;\n      const assetIdOffset = amountOffset + WORD_SIZE2;\n      const callDataOffset = assetIdOffset + ASSET_ID_LEN2;\n      const encodedSelectorOffset = callDataOffset + CONTRACT_ID_LEN2 + WORD_SIZE2 + WORD_SIZE2;\n      const encodedArgsOffset = encodedSelectorOffset + call2.fnSelectorBytes.byteLength;\n      const encodedArgs = arrayify2(call2.data);\n      let gasForwardedOffset = 0;\n      scriptData.push(new BigNumberCoder(\"u64\").encode(call2.amount || 0));\n      scriptData.push(new B256Coder().encode(call2.assetId?.toString() || ZeroBytes32));\n      scriptData.push(call2.contractId.toBytes());\n      scriptData.push(new BigNumberCoder(\"u64\").encode(encodedSelectorOffset));\n      scriptData.push(new BigNumberCoder(\"u64\").encode(encodedArgsOffset));\n      scriptData.push(call2.fnSelectorBytes);\n      scriptData.push(encodedArgs);\n      if (call2.gas) {\n        scriptData.push(new BigNumberCoder(\"u64\").encode(call2.gas));\n        gasForwardedOffset = encodedArgsOffset + encodedArgs.byteLength;\n      }\n      const callParamOffsets = {\n        amountOffset,\n        assetIdOffset,\n        gasForwardedOffset,\n        callDataOffset\n      };\n      paramOffsets.push(callParamOffsets);\n      segmentOffset = dataOffset + concat2(scriptData).byteLength;\n    }\n    const script = getInstructions(paramOffsets);\n    const finalScriptData = concat2(scriptData);\n    return { data: finalScriptData, script };\n  },\n  () => [new Uint8Array()]\n), \"getContractCallScript\");\n\n// src/response.ts\nimport { getGasUsedFromReceipts } from \"@fuel-ts/account\";\nvar extractInvocationResult = /* @__PURE__ */ __name((functionScopes, receipts, isMultiCall, logs, groupedLogs = {}, abis) => {\n  const mainCallConfig = functionScopes[0]?.getCallConfig();\n  if (functionScopes.length === 1 && mainCallConfig && \"bytes\" in mainCallConfig.program) {\n    return callResultToInvocationResult({ receipts }, mainCallConfig, logs, groupedLogs, abis);\n  }\n  const encodedResults = decodeContractCallScriptResult(\n    { receipts },\n    (mainCallConfig?.program).id,\n    logs,\n    groupedLogs,\n    abis\n  );\n  const decodedResults = encodedResults.map((encodedResult, i) => {\n    const { func } = functionScopes[i].getCallConfig();\n    return func.decodeOutput(encodedResult)?.[0];\n  });\n  return isMultiCall ? decodedResults : decodedResults?.[0];\n}, \"extractInvocationResult\");\nvar buildFunctionResult = /* @__PURE__ */ __name(async (params) => {\n  const { funcScope, isMultiCall, program, transactionResponse } = params;\n  const txResult = await transactionResponse.waitForResult();\n  const { receipts } = txResult;\n  const functionScopes = Array.isArray(funcScope) ? funcScope : [funcScope];\n  const mainCallConfig = functionScopes[0]?.getCallConfig();\n  const { main, otherContractsAbis } = getAbisFromAllCalls(functionScopes);\n  const abis = { main, otherContractsAbis };\n  const { logs, groupedLogs } = getAllResultLogs({ receipts, mainCallConfig, functionScopes });\n  const value = extractInvocationResult(\n    functionScopes,\n    receipts,\n    isMultiCall,\n    logs,\n    groupedLogs,\n    abis\n  );\n  const gasUsed = getGasUsedFromReceipts(receipts);\n  const submitResult = {\n    isMultiCall,\n    functionScopes,\n    value,\n    program,\n    transactionResult: txResult,\n    transactionResponse,\n    transactionId: transactionResponse.id,\n    logs,\n    groupedLogs,\n    gasUsed\n  };\n  return submitResult;\n}, \"buildFunctionResult\");\nvar buildPreConfirmationFunctionResult = /* @__PURE__ */ __name(async (params) => {\n  const { funcScope, isMultiCall, program, transactionResponse } = params;\n  const transactionResult = await transactionResponse.waitForPreConfirmation();\n  const { receipts } = transactionResult;\n  const functionScopes = Array.isArray(funcScope) ? funcScope : [funcScope];\n  const mainCallConfig = functionScopes[0]?.getCallConfig();\n  let logs;\n  let groupedLogs;\n  let gasUsed;\n  let value;\n  if (receipts) {\n    ({ logs, groupedLogs } = getAllResultLogs({ receipts, mainCallConfig, functionScopes }));\n    value = extractInvocationResult(functionScopes, receipts, isMultiCall, logs, groupedLogs);\n    gasUsed = getGasUsedFromReceipts(receipts);\n  }\n  const submitResult = {\n    isMultiCall,\n    functionScopes,\n    program,\n    transactionResult,\n    transactionResponse,\n    transactionId: transactionResponse.id,\n    logs,\n    groupedLogs,\n    gasUsed,\n    value\n  };\n  return submitResult;\n}, \"buildPreConfirmationFunctionResult\");\nvar buildDryRunResult = /* @__PURE__ */ __name((params) => {\n  const { funcScopes, callResult, isMultiCall } = params;\n  const { receipts } = callResult;\n  const functionScopes = Array.isArray(funcScopes) ? funcScopes : [funcScopes];\n  const mainCallConfig = functionScopes[0]?.getCallConfig();\n  const { logs, groupedLogs } = getAllResultLogs({ receipts, mainCallConfig, functionScopes });\n  const value = extractInvocationResult(\n    functionScopes,\n    receipts,\n    isMultiCall,\n    logs,\n    groupedLogs\n  );\n  const gasUsed = getGasUsedFromReceipts(receipts);\n  const submitResult = {\n    functionScopes,\n    callResult,\n    isMultiCall,\n    gasUsed,\n    value\n  };\n  return submitResult;\n}, \"buildDryRunResult\");\n\n// src/functions/base-invocation-scope.ts\nfunction createContractCall(funcScope) {\n  const { program, args, forward, func, callParameters, externalAbis } = funcScope.getCallConfig();\n  const data = func.encodeArguments(args);\n  return {\n    contractId: program.id,\n    fnSelectorBytes: func.selectorBytes,\n    data,\n    assetId: forward?.assetId,\n    amount: forward?.amount,\n    gas: callParameters?.gasLimit,\n    externalContractsAbis: externalAbis\n  };\n}\n__name(createContractCall, \"createContractCall\");\nvar BaseInvocationScope = class {\n  static {\n    __name(this, \"BaseInvocationScope\");\n  }\n  transactionRequest;\n  program;\n  functionInvocationScopes = [];\n  txParameters;\n  assembleTxParameters;\n  requiredCoins = [];\n  isMultiCall = false;\n  hasCallParamsGasLimit = false;\n  // flag to check if any of the callParams has gasLimit set\n  externalAbis = {};\n  /**\n   * @deprecated - Should be removed with `addSigners`\n   */\n  addSignersCallback;\n  /**\n   * Constructs an instance of BaseInvocationScope.\n   *\n   * @param program - The abstract program to be invoked.\n   * @param isMultiCall - A flag indicating whether the invocation is a multi-call.\n   */\n  constructor(program, isMultiCall) {\n    this.program = program;\n    this.isMultiCall = isMultiCall;\n    this.transactionRequest = new ScriptTransactionRequest();\n  }\n  /**\n   * Getter for the contract calls.\n   *\n   * @returns An array of contract calls.\n   */\n  get calls() {\n    return this.functionInvocationScopes.map((funcScope) => createContractCall(funcScope));\n  }\n  /**\n   * Updates the script request with the current contract calls.\n   */\n  async updateScriptRequest() {\n    const provider = this.getProvider();\n    const {\n      consensusParameters: {\n        txParameters: { maxInputs }\n      }\n    } = await provider.getChain();\n    const contractCallScript = getContractCallScript(this.functionInvocationScopes, maxInputs);\n    this.transactionRequest.setScript(contractCallScript, this.calls);\n  }\n  /**\n   * Updates the transaction request with the current input/output.\n   */\n  updateContractInputAndOutput() {\n    const calls = this.calls;\n    calls.forEach((c) => {\n      if (c.contractId) {\n        this.transactionRequest.addContractInputAndOutput(c.contractId);\n      }\n      if (c.externalContractsAbis) {\n        Object.keys(c.externalContractsAbis).forEach(\n          (contractId) => this.transactionRequest.addContractInputAndOutput(new Address(contractId))\n        );\n      }\n    });\n  }\n  /**\n   * Gets the required coins for the transaction.\n   *\n   * @returns An array of required coin quantities.\n   */\n  getRequiredCoins() {\n    const forwardingAssets = this.calls.map((call2) => ({\n      assetId: String(call2.assetId),\n      amount: bn2(call2.amount || 0)\n    })).filter(({ assetId, amount }) => assetId && !bn2(amount).isZero());\n    return forwardingAssets;\n  }\n  /**\n   * Updates the required coins for the transaction.\n   */\n  updateRequiredCoins() {\n    const assets = this.getRequiredCoins();\n    const reduceForwardCoins = /* @__PURE__ */ __name((requiredCoins, { assetId, amount }) => {\n      const currentAmount = requiredCoins.get(assetId)?.amount || bn2(0);\n      return requiredCoins.set(assetId, {\n        assetId: String(assetId),\n        amount: currentAmount.add(amount)\n      });\n    }, \"reduceForwardCoins\");\n    this.requiredCoins = Array.from(\n      assets.reduce(reduceForwardCoins, /* @__PURE__ */ new Map()).values()\n    );\n  }\n  /**\n   * Adds a single call to the invocation scope.\n   *\n   * @param funcScope - The function scope to add.\n   * @returns The current instance of the class.\n   */\n  addCall(funcScope) {\n    this.addCalls([funcScope]);\n    return this;\n  }\n  /**\n   * Adds multiple calls to the invocation scope.\n   *\n   * @param funcScopes - An array of function scopes to add.\n   * @returns The current instance of the class.\n   */\n  addCalls(funcScopes) {\n    this.functionInvocationScopes.push(...funcScopes);\n    this.updateContractInputAndOutput();\n    this.updateRequiredCoins();\n    return this;\n  }\n  /**\n   * Prepares the transaction by updating the script request, required coins, and checking the gas limit.\n   */\n  async prepareTransaction() {\n    await asm2.initWasm();\n    await this.updateScriptRequest();\n    this.updateRequiredCoins();\n    this.checkGasLimitTotal();\n    if (this.transactionRequest.type === TransactionType.Script) {\n      this.transactionRequest.abis = getAbisFromAllCalls(this.functionInvocationScopes);\n    }\n  }\n  /**\n   * Checks if the total gas limit is within the acceptable range.\n   */\n  checkGasLimitTotal() {\n    const gasLimitOnCalls = this.calls.reduce((total, call2) => total.add(call2.gas || 0), bn2(0));\n    if (this.transactionRequest.gasLimit.eq(0)) {\n      this.transactionRequest.gasLimit = gasLimitOnCalls;\n    } else if (gasLimitOnCalls.gt(this.transactionRequest.gasLimit)) {\n      throw new FuelError4(\n        ErrorCode4.TRANSACTION_ERROR,\n        \"Transaction's gasLimit must be equal to or greater than the combined forwarded gas of all calls.\"\n      );\n    }\n  }\n  /**\n   * Gets the transaction cost for dry running the transaction.\n   *\n   * @returns The transaction cost details.\n   *\n   * @deprecated Use contract.fundWithRequiredCoins instead\n   * Check the migration guide https://docs.fuel.network/docs/fuels-ts/transactions/assemble-tx-migration-guide/ for more information.\n   */\n  async getTransactionCost() {\n    const request = clone(await this.getTransactionRequest());\n    const account = this.program.account ?? Wallet.generate({ provider: this.getProvider() });\n    return account.getTransactionCost(request, {\n      quantities: this.getRequiredCoins(),\n      signatureCallback: this.addSignersCallback\n    });\n  }\n  /**\n   * Funds the transaction request with the required coins and returns it.\n   *\n   * @returns The transaction request.\n   */\n  async fundWithRequiredCoins() {\n    let request = await this.getTransactionRequest();\n    request = clone(request);\n    let { feePayerAccount, accountCoinQuantities, ...restAssembleTxParams } = this.assembleTxParameters ?? {};\n    request.maxFee = bn2(0);\n    request.gasLimit = bn2(0);\n    const provider = this.getProvider();\n    const account = this.program.account ?? Wallet.generate({ provider });\n    const baseAssetId = await provider.getBaseAssetId();\n    if (!feePayerAccount) {\n      feePayerAccount = account;\n    }\n    if (!accountCoinQuantities) {\n      const outputQuantities = request.outputs.filter((o) => o.type === OutputType.Coin).map(({ amount, assetId }) => ({ assetId: String(assetId), amount: bn2(amount) }));\n      accountCoinQuantities = mergeQuantities(outputQuantities, this.requiredCoins);\n      if (!accountCoinQuantities.length) {\n        accountCoinQuantities.push({ assetId: baseAssetId, amount: bn2(0) });\n      }\n    }\n    let { assembledRequest, gasPrice } = await provider.assembleTx({\n      request,\n      feePayerAccount,\n      accountCoinQuantities,\n      ...restAssembleTxParams\n    });\n    assembledRequest = assembledRequest;\n    await setAndValidateGasAndFeeForAssembledTx({\n      gasPrice,\n      provider,\n      transactionRequest: assembledRequest,\n      setGasLimit: this.txParameters?.gasLimit,\n      setMaxFee: this.txParameters?.maxFee\n    });\n    return assembledRequest;\n  }\n  /**\n   * @deprecated - Should be removed with `addSigners`\n   */\n  async legacyFundWithRequiredCoins() {\n    let transactionRequest = await this.getTransactionRequest();\n    transactionRequest = clone(transactionRequest);\n    const txCost = await this.getTransactionCost();\n    const { gasUsed, missingContractIds, outputVariables, maxFee } = txCost;\n    this.setDefaultTxParams(transactionRequest, gasUsed, maxFee);\n    missingContractIds.forEach((contractId) => {\n      transactionRequest.addContractInputAndOutput(new Address(contractId));\n    });\n    transactionRequest.addVariableOutputs(outputVariables);\n    await this.program.account?.fund(transactionRequest, txCost);\n    if (this.addSignersCallback) {\n      await this.addSignersCallback(transactionRequest);\n    }\n    return transactionRequest;\n  }\n  /**\n   * Sets the transaction parameters.\n   *\n   * @param txParams - The transaction parameters to set.\n   * @returns The current instance of the class.\n   */\n  txParams(txParams) {\n    this.txParameters = txParams;\n    const request = this.transactionRequest;\n    request.tip = bn2(txParams.tip || request.tip);\n    request.gasLimit = bn2(txParams.gasLimit || request.gasLimit);\n    request.maxFee = txParams.maxFee ? bn2(txParams.maxFee) : request.maxFee;\n    request.witnessLimit = txParams.witnessLimit ? bn2(txParams.witnessLimit) : request.witnessLimit;\n    request.maturity = txParams.maturity || request.maturity;\n    request.expiration = txParams.expiration || request.expiration;\n    request.addVariableOutputs(this.txParameters?.variableOutputs || 0);\n    return this;\n  }\n  /**\n   * Sets the transaction parameters.\n   *\n   * @param assembleTxParams - The assembleTx parameters to set when invoking the `provider.assembleTx` method.\n   * @returns The current instance of the class.\n   */\n  assembleTxParams(txParams) {\n    this.assembleTxParameters = txParams;\n    return this;\n  }\n  /**\n   * Adds contracts to the invocation scope.\n   *\n   * @param contracts - An array of contracts to add.\n   * @returns The current instance of the class.\n   */\n  addContracts(contracts) {\n    contracts.forEach((contract) => {\n      if (typeof contract === \"string\") {\n        this.transactionRequest.addContractInputAndOutput(new Address(contract));\n      } else {\n        this.transactionRequest.addContractInputAndOutput(contract.id);\n        this.externalAbis[contract.id.toB256()] = contract.interface.jsonAbi;\n      }\n    });\n    return this;\n  }\n  /**\n   * Adds an asset transfer to an Account on the contract call transaction request.\n   *\n   * @param transferParams - The object representing the transfer to be made.\n   * @returns The current instance of the class.\n   */\n  addTransfer(transferParams) {\n    const { amount, destination, assetId } = transferParams;\n    this.transactionRequest = this.transactionRequest.addCoinOutput(\n      new Address(destination),\n      amount,\n      assetId\n    );\n    return this;\n  }\n  /**\n   * Adds multiple transfers to the contract call transaction request.\n   *\n   * @param transferParams - An array of `TransferParams` objects representing the transfers to be made.\n   * @returns The current instance of the class.\n   */\n  addBatchTransfer(transferParams) {\n    transferParams.forEach(({ destination, amount, assetId }) => {\n      this.transactionRequest = this.transactionRequest.addCoinOutput(\n        new Address(destination),\n        amount,\n        assetId\n      );\n    });\n    return this;\n  }\n  /**\n   * Adds signers to the transaction request.\n   *\n   * @param signers - The signers to add.\n   * @returns The current instance of the class.\n   *\n   * @deprecated This method is deprecated and will be removed in a future versions.\n   * All signatures should be manually added to the transaction request witnesses. If your\n   * Sway program relies on in-code signature validation, visit this guide:\n   * https://docs.fuel.network/docs/fuels-ts/cookbook/sway-script-with-signature-validation/\n   */\n  addSigners(signers) {\n    this.addSignersCallback = (transactionRequest) => transactionRequest.addAccountWitnesses(signers);\n    return this;\n  }\n  /**\n   * Prepares and returns the transaction request object.\n   *\n   * @returns The prepared transaction request.\n   */\n  async getTransactionRequest() {\n    await this.prepareTransaction();\n    return this.transactionRequest;\n  }\n  /**\n   * Sets the transaction request. Useful when you have used `getTransactionRequest` or\n   * `fundWithRequiredCoins` from the scope to apply customizations to the transaction request.\n   *\n   * @param request - The transaction request to set.\n   * @returns The current instance of the class.\n   */\n  fromRequest(request) {\n    this.transactionRequest = request;\n    return this;\n  }\n  /**\n   * Submits the contract call transaction and returns a promise that resolves to an object\n   * containing the transaction ID and a function to wait for the result. The promise will resolve\n   * as soon as the transaction is submitted to the node.\n   *\n   * @param params - Optional parameters for the call.\n   * - `skipAssembleTx`: A boolean indicating whether to skip assembling the transaction. This is useful\n   *   when customizations were made to the transaction request using the `assembleTx` method.\n   *\n   * @returns A promise that resolves to an object containing:\n   * - `transactionId`: The ID of the submitted transaction.\n   * - `waitForResult`: A function that waits for the transaction result.\n   * - `waitForPreConfirmation`: A function that waits for the transaction pre-confirmation.\n   * @template T - The type of the return value.\n   */\n  async call(params) {\n    assert(this.program.account, \"Wallet is required!\");\n    let transactionRequest = await this.getTransactionRequest();\n    const skipAssembleTx = params?.skipAssembleTx;\n    if (!skipAssembleTx) {\n      if (this.addSignersCallback) {\n        transactionRequest = await this.legacyFundWithRequiredCoins();\n      } else {\n        transactionRequest = await this.fundWithRequiredCoins();\n      }\n    }\n    const response = await this.program.account.sendTransaction(transactionRequest, {\n      estimateTxDependencies: false\n    });\n    const transactionId = response.id;\n    return {\n      transactionId,\n      waitForResult: /* @__PURE__ */ __name(async () => buildFunctionResult({\n        funcScope: this.functionInvocationScopes,\n        isMultiCall: this.isMultiCall,\n        program: this.program,\n        transactionResponse: response\n      }), \"waitForResult\"),\n      waitForPreConfirmation: /* @__PURE__ */ __name(async () => buildPreConfirmationFunctionResult({\n        funcScope: this.functionInvocationScopes,\n        isMultiCall: this.isMultiCall,\n        program: this.program,\n        transactionResponse: response\n      }), \"waitForPreConfirmation\")\n    };\n  }\n  /**\n   * Simulates a transaction.\n   *\n   * @returns The result of the invocation call.\n   */\n  async simulate() {\n    assert(this.program.account, \"Wallet is required!\");\n    if (!(\"populateTransactionWitnessesSignature\" in this.program.account)) {\n      throw new FuelError4(\n        ErrorCode4.ABI_MAIN_METHOD_MISSING,\n        \"An unlocked wallet is required to simulate a contract call.\"\n      );\n    }\n    const transactionRequest = await this.fundWithRequiredCoins();\n    const callResult = await this.program.account.simulateTransaction(transactionRequest, {\n      estimateTxDependencies: false\n    });\n    return buildDryRunResult({\n      funcScopes: this.functionInvocationScopes,\n      callResult,\n      isMultiCall: this.isMultiCall\n    });\n  }\n  /**\n   * Executes a transaction in dry run mode.\n   *\n   * @returns The result of the invocation call.\n   *\n   * @deprecated Use .get instead\n   */\n  async dryRun() {\n    const { receipts } = await this.getTransactionCost();\n    const callResult = {\n      receipts\n    };\n    return buildDryRunResult({\n      funcScopes: this.functionInvocationScopes,\n      callResult,\n      isMultiCall: this.isMultiCall\n    });\n  }\n  async get() {\n    let request = await this.getTransactionRequest();\n    request = clone(request);\n    request.maxFee = bn2(0);\n    request.gasLimit = bn2(0);\n    request.inputs = request.inputs.filter((i) => i.type !== InputType.Coin);\n    const provider = this.getProvider();\n    const account = this.program.account ?? Wallet.generate({ provider });\n    const baseAssetId = await provider.getBaseAssetId();\n    const allQuantities = request.outputs.filter((o) => o.type === OutputType.Coin).map(({ amount, assetId }) => ({ assetId: String(assetId), amount: bn2(amount) })).concat(this.requiredCoins);\n    const resources = account.generateFakeResources(allQuantities);\n    const utxoForBaseAssetId = resources.find((utxo) => utxo.assetId === baseAssetId);\n    const amountForFee = bn2(\"1000000000000000\");\n    if (!utxoForBaseAssetId) {\n      const [baseAssetResource] = account.generateFakeResources([\n        { assetId: baseAssetId, amount: amountForFee }\n      ]);\n      resources.push(baseAssetResource);\n    } else {\n      utxoForBaseAssetId.amount = utxoForBaseAssetId.amount.add(amountForFee);\n    }\n    request.addResources(resources);\n    const { receipts } = await provider.assembleTx({\n      request,\n      feePayerAccount: account\n    });\n    return buildDryRunResult({\n      funcScopes: this.functionInvocationScopes,\n      callResult: { receipts },\n      isMultiCall: this.isMultiCall\n    });\n  }\n  getProvider() {\n    const provider = this.program.provider;\n    return provider;\n  }\n  /**\n   * In case the gasLimit is *not* set by the user, this method sets a default value.\n   */\n  setDefaultTxParams(transactionRequest, gasUsed, maxFee) {\n    const gasLimitSpecified = isDefined(this.txParameters?.gasLimit) || this.hasCallParamsGasLimit;\n    const maxFeeSpecified = isDefined(this.txParameters?.maxFee);\n    const { gasLimit: setGasLimit, maxFee: setMaxFee } = transactionRequest;\n    if (!gasLimitSpecified) {\n      transactionRequest.gasLimit = gasUsed;\n    } else if (setGasLimit.lt(gasUsed)) {\n      throw new FuelError4(\n        ErrorCode4.GAS_LIMIT_TOO_LOW,\n        `Gas limit '${setGasLimit}' is lower than the required: '${gasUsed}'.`\n      );\n    }\n    if (!maxFeeSpecified) {\n      transactionRequest.maxFee = maxFee;\n    } else if (maxFee.gt(setMaxFee)) {\n      throw new FuelError4(\n        ErrorCode4.MAX_FEE_TOO_LOW,\n        `Max fee '${setMaxFee}' is lower than the required: '${maxFee}'.`\n      );\n    }\n  }\n};\n\n// src/functions/invocation-scope.ts\nvar FunctionInvocationScope = class extends BaseInvocationScope {\n  static {\n    __name(this, \"FunctionInvocationScope\");\n  }\n  func;\n  callParameters;\n  forward;\n  args;\n  /**\n   * Constructs an instance of FunctionInvocationScope.\n   *\n   * @param program - The program.\n   * @param func - The function fragment.\n   * @param args - The arguments.\n   */\n  constructor(program, func, args) {\n    super(program, false);\n    this.func = func;\n    this.args = args || [];\n    this.setArguments(...args);\n    super.addCall(this);\n  }\n  /**\n   * Gets the call configuration.\n   *\n   * @returns The call configuration.\n   */\n  getCallConfig() {\n    return {\n      func: this.func,\n      program: this.program,\n      callParameters: this.callParameters,\n      txParameters: this.txParameters,\n      forward: this.forward,\n      args: this.args,\n      externalAbis: this.externalAbis\n    };\n  }\n  /**\n   * Sets the arguments for the function invocation.\n   *\n   * @param args - The arguments.\n   * @returns The instance of FunctionInvocationScope.\n   */\n  setArguments(...args) {\n    this.args = args || [];\n    return this;\n  }\n  /**\n   * Sets the call parameters for the function invocation.\n   *\n   * @param callParams - The call parameters.\n   * @returns The instance of FunctionInvocationScope.\n   * @throws If the function is not payable and forward is set.\n   */\n  callParams(callParams) {\n    if (!this.hasCallParamsGasLimit && callParams?.gasLimit !== void 0) {\n      this.hasCallParamsGasLimit = true;\n    }\n    this.callParameters = callParams;\n    if (callParams?.forward) {\n      if (!this.func.attributes.find((attr) => attr.name === \"payable\")) {\n        throw new FuelError5(\n          ErrorCode5.TRANSACTION_ERROR,\n          `The target function ${this.func.name} cannot accept forwarded funds as it's not marked as 'payable'.`\n        );\n      }\n      this.forward = coinQuantityfy(callParams.forward);\n    }\n    this.setArguments(...this.args);\n    this.updateRequiredCoins();\n    return this;\n  }\n};\n\n// src/functions/multicall-scope.ts\nvar MultiCallInvocationScope = class extends BaseInvocationScope {\n  static {\n    __name(this, \"MultiCallInvocationScope\");\n  }\n  /**\n   * Constructs an instance of MultiCallInvocationScope.\n   *\n   * @param contract - The contract.\n   * @param funcScopes - An array of function invocation scopes.\n   */\n  constructor(contract, funcScopes) {\n    super(contract, true);\n    this.addCalls(funcScopes);\n  }\n  /**\n   * Adds a single function invocation scope to the multi-call invocation scope.\n   *\n   * @param funcScope - The function invocation scope.\n   * @returns The instance of MultiCallInvocationScope.\n   */\n  addCall(funcScope) {\n    return super.addCalls([funcScope]);\n  }\n  /**\n   * Adds multiple function invocation scopes to the multi-call invocation scope.\n   *\n   * @param funcScopes - An array of function invocation scopes.\n   * @returns The instance of MultiCallInvocationScope.\n   */\n  addCalls(funcScopes) {\n    return super.addCalls(funcScopes);\n  }\n};\n\n// src/contract.ts\nimport { Interface } from \"@fuel-ts/abi-coder\";\nimport { Address as Address2 } from \"@fuel-ts/address\";\nvar Contract = class {\n  static {\n    __name(this, \"Contract\");\n  }\n  /**\n   * The unique contract identifier.\n   */\n  id;\n  /**\n   * The provider for interacting with the contract.\n   */\n  provider;\n  /**\n   * The contract's ABI interface.\n   */\n  interface;\n  /**\n   * The account associated with the contract, if available.\n   */\n  account;\n  /**\n   * A collection of functions available on the contract.\n   */\n  functions = {};\n  /**\n   * Creates an instance of the Contract class.\n   *\n   * @param id - The contract's address.\n   * @param abi - The contract's ABI (JSON ABI or Interface instance).\n   * @param accountOrProvider - The account or provider for interaction.\n   */\n  constructor(id, abi, accountOrProvider) {\n    this.interface = abi instanceof Interface ? abi : new Interface(abi);\n    this.id = new Address2(id);\n    if (accountOrProvider && \"provider\" in accountOrProvider) {\n      this.provider = accountOrProvider.provider;\n      this.account = accountOrProvider;\n    } else {\n      this.provider = accountOrProvider;\n      this.account = null;\n    }\n    Object.keys(this.interface.functions).forEach((name) => {\n      const fragment = this.interface.getFunction(name);\n      Object.defineProperty(this.functions, fragment.name, {\n        value: this.buildFunction(fragment),\n        writable: false\n      });\n    });\n  }\n  /**\n   * Build a function invocation scope for the provided function fragment.\n   *\n   * @param func - The function fragment to build a scope for.\n   * @returns A function that creates a FunctionInvocationScope.\n   */\n  buildFunction(func) {\n    return (() => {\n      const funcInvocationScopeCreator = /* @__PURE__ */ __name((...args) => new FunctionInvocationScope(this, func, args), \"funcInvocationScopeCreator\");\n      Object.defineProperty(funcInvocationScopeCreator, \"isReadOnly\", {\n        value: /* @__PURE__ */ __name(() => func.isReadOnly(), \"value\"),\n        writable: false\n      });\n      return funcInvocationScopeCreator;\n    })();\n  }\n  /**\n   * Create a multi-call invocation scope for the provided function invocation scopes.\n   *\n   * @param calls - An array of FunctionInvocationScopes to execute in a batch.\n   * @returns A MultiCallInvocationScope instance.\n   */\n  multiCall(calls) {\n    return new MultiCallInvocationScope(this, calls);\n  }\n  /**\n   * Get the balance for a given asset ID for this contract.\n   *\n   * @param assetId - The specified asset ID.\n   * @returns The balance of the contract for the specified asset.\n   */\n  getBalance(assetId) {\n    return this.provider.getContractBalance(this.id, assetId);\n  }\n};\nexport {\n  AbstractContract,\n  AbstractProgram,\n  Contract,\n  FunctionInvocationScope,\n  InstructionSet,\n  MultiCallInvocationScope,\n  ScriptRequest,\n  assert,\n  buildDryRunResult,\n  buildFunctionResult,\n  buildPreConfirmationFunctionResult,\n  extractInvocationResult,\n  getAbisFromAllCalls,\n  getAllResultLogs,\n  getResultLogs\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/script.ts\nimport { Interface } from \"@fuel-ts/abi-coder\";\nimport { deployScriptOrPredicate } from \"@fuel-ts/account\";\nimport { FuelError as FuelError2 } from \"@fuel-ts/errors\";\nimport { arrayify } from \"@fuel-ts/utils\";\n\n// src/script-invocation-scope.ts\nimport { FuelError } from \"@fuel-ts/errors\";\nimport { ScriptRequest, FunctionInvocationScope } from \"@fuel-ts/program\";\nvar ScriptInvocationScope = class extends FunctionInvocationScope {\n  static {\n    __name(this, \"ScriptInvocationScope\");\n  }\n  scriptRequest;\n  async updateScriptRequest() {\n    if (!this.scriptRequest) {\n      await this.buildScriptRequest();\n    }\n    this.transactionRequest.setScript(this.scriptRequest, this.args);\n  }\n  async buildScriptRequest() {\n    const programBytes = this.program.bytes;\n    const chainInfoCache = await this.program.provider.getChain();\n    if (!chainInfoCache) {\n      throw new FuelError(\n        FuelError.CODES.CHAIN_INFO_CACHE_EMPTY,\n        \"Provider chain info cache is empty. Please make sure to initialize the `Provider` properly by running `new Provider()`\"\n      );\n    }\n    this.scriptRequest = new ScriptRequest(\n      programBytes,\n      (args) => this.func.encodeArguments(args),\n      () => []\n    );\n  }\n};\n\n// src/types.ts\nimport { AbstractProgram } from \"@fuel-ts/program\";\nvar AbstractScript = class extends AbstractProgram {\n  static {\n    __name(this, \"AbstractScript\");\n  }\n};\n\n// src/script.ts\nvar Script = class _Script extends AbstractScript {\n  static {\n    __name(this, \"Script\");\n  }\n  /**\n   * The compiled bytecode of the script.\n   */\n  bytes;\n  /**\n   * The ABI interface for the script.\n   */\n  interface;\n  /**\n   * The account associated with the script.\n   */\n  account;\n  /**\n   * The script request object.\n   */\n  script;\n  /**\n   * The provider used for interacting with the network.\n   */\n  provider;\n  /**\n   * Functions that can be invoked within the script.\n   */\n  functions;\n  /**\n   * Create a new instance of the Script class.\n   *\n   * @param bytecode - The compiled bytecode of the script.\n   * @param abi - The ABI interface for the script.\n   * @param account - The account associated with the script.\n   */\n  constructor(bytecode, abi, account) {\n    super();\n    this.bytes = arrayify(bytecode);\n    this.interface = new Interface(abi);\n    this.provider = account.provider;\n    this.account = account;\n    this.functions = {\n      main: /* @__PURE__ */ __name((...args) => new ScriptInvocationScope(this, this.interface.getFunction(\"main\"), args), \"main\")\n    };\n  }\n  /**\n   * Set the configurable constants of the script.\n   *\n   * @param configurables - An object containing the configurable constants and their values.\n   * @throws Will throw an error if the script has no configurable constants to be set or if an invalid constant is provided.\n   * @returns This instance of the `Script`.\n   */\n  setConfigurableConstants(configurables) {\n    try {\n      if (!Object.keys(this.interface.configurables).length) {\n        throw new FuelError2(\n          FuelError2.CODES.INVALID_CONFIGURABLE_CONSTANTS,\n          `The script does not have configurable constants to be set`\n        );\n      }\n      Object.entries(configurables).forEach(([key, value]) => {\n        if (!this.interface.configurables[key]) {\n          throw new FuelError2(\n            FuelError2.CODES.CONFIGURABLE_NOT_FOUND,\n            `The script does not have a configurable constant named: '${key}'`\n          );\n        }\n        const { offset } = this.interface.configurables[key];\n        const encoded = this.interface.encodeConfigurable(key, value);\n        this.bytes.set(encoded, offset);\n      });\n    } catch (err) {\n      throw new FuelError2(\n        FuelError2.CODES.INVALID_CONFIGURABLE_CONSTANTS,\n        `Error setting configurable constants: ${err.message}.`\n      );\n    }\n    return this;\n  }\n  /**\n   *\n   * @param account - The account used to pay the deployment costs.\n   * @returns The _blobId_ and a _waitForResult_ callback that returns the deployed predicate\n   * once the blob deployment transaction finishes.\n   *\n   * The returned loader script will have the same configurable constants\n   * as the original script which was used to generate the loader script.\n   */\n  deploy(account) {\n    return deployScriptOrPredicate({\n      deployer: account,\n      abi: this.interface.jsonAbi,\n      bytecode: this.bytes,\n      loaderInstanceCallback: /* @__PURE__ */ __name((loaderBytecode, newAbi) => new _Script(loaderBytecode, newAbi, this.account), \"loaderInstanceCallback\")\n    });\n  }\n};\n\n// src/scripts.ts\nimport { ScriptRequest as ScriptRequest2 } from \"@fuel-ts/program\";\nvar returnZeroScript = new ScriptRequest2(\n  /*\n    Opcode::RET(REG_ZERO)\n    Opcode::NOOP\n  */\n  // TODO: Don't use hardcoded scripts: https://github.com/FuelLabs/fuels-ts/issues/281\n  \"0x24000000\",\n  () => new Uint8Array(0),\n  () => void 0\n);\nexport {\n  AbstractScript,\n  Script,\n  returnZeroScript\n};\n//# sourceMappingURL=index.mjs.map","// src/configs.ts\nvar DEVNET_NETWORK_URL = \"https://devnet.fuel.network/v1/graphql\";\nvar TESTNET_NETWORK_URL = \"https://testnet.fuel.network/v1/graphql\";\nexport {\n  DEVNET_NETWORK_URL,\n  TESTNET_NETWORK_URL\n};\n//# sourceMappingURL=configs.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/contract-factory.ts\nimport { Interface, WORD_SIZE as WORD_SIZE2 } from \"@fuel-ts/abi-coder\";\nimport {\n  CreateTransactionRequest,\n  BlobTransactionRequest,\n  TransactionStatus,\n  calculateGasFee,\n  setAndValidateGasAndFeeForAssembledTx\n} from \"@fuel-ts/account\";\nimport { randomBytes } from \"@fuel-ts/crypto\";\nimport { ErrorCode, FuelError } from \"@fuel-ts/errors\";\nimport { hash } from \"@fuel-ts/hasher\";\nimport { bn } from \"@fuel-ts/math\";\nimport { Contract } from \"@fuel-ts/program\";\nimport { arrayify as arrayify3, isDefined } from \"@fuel-ts/utils\";\n\n// src/loader/loader-script.ts\nimport { BYTES_32 } from \"@fuel-ts/abi-coder\";\nimport { InstructionSet } from \"@fuel-ts/program\";\nimport { arrayify, concat } from \"@fuel-ts/utils\";\nimport * as asm from \"@fuels/vm-asm\";\nvar getLoaderInstructions = /* @__PURE__ */ __name((blobIds) => {\n  const { RegId, Instruction } = asm;\n  const numberOfInstructions = 12;\n  const numberOfBlobs = blobIds.length;\n  const blobIdSize = BYTES_32;\n  const blobIdBytes = concat(blobIds.map((b) => arrayify(b)));\n  const instructionBytes = new InstructionSet(\n    // 1. load the blob contents into memory\n    // find the start of the hardcoded blob ids, which are located after the code ends\n    asm.move_(16, RegId.pc().to_u8()),\n    // 0x10 to hold the address of the current blob id\n    asm.addi(16, 16, numberOfInstructions * Instruction.size()),\n    // The contract is going to be loaded from the current value of SP onwards, save\n    // the location into 0x16 so we can jump into it later on\n    asm.move_(22, RegId.sp().to_u8()),\n    // loop counter\n    asm.movi(19, numberOfBlobs),\n    // LOOP starts here\n    // 0x11 to hold the size of the current blob\n    asm.bsiz(17, 16),\n    // push the blob contents onto the stack\n    asm.ldc(16, 0, 17, 1),\n    // move on to the next blob\n    asm.addi(16, 16, blobIdSize),\n    // decrement the loop counter\n    asm.subi(19, 19, 1),\n    // Jump backwards (3+1) instructions if the counter has not reached 0\n    asm.jnzb(19, RegId.zero().to_u8(), 3),\n    // Jump into the memory where the contract is loaded\n    // what follows is called _jmp_mem by the sway compiler\n    // subtract the address contained in IS because jmp will add it back\n    asm.sub(22, 22, RegId.is().to_u8()),\n    // jmp will multiply by 4 so we need to divide to cancel that out\n    asm.divi(22, 22, 4),\n    // jump to the start of the contract we loaded\n    asm.jmp(22)\n  ).toBytes();\n  return concat([instructionBytes, blobIdBytes]);\n}, \"getLoaderInstructions\");\n\n// src/loader/utils.ts\nimport { WORD_SIZE } from \"@fuel-ts/abi-coder\";\nimport { concat as concat2 } from \"@fuel-ts/utils\";\nvar getContractChunks = /* @__PURE__ */ __name((bytecode, chunkSize) => {\n  const chunks = [];\n  for (let offset = 0, index = 0; offset < bytecode.length; offset += chunkSize, index++) {\n    let chunk = bytecode.slice(offset, offset + chunkSize);\n    let length = chunk.length;\n    if (length % WORD_SIZE !== 0) {\n      chunk = concat2([chunk, new Uint8Array(chunkSize - chunk.length)]);\n      length = chunk.length;\n    }\n    chunks.push({ id: index, size: length, bytecode: chunk });\n  }\n  return chunks;\n}, \"getContractChunks\");\n\n// src/util.ts\nimport { sha256 } from \"@fuel-ts/hasher\";\nimport { calcRoot, SparseMerkleTree } from \"@fuel-ts/merkle\";\nimport { chunkAndPadBytes, hexlify, concat as concat3, arrayify as arrayify2 } from \"@fuel-ts/utils\";\nvar getContractRoot = /* @__PURE__ */ __name((bytecode) => {\n  const chunkSize = 16 * 1024;\n  const bytes = arrayify2(bytecode);\n  const chunks = chunkAndPadBytes(bytes, chunkSize);\n  return calcRoot(chunks.map((c) => hexlify(c)));\n}, \"getContractRoot\");\nvar getContractStorageRoot = /* @__PURE__ */ __name((storageSlots) => {\n  const tree = new SparseMerkleTree();\n  storageSlots.forEach(({ key, value }) => tree.update(sha256(key), value));\n  return tree.root;\n}, \"getContractStorageRoot\");\nvar getContractId = /* @__PURE__ */ __name((bytecode, salt, stateRoot) => {\n  const root = getContractRoot(arrayify2(bytecode));\n  const contractId = sha256(concat3([\"0x4655454C\", salt, root, stateRoot]));\n  return contractId;\n}, \"getContractId\");\nvar hexlifyWithPrefix = /* @__PURE__ */ __name((value) => hexlify(value.startsWith(\"0x\") ? value : `0x${value}`), \"hexlifyWithPrefix\");\n\n// src/contract-factory.ts\nvar CHUNK_SIZE_MULTIPLIER = 0.95;\nvar ContractFactory = class _ContractFactory {\n  static {\n    __name(this, \"ContractFactory\");\n  }\n  bytecode;\n  interface;\n  provider;\n  account;\n  storageSlots;\n  /**\n   * Create a ContractFactory instance.\n   *\n   * @param bytecode - The bytecode of the contract.\n   * @param abi - The contract's ABI (Application Binary Interface).\n   * @param accountOrProvider - An account or provider to be associated with the factory.\n   */\n  constructor(bytecode, abi, accountOrProvider = null, storageSlots = []) {\n    this.bytecode = arrayify3(bytecode);\n    if (abi instanceof Interface) {\n      this.interface = abi;\n    } else {\n      this.interface = new Interface(abi);\n    }\n    if (accountOrProvider && \"provider\" in accountOrProvider) {\n      this.provider = accountOrProvider.provider;\n      this.account = accountOrProvider;\n    } else {\n      this.provider = accountOrProvider;\n      this.account = null;\n    }\n    this.storageSlots = storageSlots;\n  }\n  /**\n   * Connect the factory to a provider.\n   *\n   * @param provider - The provider to be associated with the factory.\n   * @returns A new ContractFactory instance.\n   */\n  connect(provider) {\n    return new _ContractFactory(this.bytecode, this.interface, provider);\n  }\n  /**\n   * Create a transaction request to deploy a contract with the specified options.\n   *\n   * @param deployOptions - Options for deploying the contract.\n   * @returns The CreateTransactionRequest object for deploying the contract.\n   */\n  createTransactionRequest(deployOptions) {\n    const storageSlots = (deployOptions?.storageSlots ?? []).concat(this.storageSlots).map(({ key, value }) => ({\n      key: hexlifyWithPrefix(key),\n      value: hexlifyWithPrefix(value)\n    })).filter((el, index, self) => self.findIndex((s) => s.key === el.key) === index).sort(({ key: keyA }, { key: keyB }) => keyA.localeCompare(keyB));\n    const options = {\n      salt: randomBytes(32),\n      ...deployOptions ?? {},\n      storageSlots\n    };\n    if (!this.provider) {\n      throw new FuelError(\n        ErrorCode.MISSING_PROVIDER,\n        \"Cannot create transaction request without provider\"\n      );\n    }\n    const bytecode = deployOptions?.bytecode || this.bytecode;\n    const stateRoot = options.stateRoot || getContractStorageRoot(options.storageSlots);\n    const contractId = getContractId(bytecode, options.salt, stateRoot);\n    const transactionRequest = new CreateTransactionRequest({\n      bytecodeWitnessIndex: 0,\n      witnesses: [bytecode],\n      ...options\n    });\n    transactionRequest.addContractCreatedOutput(contractId, stateRoot);\n    return {\n      contractId,\n      transactionRequest\n    };\n  }\n  /**\n   * Takes a transaction request, estimates it and funds it.\n   *\n   * @param request - the request to fund.\n   * @param options - options for funding the request.\n   * @returns a funded transaction request.\n   */\n  async fundTransactionRequest(request, options = {}) {\n    const account = this.getAccount();\n    const { maxFee: setMaxFee } = options;\n    const txCost = await account.getTransactionCost(request);\n    if (isDefined(setMaxFee)) {\n      if (txCost.maxFee.gt(setMaxFee)) {\n        throw new FuelError(\n          ErrorCode.MAX_FEE_TOO_LOW,\n          `Max fee '${options.maxFee}' is lower than the required: '${txCost.maxFee}'.`\n        );\n      }\n    } else {\n      request.maxFee = txCost.maxFee;\n    }\n    await account.fund(request, txCost);\n    return request;\n  }\n  async assembleTx(request, options = {}) {\n    const account = this.getAccount();\n    const { maxFee: setMaxFee } = options;\n    request.maxFee = bn(0);\n    const { gasPrice, assembledRequest } = await account.provider.assembleTx({\n      request,\n      feePayerAccount: account,\n      accountCoinQuantities: []\n    });\n    request = await setAndValidateGasAndFeeForAssembledTx({\n      gasPrice,\n      provider: account.provider,\n      transactionRequest: assembledRequest,\n      setMaxFee\n    });\n    return request;\n  }\n  /**\n   * Deploy a contract of any length with the specified options.\n   *\n   * @param deployOptions - Options for deploying the contract.\n   * @returns A promise that resolves to the deployed contract instance.\n   */\n  async deploy(deployOptions = {}) {\n    const account = this.getAccount();\n    const { consensusParameters } = await account.provider.getChain();\n    const maxContractSize = consensusParameters.contractParameters.contractMaxSize.toNumber();\n    return this.bytecode.length > maxContractSize ? this.deployAsBlobTx(deployOptions) : this.deployAsCreateTx(deployOptions);\n  }\n  /**\n   * Deploy a contract with the specified options.\n   *\n   * @param deployOptions - Options for deploying the contract.\n   * @returns A promise that resolves to the deployed contract instance.\n   */\n  async deployAsCreateTx(deployOptions = {}) {\n    const account = this.getAccount();\n    const { consensusParameters } = await account.provider.getChain();\n    const maxContractSize = consensusParameters.contractParameters.contractMaxSize.toNumber();\n    if (this.bytecode.length > maxContractSize) {\n      throw new FuelError(\n        ErrorCode.CONTRACT_SIZE_EXCEEDS_LIMIT,\n        \"Contract bytecode is too large. Please use `deployAsBlobTx` instead.\"\n      );\n    }\n    const { contractId, transactionRequest } = await this.prepareDeploy(deployOptions);\n    const transactionResponse = await account.sendTransaction(transactionRequest);\n    const waitForResult = /* @__PURE__ */ __name(async () => {\n      const transactionResult = await transactionResponse.waitForResult();\n      const contract = new Contract(contractId, this.interface, account);\n      return { contract, transactionResult };\n    }, \"waitForResult\");\n    const waitForPreConfirmation = /* @__PURE__ */ __name(async () => {\n      const transactionResult = await transactionResponse.waitForPreConfirmation();\n      const contract = new Contract(contractId, this.interface, account);\n      return { contract, transactionResult };\n    }, \"waitForPreConfirmation\");\n    return {\n      contractId,\n      waitForResult,\n      waitForPreConfirmation,\n      waitForTransactionId: /* @__PURE__ */ __name(() => Promise.resolve(transactionResponse.id), \"waitForTransactionId\")\n    };\n  }\n  /**\n   * Chunks and deploys a contract via a loader contract. Suitable for deploying contracts larger than the max contract size.\n   *\n   * @param deployOptions - Options for deploying the contract.\n   * @returns A promise that resolves to the deployed contract instance.\n   */\n  async deployAsBlobTx(deployOptions = {\n    chunkSizeMultiplier: CHUNK_SIZE_MULTIPLIER\n  }) {\n    const account = this.getAccount();\n    const { configurableConstants, chunkSizeMultiplier } = deployOptions;\n    if (configurableConstants) {\n      this.setConfigurableConstants(configurableConstants);\n    }\n    const chunkSize = await this.getMaxChunkSize(deployOptions, chunkSizeMultiplier);\n    const chunks = getContractChunks(arrayify3(this.bytecode), chunkSize).map((c) => {\n      const transactionRequest = this.blobTransactionRequest({\n        ...deployOptions,\n        bytecode: c.bytecode\n      });\n      return {\n        ...c,\n        transactionRequest,\n        blobId: transactionRequest.blobId\n      };\n    });\n    const blobIds = chunks.map(({ blobId }) => blobId);\n    const loaderBytecode = getLoaderInstructions(blobIds);\n    const { contractId, transactionRequest: createRequest } = this.createTransactionRequest({\n      bytecode: loaderBytecode,\n      ...deployOptions\n    });\n    const uniqueBlobIds = [...new Set(blobIds)];\n    const uploadedBlobIds = await account.provider.getBlobs(uniqueBlobIds);\n    const blobIdsToUpload = uniqueBlobIds.filter((id) => !uploadedBlobIds.includes(id));\n    let totalCost = bn(0);\n    const chainInfo = await account.provider.getChain();\n    const gasPrice = await account.provider.estimateGasPrice(10);\n    const priceFactor = chainInfo.consensusParameters.feeParameters.gasPriceFactor;\n    for (const { transactionRequest, blobId } of chunks) {\n      if (blobIdsToUpload.includes(blobId)) {\n        const minGas = transactionRequest.calculateMinGas(chainInfo);\n        const minFee = calculateGasFee({\n          gasPrice,\n          gas: minGas,\n          priceFactor,\n          tip: transactionRequest.tip\n        }).add(1);\n        totalCost = totalCost.add(minFee);\n      }\n      const createMinGas = createRequest.calculateMinGas(chainInfo);\n      const createMinFee = calculateGasFee({\n        gasPrice,\n        gas: createMinGas,\n        priceFactor,\n        tip: createRequest.tip\n      }).add(1);\n      totalCost = totalCost.add(createMinFee);\n    }\n    if (totalCost.gt(await account.getBalance())) {\n      throw new FuelError(ErrorCode.FUNDS_TOO_LOW, \"Insufficient balance to deploy contract.\");\n    }\n    let txIdResolver;\n    const txIdPromise = new Promise((resolve) => {\n      txIdResolver = resolve;\n    });\n    const waitForResult = /* @__PURE__ */ __name(async () => {\n      const uploadedBlobs = [];\n      for (const { blobId, transactionRequest } of chunks) {\n        if (!uploadedBlobs.includes(blobId) && blobIdsToUpload.includes(blobId)) {\n          const fundedBlobRequest = await this.assembleTx(transactionRequest, deployOptions);\n          let result;\n          try {\n            const blobTx = await account.sendTransaction(fundedBlobRequest);\n            result = await blobTx.waitForResult();\n          } catch (err) {\n            if (err.message.indexOf(`BlobId is already taken ${blobId}`) > -1) {\n              uploadedBlobs.push(blobId);\n              continue;\n            }\n            throw new FuelError(ErrorCode.TRANSACTION_FAILED, \"Failed to deploy contract chunk\");\n          }\n          if (!result.status || result.status !== TransactionStatus.success) {\n            throw new FuelError(ErrorCode.TRANSACTION_FAILED, \"Failed to deploy contract chunk\");\n          }\n          uploadedBlobs.push(blobId);\n        }\n      }\n      await this.assembleTx(createRequest, deployOptions);\n      txIdResolver(createRequest.getTransactionId(await account.provider.getChainId()));\n      const transactionResponse = await account.sendTransaction(createRequest);\n      const transactionResult = await transactionResponse.waitForResult();\n      const contract = new Contract(contractId, this.interface, account);\n      return { contract, transactionResult };\n    }, \"waitForResult\");\n    const waitForTransactionId = /* @__PURE__ */ __name(() => txIdPromise, \"waitForTransactionId\");\n    return { waitForResult, contractId, waitForTransactionId };\n  }\n  /**\n   * Set configurable constants of the contract with the specified values.\n   *\n   * @param configurableConstants - An object containing configurable names and their values.\n   */\n  setConfigurableConstants(configurableConstants) {\n    try {\n      const hasConfigurable = Object.keys(this.interface.configurables).length;\n      if (!hasConfigurable) {\n        throw new FuelError(\n          ErrorCode.CONFIGURABLE_NOT_FOUND,\n          \"Contract does not have configurables to be set\"\n        );\n      }\n      Object.entries(configurableConstants).forEach(([key, value]) => {\n        if (!this.interface.configurables[key]) {\n          throw new FuelError(\n            ErrorCode.CONFIGURABLE_NOT_FOUND,\n            `Contract does not have a configurable named: '${key}'`\n          );\n        }\n        const { offset } = this.interface.configurables[key];\n        const encoded = this.interface.encodeConfigurable(key, value);\n        const bytes = arrayify3(this.bytecode);\n        bytes.set(encoded, offset);\n        this.bytecode = bytes;\n      });\n    } catch (err) {\n      throw new FuelError(\n        ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,\n        `Error setting configurable constants on contract: ${err.message}.`\n      );\n    }\n  }\n  getAccount() {\n    if (!this.account) {\n      throw new FuelError(ErrorCode.ACCOUNT_REQUIRED, \"Account not assigned to contract.\");\n    }\n    return this.account;\n  }\n  async prepareDeploy(deployOptions) {\n    const { configurableConstants } = deployOptions;\n    if (configurableConstants) {\n      this.setConfigurableConstants(configurableConstants);\n    }\n    const { contractId, transactionRequest } = this.createTransactionRequest(deployOptions);\n    await this.assembleTx(transactionRequest, deployOptions);\n    return {\n      contractId,\n      transactionRequest\n    };\n  }\n  /**\n   * Create a blob transaction request, used for deploying contract chunks.\n   *\n   * @param options - options for creating a blob transaction request.\n   * @returns a populated BlobTransactionRequest.\n   */\n  blobTransactionRequest(options) {\n    const { bytecode } = options;\n    return new BlobTransactionRequest({\n      blobId: hash(bytecode),\n      witnessIndex: 0,\n      witnesses: [bytecode],\n      ...options\n    });\n  }\n  /**\n   * Get the maximum chunk size for deploying a contract by chunks.\n   */\n  async getMaxChunkSize(deployOptions, chunkSizeMultiplier = CHUNK_SIZE_MULTIPLIER) {\n    if (chunkSizeMultiplier < 0 || chunkSizeMultiplier > 1) {\n      throw new FuelError(\n        ErrorCode.INVALID_CHUNK_SIZE_MULTIPLIER,\n        \"Chunk size multiplier must be between 0 and 1\"\n      );\n    }\n    const account = this.getAccount();\n    const { consensusParameters } = await account.provider.getChain();\n    const contractSizeLimit = consensusParameters.contractParameters.contractMaxSize.toNumber();\n    const transactionSizeLimit = consensusParameters.txParameters.maxSize.toNumber();\n    const maxLimit = 64e3;\n    const chainLimit = transactionSizeLimit < contractSizeLimit ? transactionSizeLimit : contractSizeLimit;\n    const sizeLimit = chainLimit < maxLimit ? chainLimit : maxLimit;\n    const blobTx = this.blobTransactionRequest({\n      ...deployOptions,\n      bytecode: randomBytes(32)\n    }).addResources(\n      account.generateFakeResources([\n        { assetId: await account.provider.getBaseAssetId(), amount: bn(1) }\n      ])\n    );\n    const maxChunkSize = (sizeLimit - blobTx.byteLength() - WORD_SIZE2) * chunkSizeMultiplier;\n    return Math.round(maxChunkSize / WORD_SIZE2) * WORD_SIZE2;\n  }\n};\nexport {\n  ContractFactory,\n  getContractId,\n  getContractRoot,\n  getContractStorageRoot,\n  hexlifyWithPrefix\n};\n//# sourceMappingURL=index.mjs.map","// src/configs.ts\nvar DEFAULT_PRECISION = 9;\nvar DEFAULT_MIN_PRECISION = 3;\nvar DEFAULT_DECIMAL_UNITS = 9;\nvar DECIMAL_FUEL = 9;\nvar DECIMAL_WEI = 18;\nvar DECIMAL_KWEI = 15;\nvar DECIMAL_MWEI = 12;\nvar DECIMAL_GWEI = 9;\nexport {\n  DECIMAL_FUEL,\n  DECIMAL_GWEI,\n  DECIMAL_KWEI,\n  DECIMAL_MWEI,\n  DECIMAL_WEI,\n  DEFAULT_DECIMAL_UNITS,\n  DEFAULT_MIN_PRECISION,\n  DEFAULT_PRECISION\n};\n//# sourceMappingURL=configs.mjs.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) =>\n  __defProp(target, \"name\", { value, configurable: true });\n\n// src/types/Src14OwnedProxy.ts\nimport { Contract as __Contract } from \"@fuel-ts/program\";\nimport { Interface } from \"@fuel-ts/abi-coder\";\nvar abi = {\n  programType: \"contract\",\n  specVersion: \"1\",\n  encodingVersion: \"1\",\n  concreteTypes: [\n    {\n      type: \"()\",\n      concreteTypeId:\n        \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n    },\n    {\n      type: \"enum standards::src5::AccessError\",\n      concreteTypeId:\n        \"3f702ea3351c9c1ece2b84048006c8034a24cbc2bad2e740d0412b4172951d3d\",\n      metadataTypeId: 1,\n    },\n    {\n      type: \"enum standards::src5::State\",\n      concreteTypeId:\n        \"192bc7098e2fe60635a9918afb563e4e5419d386da2bdbf0d716b4bc8549802c\",\n      metadataTypeId: 2,\n    },\n    {\n      type: \"enum std::option::Option<struct std::contract_id::ContractId>\",\n      concreteTypeId:\n        \"0d79387ad3bacdc3b7aad9da3a96f4ce60d9a1b6002df254069ad95a3931d5c8\",\n      metadataTypeId: 4,\n      typeArguments: [\n        \"29c10735d33b5159f0c71ee1dbd17b36a3e69e41f00fab0d42e1bd9f428d8a54\",\n      ],\n    },\n    {\n      type: \"enum sway_libs::ownership::errors::InitializationError\",\n      concreteTypeId:\n        \"1dfe7feadc1d9667a4351761230f948744068a090fe91b1bc6763a90ed5d3893\",\n      metadataTypeId: 5,\n    },\n    {\n      type: \"enum sway_libs::upgradability::errors::SetProxyOwnerError\",\n      concreteTypeId:\n        \"3c6e90ae504df6aad8b34a93ba77dc62623e00b777eecacfa034a8ac6e890c74\",\n      metadataTypeId: 6,\n    },\n    {\n      type: \"str\",\n      concreteTypeId:\n        \"8c25cb3686462e9a86d2883c5688a22fe738b0bbc85f458d2d2b5f3f667c6d5a\",\n    },\n    {\n      type: \"struct std::contract_id::ContractId\",\n      concreteTypeId:\n        \"29c10735d33b5159f0c71ee1dbd17b36a3e69e41f00fab0d42e1bd9f428d8a54\",\n      metadataTypeId: 9,\n    },\n    {\n      type: \"struct sway_libs::upgradability::events::ProxyOwnerSet\",\n      concreteTypeId:\n        \"96dd838b44f99d8ccae2a7948137ab6256c48ca4abc6168abc880de07fba7247\",\n      metadataTypeId: 10,\n    },\n    {\n      type: \"struct sway_libs::upgradability::events::ProxyTargetSet\",\n      concreteTypeId:\n        \"1ddc0adda1270a016c08ffd614f29f599b4725407c8954c8b960bdf651a9a6c8\",\n      metadataTypeId: 11,\n    },\n  ],\n  metadataTypes: [\n    {\n      type: \"b256\",\n      metadataTypeId: 0,\n    },\n    {\n      type: \"enum standards::src5::AccessError\",\n      metadataTypeId: 1,\n      components: [\n        {\n          name: \"NotOwner\",\n          typeId:\n            \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n        },\n      ],\n    },\n    {\n      type: \"enum standards::src5::State\",\n      metadataTypeId: 2,\n      components: [\n        {\n          name: \"Uninitialized\",\n          typeId:\n            \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n        },\n        {\n          name: \"Initialized\",\n          typeId: 3,\n        },\n        {\n          name: \"Revoked\",\n          typeId:\n            \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n        },\n      ],\n    },\n    {\n      type: \"enum std::identity::Identity\",\n      metadataTypeId: 3,\n      components: [\n        {\n          name: \"Address\",\n          typeId: 8,\n        },\n        {\n          name: \"ContractId\",\n          typeId: 9,\n        },\n      ],\n    },\n    {\n      type: \"enum std::option::Option\",\n      metadataTypeId: 4,\n      components: [\n        {\n          name: \"None\",\n          typeId:\n            \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n        },\n        {\n          name: \"Some\",\n          typeId: 7,\n        },\n      ],\n      typeParameters: [7],\n    },\n    {\n      type: \"enum sway_libs::ownership::errors::InitializationError\",\n      metadataTypeId: 5,\n      components: [\n        {\n          name: \"CannotReinitialized\",\n          typeId:\n            \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n        },\n      ],\n    },\n    {\n      type: \"enum sway_libs::upgradability::errors::SetProxyOwnerError\",\n      metadataTypeId: 6,\n      components: [\n        {\n          name: \"CannotUninitialize\",\n          typeId:\n            \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n        },\n      ],\n    },\n    {\n      type: \"generic T\",\n      metadataTypeId: 7,\n    },\n    {\n      type: \"struct std::address::Address\",\n      metadataTypeId: 8,\n      components: [\n        {\n          name: \"bits\",\n          typeId: 0,\n        },\n      ],\n    },\n    {\n      type: \"struct std::contract_id::ContractId\",\n      metadataTypeId: 9,\n      components: [\n        {\n          name: \"bits\",\n          typeId: 0,\n        },\n      ],\n    },\n    {\n      type: \"struct sway_libs::upgradability::events::ProxyOwnerSet\",\n      metadataTypeId: 10,\n      components: [\n        {\n          name: \"new_proxy_owner\",\n          typeId: 2,\n        },\n      ],\n    },\n    {\n      type: \"struct sway_libs::upgradability::events::ProxyTargetSet\",\n      metadataTypeId: 11,\n      components: [\n        {\n          name: \"new_target\",\n          typeId: 9,\n        },\n      ],\n    },\n  ],\n  functions: [\n    {\n      inputs: [],\n      name: \"proxy_target\",\n      output:\n        \"0d79387ad3bacdc3b7aad9da3a96f4ce60d9a1b6002df254069ad95a3931d5c8\",\n      attributes: [\n        {\n          name: \"doc-comment\",\n          arguments: [\" Returns the target contract of the proxy contract.\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Returns\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\n            \" * [Option<ContractId>] - The new proxy contract to which all fallback calls will be passed or `None`.\",\n          ],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Number of Storage Accesses\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" * Reads: `1`\"],\n        },\n        {\n          name: \"storage\",\n          arguments: [\"read\"],\n        },\n      ],\n    },\n    {\n      inputs: [\n        {\n          name: \"new_target\",\n          concreteTypeId:\n            \"29c10735d33b5159f0c71ee1dbd17b36a3e69e41f00fab0d42e1bd9f428d8a54\",\n        },\n      ],\n      name: \"set_proxy_target\",\n      output:\n        \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n      attributes: [\n        {\n          name: \"doc-comment\",\n          arguments: [\" Change the target contract of the proxy contract.\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Additional Information\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" This method can only be called by the `proxy_owner`.\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Arguments\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\n            \" * `new_target`: [ContractId] - The new proxy contract to which all fallback calls will be passed.\",\n          ],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Reverts\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" * When not called by `proxy_owner`.\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Number of Storage Accesses\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" * Reads: `1`\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" * Write: `1`\"],\n        },\n        {\n          name: \"storage\",\n          arguments: [\"read\", \"write\"],\n        },\n      ],\n    },\n    {\n      inputs: [],\n      name: \"proxy_owner\",\n      output:\n        \"192bc7098e2fe60635a9918afb563e4e5419d386da2bdbf0d716b4bc8549802c\",\n      attributes: [\n        {\n          name: \"doc-comment\",\n          arguments: [\" Returns the owner of the proxy contract.\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Returns\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\n            \" * [State] - Represents the state of ownership for this contract.\",\n          ],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Number of Storage Accesses\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" * Reads: `1`\"],\n        },\n        {\n          name: \"storage\",\n          arguments: [\"read\"],\n        },\n      ],\n    },\n    {\n      inputs: [],\n      name: \"initialize_proxy\",\n      output:\n        \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n      attributes: [\n        {\n          name: \"doc-comment\",\n          arguments: [\" Initializes the proxy contract.\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Additional Information\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\n            \" This method sets the storage values using the values of the configurable constants `INITIAL_TARGET` and `INITIAL_OWNER`.\",\n          ],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\n            \" This then allows methods that write to storage to be called.\",\n          ],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" This method can only be called once.\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Reverts\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\n            \" * When `storage::SRC14.proxy_owner` is not [State::Uninitialized].\",\n          ],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Number of Storage Accesses\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" * Writes: `2`\"],\n        },\n        {\n          name: \"storage\",\n          arguments: [\"write\"],\n        },\n      ],\n    },\n    {\n      inputs: [\n        {\n          name: \"new_proxy_owner\",\n          concreteTypeId:\n            \"192bc7098e2fe60635a9918afb563e4e5419d386da2bdbf0d716b4bc8549802c\",\n        },\n      ],\n      name: \"set_proxy_owner\",\n      output:\n        \"2e38e77b22c314a449e91fafed92a43826ac6aa403ae6a8acb6cf58239fbaf5d\",\n      attributes: [\n        {\n          name: \"doc-comment\",\n          arguments: [\" Changes proxy ownership to the passed State.\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Additional Information\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\n            \" This method can be used to transfer ownership between Identities or to revoke ownership.\",\n          ],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Arguments\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\n            \" * `new_proxy_owner`: [State] - The new state of the proxy ownership.\",\n          ],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Reverts\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" * When the sender is not the current proxy owner.\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\n            \" * When the new state of the proxy ownership is [State::Uninitialized].\",\n          ],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" # Number of Storage Accesses\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\"\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" * Reads: `1`\"],\n        },\n        {\n          name: \"doc-comment\",\n          arguments: [\" * Writes: `1`\"],\n        },\n        {\n          name: \"storage\",\n          arguments: [\"write\"],\n        },\n      ],\n    },\n  ],\n  loggedTypes: [\n    {\n      logId: \"4571204900286667806\",\n      concreteTypeId:\n        \"3f702ea3351c9c1ece2b84048006c8034a24cbc2bad2e740d0412b4172951d3d\",\n    },\n    {\n      logId: \"2151606668983994881\",\n      concreteTypeId:\n        \"1ddc0adda1270a016c08ffd614f29f599b4725407c8954c8b960bdf651a9a6c8\",\n    },\n    {\n      logId: \"2161305517876418151\",\n      concreteTypeId:\n        \"1dfe7feadc1d9667a4351761230f948744068a090fe91b1bc6763a90ed5d3893\",\n    },\n    {\n      logId: \"4354576968059844266\",\n      concreteTypeId:\n        \"3c6e90ae504df6aad8b34a93ba77dc62623e00b777eecacfa034a8ac6e890c74\",\n    },\n    {\n      logId: \"10870989709723147660\",\n      concreteTypeId:\n        \"96dd838b44f99d8ccae2a7948137ab6256c48ca4abc6168abc880de07fba7247\",\n    },\n    {\n      logId: \"10098701174489624218\",\n      concreteTypeId:\n        \"8c25cb3686462e9a86d2883c5688a22fe738b0bbc85f458d2d2b5f3f667c6d5a\",\n    },\n  ],\n  messagesTypes: [],\n  configurables: [\n    {\n      name: \"INITIAL_TARGET\",\n      concreteTypeId:\n        \"0d79387ad3bacdc3b7aad9da3a96f4ce60d9a1b6002df254069ad95a3931d5c8\",\n      offset: 13368,\n    },\n    {\n      name: \"INITIAL_OWNER\",\n      concreteTypeId:\n        \"192bc7098e2fe60635a9918afb563e4e5419d386da2bdbf0d716b4bc8549802c\",\n      offset: 13320,\n    },\n  ],\n};\nvar storageSlots = [\n  {\n    key: \"7bb458adc1d118713319a5baa00a2d049dd64d2916477d2688d76970c898cd55\",\n    value: \"0000000000000000000000000000000000000000000000000000000000000000\",\n  },\n  {\n    key: \"7bb458adc1d118713319a5baa00a2d049dd64d2916477d2688d76970c898cd56\",\n    value: \"0000000000000000000000000000000000000000000000000000000000000000\",\n  },\n  {\n    key: \"bb79927b15d9259ea316f2ecb2297d6cc8851888a98278c0a2e03e1a091ea754\",\n    value: \"0000000000000000000000000000000000000000000000000000000000000000\",\n  },\n  {\n    key: \"bb79927b15d9259ea316f2ecb2297d6cc8851888a98278c0a2e03e1a091ea755\",\n    value: \"0000000000000000000000000000000000000000000000000000000000000000\",\n  },\n];\nvar Src14OwnedProxy = class extends __Contract {\n  static {\n    __name(this, \"Src14OwnedProxy\");\n  }\n  static abi = abi;\n  static storageSlots = storageSlots;\n  constructor(id, accountOrProvider) {\n    super(id, abi, accountOrProvider);\n  }\n};\n\n// src/types/Src14OwnedProxyFactory.ts\nimport { ContractFactory as __ContractFactory } from \"@fuel-ts/contract\";\nimport { decompressBytecode } from \"@fuel-ts/utils\";\nvar bytecode = decompressBytecode(\n  \"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\",\n);\nvar Src14OwnedProxyFactory = class _Src14OwnedProxyFactory extends __ContractFactory {\n  static {\n    __name(this, \"Src14OwnedProxyFactory\");\n  }\n  static bytecode = bytecode;\n  constructor(accountOrProvider) {\n    super(\n      bytecode,\n      Src14OwnedProxy.abi,\n      accountOrProvider,\n      Src14OwnedProxy.storageSlots,\n    );\n  }\n  static deploy(wallet, options = {}) {\n    const factory = new _Src14OwnedProxyFactory(wallet);\n    return factory.deploy(options);\n  }\n};\nexport { Src14OwnedProxy, Src14OwnedProxyFactory };\n//# sourceMappingURL=index.mjs.map\n"],"names":["wasm$1","cachedTextDecoder","cachedUint8ArrayMemory0","getUint8ArrayMemory0","getStringFromWasm0","ptr","len","_assertClass","instance","klass","gm_args","ra","args","ret","Instruction","gtf_args","rb","wdcm_args","rc","CompareArgs","ptr0","wqcm_args","wdop_args","MathArgs","wqop_args","wdml_args","MulArgs","wqml_args","wddv_args","DivArgs","wqdv_args","add","dst","lhs","rhs","and","div","eq","exp","gt","lt","mlog","mroo","mod_","move_","src","mul","not","arg","or","sll","srl","sub","xor","mldv","mul_lhs","mul_rhs","divisor","value","retd","addr","aloc","bytes","mcl","dst_addr","mcp","src_addr","meq","result","lhs_addr","rhs_addr","bhsh","heigth","bhei","burn","amount","sub_id_addr","call","target_struct","fwd_coins","asset_id_addr","fwd_gas","ccp","contract_id_addr","offset","croo","csiz","cb","ldc","mode","log","a","b","c","d","logd","mint","rvrt","scwq","key_addr","status","lenq","srw","srwq","sww","swwq","tr","tro","output_index","eck1","sig_addr","msg_hash_addr","ecr1","ed19","pub_key_addr","msg_addr","msg_len","k256","s256","time","noop","flag","bal","jmp","abs_target","jne","smo","recipient_addr","data_addr","data_len","coins","addi","andi","divi","expi","modi","muli","ori","slli","srli","subi","xori","jnei","cond_lhs","cond_rhs","lb","lw","sb","sw","mcpi","gtf","selector","mcli","count","gm","movi","val","jnzi","cond_nz","jmpf","dynamic","fixed","jmpb","jnzf","jnzb","jnef","jneb","ji","cfei","cfsi","cfe","cfs","pshl","bitmask","pshh","popl","poph","wdcm","flags","wqcm","wdop","wqop","wdml","wqml","wddv","wqdv","wdmd","wqmd","wdam","add_lhs","add_rhs","modulo","wqam","wdmm","wqmm","ecal","bsiz","blob_id_ptr","bldd","dst_ptr","ecop","curve_id","operation_type","points_ptr","epar","success","number_elements","cachedDataViewMemory0","getDataViewMemory0","getArrayU8FromWasm0","CompareMode","GMArgs","GTFArgs","MathOp","PanicReason","ADDFinalization","ADD","RegId","ptr1","ptr2","ADDIFinalization","ADDI","Imm12","ALOCFinalization","ALOC","ANDFinalization","AND","ANDIFinalization","ANDI","BALFinalization","BAL","BHEIFinalization","BHEI","BHSHFinalization","BHSH","BLDDFinalization","BLDD","ptr3","BSIZFinalization","BSIZ","BURNFinalization","BURN","CALLFinalization","CALL","CBFinalization","CB","CCPFinalization","CCP","CFEFinalization","CFE","CFEIFinalization","CFEI","Imm24","CFSFinalization","CFS","CFSIFinalization","CFSI","CROOFinalization","CROO","CSIZFinalization","CSIZ","CompareArgsFinalization","obj","arg0","Imm06","bits","DIVFinalization","DIV","DIVIFinalization","DIVI","DivArgsFinalization","ECALFinalization","ECAL","ECK1Finalization","ECK1","ECOPFinalization","ECOP","ECR1Finalization","ECR1","ED19Finalization","ED19","EPARFinalization","EPAR","EQFinalization","EQ","EXPFinalization","EXP","EXPIFinalization","EXPI","FLAGFinalization","FLAG","GMFinalization","GM","Imm18","GTFinalization","GT","GTFFinalization","GTF","Imm06Finalization","Imm12Finalization","Imm18Finalization","Imm24Finalization","InstructionFinalization","retptr","r0","r1","v1","JIFinalization","JI","JMPFinalization","JMP","JMPBFinalization","JMPB","JMPFFinalization","JMPF","JNEFinalization","JNE","JNEBFinalization","JNEB","JNEFFinalization","JNEF","JNEIFinalization","JNEI","JNZBFinalization","JNZB","JNZFFinalization","JNZF","JNZIFinalization","JNZI","K256Finalization","K256","LBFinalization","LB","LDCFinalization","LDC","LOGFinalization","LOG","LOGDFinalization","LOGD","LTFinalization","LT","LWFinalization","LW","MCLFinalization","MCL","MCLIFinalization","MCLI","MCPFinalization","MCP","MCPIFinalization","MCPI","MEQFinalization","MEQ","MINTFinalization","MINT","MLDVFinalization","MLDV","MLOGFinalization","MLOG","MODFinalization","MOD","MODIFinalization","MODI","MOVEFinalization","MOVE","MOVIFinalization","MOVI","MROOFinalization","MROO","MULFinalization","MUL","MULIFinalization","MULI","MathArgsFinalization","MulArgsFinalization","NOOPFinalization","NOOP","NOTFinalization","NOT","ORFinalization","OR","ORIFinalization","ORI","POPHFinalization","POPH","POPLFinalization","POPL","PSHHFinalization","PSHH","PSHLFinalization","PSHL","PanicInstructionFinalization","PanicInstruction","reason","instruction","RETFinalization","RET","RETDFinalization","RETD","RVRTFinalization","RVRT","RegIdFinalization","u","S256Finalization","S256","SBFinalization","SB","SCWQFinalization","SCWQ","SLLFinalization","SLL","SLLIFinalization","SLLI","SMOFinalization","SMO","SRLFinalization","SRL","SRLIFinalization","SRLI","SRWFinalization","SRW","SRWQFinalization","SRWQ","SUBFinalization","SUB","SUBIFinalization","SUBI","SWFinalization","SW","SWWFinalization","SWW","SWWQFinalization","SWWQ","TIMEFinalization","TIME","TRFinalization","TR","TROFinalization","TRO","WDAMFinalization","WDAM","WDCMFinalization","WDCM","WDDVFinalization","WDDV","WDMDFinalization","WDMD","WDMLFinalization","WDML","WDMMFinalization","WDMM","WDOPFinalization","WDOP","WQAMFinalization","WQAM","WQCMFinalization","WQCM","WQDVFinalization","WQDV","WQMDFinalization","WQMD","WQMLFinalization","WQML","WQMMFinalization","WQMM","WQOPFinalization","WQOP","XORFinalization","XOR","XORIFinalization","XORI","__wbg_load","module","imports","e","__wbg_get_imports","arg1","__wbg_finalize_init","__wbg_init","initSync","module_or_path","_loadWasmModule","sync","filepath","buf","isNode","raw","rawLength","i","mod","wasm","initWasm","createConfig","config","Commands","__defProp","__name","target","getBuiltinVersions","parseVersion","version","major","minor","patch","v","versionDiffs","version1","version2","semver1","semver2","fullVersionDiff","gte","majorEq","minorEq","patchEq","checkFuelCoreVersionCompatibility","networkVersion","supportedVersion","versions","ErrorCode","ErrorCode2","FuelError","_a","code","message","metadata","rawError","__publicField","error","enumValues","name","VERSIONS","__viteBrowserExternal","exports","assert","msg","inherits","ctor","superCtor","TempCtor","BN","number","base","endian","Buffer","require$$0","num","left","right","start","j","w","off","parseHex4Bits","string","index","parseHexByte","lowerBound","r","parseLength","parseBase","str","end","limbLen","limbPow","total","word","pow","dest","move","size","inspect","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","length","allocate","ArrayType","byteLength","reqLength","res","postfix","position","shift","t","hi","toBitArray","bit","wbit","width","bytesNeeded","bitsLeft","cmp","smallMulTo","self","lo","k","ncarry","rword","maxJ","comb10MulTo","o","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","isNegNum","q","s","carryMask","newCarry","hint","extended","h","mask","maskedWords","bhi","bhiBits","m","diff","qj","positive","dm","half","r2","acc","p","x","y","A","B","C","D","g","yp","xp","im","jm","x1","x2","delta","negative","Red","ctx","primes","MPrime","tmp","rlen","input","output","outLen","prev","next","P224","P192","P25519","prime","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","Mont","this","DEFAULT_PRECISION","DEFAULT_MIN_PRECISION","DEFAULT_DECIMAL_UNITS","BnJs","bnValue","bnBase","bytesPadding","bytesLength","options","units","initialPrecision","initialMinPrecision","minPrecision","precision","formattedUnits","integerPart","fractionalPart","formattedInteger","formattedFractional","firstNonZeroIndex","valueString","valueLength","methodName","gcd","bn","valueToParse","valueUnits","valueDecimals","valueWithoutDecimals","decimals","toFixed","groupRegex","trimmedDecimal","lastNonZeroIndex","keepChars","decimalPortion","toNumber","toHex","toBytes","formatUnits","format","max","numbers","cur","multiply","u8","u16","i32","fleb","fdeb","clim","freb","eb","fl","revfl","_b","fd","revfd","rev","hMap","cd","mb","l","le","co","rvb","sv","r_1","flt","fdt","flm","flrm","fdm","fdrm","bits16","shft","slc","ec","err","ind","nt","inflt","dat","st","dict","sl","dl","noBuf","resize","noSt","cbuf","bl","nbuf","final","pos","bt","lm","lbt","dbt","tbts","type","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","n","dt","lms","dms","lpos","sym","dsym","dend","wbits","wbits16","hTree","t2","et","i0","i1","i2","maxSym","mbt","ln","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","cls","clen","cf","wfblk","wblk","syms","lf","df","li","bs","dlt","mlb","ddt","mdb","_c","lclt","nlc","_d","lcdt","ndc","lcfreq","_e","lct","mlcb","nlcc","flen","ftlen","dtlen","ll","llm","lcts","it","clct","deo","dflt","lvl","plvl","pre","post","lst","opt","msk_1","head","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","ml","nl","mmd","md","ti","pti","lin","din","crct","crc","cr","dopt","newDat","wbytes","gzh","fn","gzs","flg","zs","gzl","gzhl","gzipSync","data","opts","gunzipSync","td","tds","capitalizeString","chunkAndPadBytes","chunkSize","chunks","chunk","lastChunk","remainingBytes","paddedChunkLength","newChunk","arrayify","copy","concatBytes","arrays","byteArrays","array","totalSize","accum","item","concatenated","object","concat","HexCharacters","hexlify","normalizeString","match","errMsg","FuelError2","TAI64_LEAP_SECONDS","TAI64_UNIX_OFFSET","msToSeconds","ms","secondsToMs","seconds","tai64ToUnixSeconds","tai64","unixSecondsToTai64","unixSeconds","tai64ToUnixMilliseconds","DateTime","unixMilliseconds","date","sleep","resolve","chainConfig_default","metadata_default","stateConfig_default","defaultSnapshotConfigs","defaultConsensusKey","isDefined","BN_0","BN_58","Alphabet","Lookup","getAlpha","letter","FuelError3","ErrorCode3","encodeBase58","_value","decodeBase58","dataSlice","FuelError4","ErrorCode4","toUtf8Bytes","stri","form","c2","FuelError5","ErrorCode5","pair","onError","badCodepoint","helper","codePoints","codePoint","getUtf8CodePoints","_bytes","extraLength","overlongMask","nextChar","toUtf8String","compressBytecode","bytecodeAsBinary","bytecodeCompressBytes","bytecodeCompressGzipped","bytecodeCompressBinary","decompressBytecode","bytecodeAsBase64","bytecodeDecompressBinary","bytecodeDecompressDecoded","_","assertUnreachable","_x","anumber","isBytes","abytes","lengths","ahash","aexists","checkFinished","aoutput","min","crypto","u32","arr","createView","rotr","rotl","isLE","byteSwap","byteSwap32","utf8ToBytes","sum","pad","Hash","checkOpts","defaults","wrapConstructor","hashCons","hashC","randomBytes","HMAC","hash","_key","key","blockLen","to","oHash","iHash","finished","destroyed","outputLen","hmac","pbkdf2Init","_password","_salt","_opts","dkLen","asyncTick","password","salt","DK","PRF","PRFSalt","pbkdf2Output","prfW","pbkdf2","view","Ti","ui","setBigUint64","byteOffset","_32n","_u32_max","wh","wl","Chi","Maj","HashMD","padOffset","buffer","take","dataView","oview","state","SHA256_K","SHA256_IV","SHA256_W","SHA256","E","F","G","H","W15","W2","s0","s1","sigma1","T1","T2","sha256","XorAndSalsa","pi","ii","oi","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","BlockMix","tail","scryptInit","N","maxmem","onProgress","blockSize","blockSize32","B32","V","blockMixCb","totalBlockMix","callbackPer","blockMixCnt","scryptOutput","scrypt","Pi","U32_MASK64","fromBig","split","Ah","Al","toBig","shrSH","_l","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","u64","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","round","R","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","keccakP","rounds","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","Keccak","suffix","enableXOF","bufferOut","gen","keccak_256","Rho","Id","idxL","idxR","shifts","shiftsL","idx","shiftsR","Kl","Kr","f","group","R_BUF","RIPEMD160","h0","h1","h2","h3","h4","al","ar","br","dr","el","er","rGroup","hbl","hbr","rl","rr","sr","ripemd160","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","sha512","params","dklen","scryptNoble","keccak256","_data","noble_ripemd160","bufferFromString","encoding","binaryString","bufferLength","startIndex","iterations","keylen","algo","algorithm","pb","crypto2","btoa","stringFromBuffer","binary","hexString","hex","ALGORITHM","keyFromPassword","saltBuffer","passBuffer","arrayify2","encrypt","iv","secret","dataString","dataBuffer","alg","encBuffer","decrypt","keystore","encryptedText","ptBuffer","decryptedData","encryptJsonWalletData","subtle","keyBuffer","ivBuffer","cryptoKey","encrypted","decryptJsonWalletData","decrypted","computeHmac","sha2562","sha5122","signature","hexlify2","randomUUID","api","browser_default","bufferFromString2","decrypt2","encrypt2","keyFromPassword2","randomBytes2","stringFromBuffer2","scrypt2","keccak2562","decryptJsonWalletData2","encryptJsonWalletData2","pbkdf22","computeHmac2","ripemd1602","randomUUID2","MESSAGE_PREFIX","sha256AsBytes","uint64ToBytesBE","bigIntValue","hashMessage","personalSign","messageBytes","payload","Coder","encodedLength","U8_CODER_TYPE","U16_CODER_TYPE","U32_CODER_TYPE","U64_CODER_TYPE","U256_CODER_TYPE","RAW_PTR_CODER_TYPE","RAW_SLICE_CODER_TYPE","BOOL_CODER_TYPE","B256_CODER_TYPE","B512_CODER_TYPE","OPTION_CODER_TYPE","VEC_CODER_TYPE","BYTES_CODER_TYPE","STD_STRING_CODER_TYPE","STR_SLICE_CODER_TYPE","VOID_TYPE","optionRegEx","stringRegEx","arrayRegEx","structRegEx","enumRegEx","tupleRegEx","genericRegEx","fullNameRegExMatch","ENCODING_V1","WORD_SIZE","BYTES_32","UTXO_ID_LEN","ASSET_ID_LEN","CONTRACT_ID_LEN","ADDRESS_LEN","TX_LEN","TX_POINTER_LEN","MAX_BYTES","calculateVmTxMemory","maxInputs","SCRIPT_FIXED_SIZE","INPUT_COIN_FIXED_SIZE","isUint8Array","hasNestedOption","coders","node","ArrayCoder","coder","__privateAdd","_hasNestedOption","__privateSet","__privateGet","newOffset","decoded","B256Coder","encodedValue","B512Coder","bn2","toHex2","encodedLengths","BigNumberCoder","baseType","bn3","BooleanCoder","toBytes2","bn4","ByteCoder","lengthBytes","FuelError6","ErrorCode6","offsetAndLength","bn5","dataBytes","EnumCoder","caseIndexCoder","encodedValueSize","__this_instances","_caseIndexCoder","_encodedValueSize","_shouldValidateLength","__privateMethod","encodeNativeEnum_fn","caseKey","empty","FuelError7","ErrorCode7","valueCoder","caseIndex","validCases","caseBytes","offsetAndCase","isNativeEnum_fn","decodeNativeEnum_fn","concat2","getLength","FuelError8","ErrorCode8","NumberCoder","toBytes3","toNumber2","OptionCoder","RawSliceCoder","FuelError9","ErrorCode9","bn6","internalCoder","decodedValue","StdStringCoder","FuelError10","ErrorCode10","bn7","StrSliceCoder","toUtf8Bytes2","FuelError11","ErrorCode11","bn8","toUtf8String2","StringCoder","FuelError12","ErrorCode12","toUtf8Bytes3","toUtf8String3","StructCoder","fieldName","fieldCoder","fieldValue","FuelError13","ErrorCode13","TupleCoder","FuelError14","ErrorCode14","concatBytes2","VecCoder","FuelError15","ErrorCode15","lengthCoder","concatBytes3","bn9","dataLength","optionOffset","getEncodingVersion","FuelError16","ErrorCode16","findTypeById","abi","typeId","findNonVoidInputs","inputs","findVectorBufferArgument","components","bufferComponent","bufferTypeArgument","ResolvedAbiType","argument","jsonABIType","FuelError17","ErrorCode17","typeParameters","typeParametersAndArgsMap","typeParameter","typeParameterIndex","argType","implicitTypeParameters","itp","implicitGenericParametersParam","implicitGenericParameters","prefix","content","strMatch","arrayMatch","typeArgumentsSignature","componentsSignature","VoidCoder","getCoders","getCoder2","component","getCoder","resolvedAbiType","_options","stringMatch","FuelError18","ErrorCode18","arrayElementCoder","itemCoder","coderName","getCoderForEncoding","FuelError19","ErrorCode19","AbiCoder","getFunctionInputs","jsonAbi","isMandatory","padValuesWithUndefined","values","paddedValues","FunctionFragment","inputsSignatures","functionSignature","hashedFunctionSignature","bn10","mandatoryInputLength","FuelError20","ErrorCode20","argumentValues","arrayify3","nonVoidInputs","decodedOffset","storageAttribute","attr","findTypeByConcreteId","types","id","findConcreteTypeById","finsertTypeIdByConcreteTypeId","concreteType","parseComponents","parseFunctionTypeArguments","cTypeId","parseConcreteType","concreteTypeId","concrete","typeArguments","transpileAbi","functions","configurables","conf","loggedTypes","Interface","nameOrSignatureOrSelector","FuelError21","ErrorCode21","functionFragment","logId","loggedType","arrayify4","configurable","typeArg","decodeScriptData","scriptData","amountOffset","assetId","assetIdOffset","contractId","contractIdOffset","functionSelector","functionSelectorOffset","functionArgsBytes","functionArgs","isB256","address","isPublicKey","isEvmAddress","normalizeB256","isAddress","addressify","addressLike","getRandomB256","toB256AddressEvm","b256","evmBytes","paddedBytes","padFirst12BytesOfEvmAddress","fromEvmAddressToB256","fromPublicKeyToB256","publicKey","fromDynamicInputToB256","Address","b256Address","other","evmAddress","addressParsed","addressHex","checksum","byte","ha","hb","ByteArrayCoder","paddingLength","_paddingLength","parts","TxPointerCoder","blockHeight","txIndex","InputType","InputType2","InputCoinCoder","Coder2","NumberCoder2","txID","outputIndex","owner","txPointer","witnessIndex","predicateGasUsed","predicateLength","predicateDataLength","predicate","InputContractCoder","balanceRoot","stateRoot","InputMessageCoder","messageData","sender","recipient","nonce","InputCoder","OutputType","OutputType2","OutputCoinCoder","Coder3","B256Coder2","BigNumberCoder2","concat3","OutputContractCoder","NumberCoder3","inputIndex","OutputChangeCoder","OutputVariableCoder","OutputContractCreatedCoder","OutputCoder","PolicyType","PolicyType2","sortPolicies","policies","validateDuplicatedPolicies","seenTypes","policy","PoliciesCoder","Coder4","sortedPolicies","BigNumberCoder3","NumberCoder4","concat4","policyTypes","tip","nextOffset","witnessLimit","maturity","maxFee","expiration","ReceiptType","ReceiptType2","getMintedAssetId","subId","contractIdBytes","subIdBytes","concat5","createAssetId","getMessageId","BigNumberCoder4","StorageSlotCoder","StructCoder2","B256Coder3","UpgradePurposeTypeEnum","UpgradePurposeTypeEnum2","UpgradePurposeCoder","Coder5","upgradePurposeType","NumberCoder5","B256Coder4","concat6","WitnessCoder","Coder6","NumberCoder6","concat7","TransactionType","TransactionType2","TransactionScriptCoder","Coder7","BigNumberCoder5","B256Coder5","NumberCoder7","concat8","scriptGasLimit","receiptsRoot","scriptLength","scriptDataLength","inputsCount","outputsCount","witnessesCount","script","outputs","TransactionCreateCoder","bytecodeWitnessIndex","storageSlotsCount","storageSlots","TransactionMintCoder","inputContract","outputContract","mintAmount","mintAssetId","TransactionUpgradeCoder","upgradePurpose","TransactionUploadCoder","root","subsectionIndex","subsectionsNumber","proofSetCount","proofSet","TransactionBlobCoder","blobId","TransactionCoder","UtxoIdCoder","StructCoder3","B256Coder6","NumberCoder8","_isPlaceholder","_curry1","f1","_cloneRegExp","pattern","_clone","deep","map","_ObjectMap","_isPrimitive","copiedValue","cachedCopy","param","hashedKey","bucket","element","clone","defaultJsonSerializer","uppercase","HeadersInstanceToPlainObject","headers","parseRequestArgs","documentOrOptions","variables","requestHeaders","parseRawRequestArgs","queryOrOptions","parseBatchRequestArgs","documentsOrOptions","devAssert","condition","isObjectLike","invariant","LineRegExp","getLocation","source","lastLineStart","line","printLocation","location","printSourceLocation","sourceLocation","firstLineColumnOffset","body","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","lines","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","toNormalizedOptions","firstArg","GraphQLError","rawArgs","_this$nodes","_nodeLocations$","_ref","nodes","positions","path","originalError","extensions","undefinedIfEmpty","nodeLocations","loc","originalExtensions","formattedError","syntaxError","description","Location","startToken","endToken","Token","kind","column","QueryDocumentKeys","kindValues","maybeNode","maybeKind","OperationTypeNode","DirectiveLocation","Kind","isWhiteSpace","isDigit","isLetter","isNameStart","isNameContinue","dedentBlockStringLines","_firstNonEmptyLine2","commonIndent","firstNonEmptyLine","lastNonEmptyLine","_firstNonEmptyLine","indent","leadingWhitespace","printBlockString","escapedValue","isSingleLine","forceLeadingNewLine","hasTrailingTripleQuotes","hasTrailingQuote","hasTrailingSlash","forceTrailingNewline","printAsMultipleLines","skipLeadingNewLine","TokenKind","Lexer","startOfFileToken","token","nextToken","readNextToken","isPunctuatorTokenKind","isUnicodeScalarValue","isSupplementaryCodePoint","isLeadingSurrogate","isTrailingSurrogate","printCodePointAt","lexer","char","createToken","col","bodyLength","readComment","readBlockString","readString","readNumber","readName","firstCode","isFloat","readDigits","chunkStart","escape","readEscapedUnicodeVariableWidth","readEscapedUnicodeFixedWidth","readEscapedCharacter","point","readHexDigit","read16BitHexCode","trailingCode","lineStart","currentLine","blockLines","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","formatValue","seenValues","formatObjectValue","previouslySeenValues","isJSONable","jsonValue","formatArray","formatObject","entries","getObjectTag","remaining","items","tag","isProduction","instanceOf","constructor","_value$constructor","className","valueClassName","stringifiedValue","Source","locationOffset","isSource","parse","parser","Parser","document","sourceObj","hasDescription","keywordToken","operation","operationToken","nameOrAlias","alias","isConst","hasTypeCondition","varName","directives","innerType","operationTypes","interfaces","fields","defaultValue","getTokenDesc","repeatable","locations","getTokenKindDesc","atToken","openKind","parseFn","closeKind","delimiterKind","maxTokens","printString","escapedRegExp","escapedReplacer","escapeSequences","BREAK","visit","visitor","visitorKeys","enterLeaveMap","getEnterLeaveForKind","stack","inArray","keys","edits","parent","ancestors","isLeaving","isEdited","editOffset","editKey","editValue","arrayKey","_enterLeaveMap$get","_enterLeaveMap$get2","visitFn","_node$kind","kindVisitor","print","ast","printDocASTReducer","MAX_LINE_LENGTH","join","varDefs","wrap","variable","selections","block","selectionSet","argsLine","typeCondition","variableDefinitions","isBlockString","hasMultilineItems","maybeArray","separator","_maybeArray$filter$jo","maybeString","_maybeArray$some","extractOperationName","operationName","operationDefinitions","definition","resolveRequestDocument","parsedDocument","ClientError","response","request","__global__","global","__globalThis__","globalThis","support","isDataView","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","iterator","Headers","header","oldValue","callback","thisArg","consumed","fileReaderReady","reader","reject","readBlobAsArrayBuffer","blob","promise","readBlobAsText","readArrayBufferAsText","chars","bufferClone","Body","rejected","isConsumed","decode","methods","normalizeMethod","method","upcased","Request","reParamSearch","reQueryString","parseHeaders","rawHeaders","preProcessedHeaders","Response","bodyInit","redirectStatuses","url","fetch","init","xhr","abortXhr","fixUrl","resolveHeaders","oHeaders","CrossFetch","CrossFetch.Headers","cleanQuery","buildRequestConfig","params_","search","currentQuery","createHttpMethodFetcher","query","fetchOptions","middleware","queryParams","createRequestBody","urlResolved","initResolved","urlNew","initNew","GraphQLClient","requestConfig","rawRequestOptions","crossFetch","requestMiddleware","responseMiddleware","makeRequest","callOrIdentity","variablesAndRequestHeaders","requestOptions","batchRequestOptions","queries","fetcher","isBatchingQuery","getResult","successfullyReceivedData","successfullyPassedErrorPolicy","rest","errorResult","jsonSerializer","jsonSerializer_","contentType","__assign","docCache","fragmentSourceMap","printFragmentWarnings","experimentalFragmentVariables","normalize","cacheKeyFromLoc","processFragments","seenKeys","definitions","fragmentDefinition","fragmentName","sourceKey","sourceKeySet","stripLoc","doc","workSet","parseDocument","cacheKey","parsed","gql","literals","_i","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","extras","gql_1","ZeroBytes32","EmptyRoot","CONTRACT_MAX_SIZE","MAX_WITNESSES","MAX_SCRIPT_LENGTH","MAX_SCRIPT_DATA_LENGTH","MAX_STATIC_CONTRACTS","MAX_PREDICATE_LENGTH","MAX_PREDICATE_DATA_LENGTH","FAILED_REQUIRE_SIGNAL","FAILED_TRANSFER_TO_ADDRESS_SIGNAL","FAILED_ASSERT_EQ_SIGNAL","FAILED_ASSERT_SIGNAL","FAILED_ASSERT_NE_SIGNAL","REVERT_WITH_LOG_SIGNAL","PANIC_REASONS","PANIC_DOC_URL","SwaySignalErrors","abool","title","hexes","bytesToHex","numberToHexUnpadded","hexToNumber","asciis","asciiToBase16","ch","hexToBytes","hl","ai","n1","n2","bytesToNumberBE","bytesToNumberLE","numberToBytesBE","numberToBytesLE","numberToVarBytesBE","ensureBytes","expectedLength","equalBytes","isPosBig","inRange","aInRange","bitLen","bitGet","bitSet","bitMask","u8n","u8fr","createHmacDrbg","hashLen","qByteLen","hmacFn","reset","reseed","seed","pred","validatorFns","validateObject","validators","optValidators","checkField","isOptional","checkVal","notImplemented","memoized","computed","_3n","_4n","_5n","_8n","power","pow2","invert","tonelliShanks","P","legendreC","Q","S","Z","p1div4","Fp","Q1div2","ge","FpSqrt","c1","nv","FIELD_FIELDS","validateField","field","initial","FpPow","FpInvertBatch","nums","lastMultiplied","inverted","nLength","nBitLength","_nBitLength","nByteLength","Field","ORDER","redef","BITS","BYTES","sqrtP","getFieldBytesLength","fieldOrder","bitLength","getMinHashLength","mapHashToField","fieldLen","minLen","reduced","constTimeNegate","neg","validateW","W","calcWOpts","windows","validateMSMPoints","points","validateMSMScalars","scalars","pointPrecomputes","pointWindowSizes","getW","wNAF","elm","window","precomputes","maxNumber","shiftBy","offset1","offset2","cond1","cond2","curr","transform","comp","pippenger","fieldN","zero","MASK","buckets","lastBits","scalar","resI","sumI","validateBasic","curve","validateSigVerOpts","validatePointOpts","ut.validateObject","endo","b2n","h2b","ut","DERErr","DER","dataLen","ut.numberToHexUnpadded","lenLen","first","isLong","int","tlv","ut.abytes","seqBytes","seqLeftBytes","rBytes","rLeftBytes","sBytes","sLeftBytes","sig","rs","ss","seq","weierstrassPoints","CURVE","Fn","_isCompressed","ut.concatBytes","fromBytes","weierstrassEquation","x3","isWithinCurveOrder","ut.inRange","normPrivateKeyToScalar","wrapPrivateKey","ut.isBytes","ut.bytesToHex","ut.bytesToNumberBE","ut.aInRange","assertPrjPoint","Point","toAffineMemo","iz","is0","ax","ay","zz","assertValidMemo","px","py","pz","toInv","privateKey","wnaf","X1","Y1","Z1","X2","Y2","Z2","U1","U2","X3","Y3","Z3","t0","t1","t3","t4","t5","sc","I","k1neg","k1","k2neg","k2","k1p","k2p","fake","f1p","f2p","cofactor","isTorsionFree","clearCofactor","isCompressed","_bits","validateOpts","weierstrass","curveDef","CURVE_ORDER","compressedLen","uncompressedLen","modN","invN","cat","y2","sqrtError","isYOdd","ul","numToNByteStr","ut.numberToBytesBE","isBiggerThanHalfOrder","HALF","normalizeS","slcNum","from","Signature","recovery","msgHash","rec","bits2int_modN","radj","ir","u1","u2","ut.hexToBytes","utils","getPublicKey","isProbPub","getSharedSecret","privateA","publicB","bits2int","ORDER_MASK","ut.bitMask","int2octets","prepSig","defaultSigOpts","lowS","prehash","ent","h1int","seedArgs","k2sig","kBytes","ik","normS","defaultVerOpts","sign","privKey","ut.createHmacDrbg","verify","sg","isHex","isObj","_sig","derError","is","getHash","msgs","createCurve","defHash","create","secp256k1P","secp256k1N","divNearest","sqrtMod","_6n","_11n","_22n","_23n","_44n","_88n","b11","b22","b44","b88","b176","b220","b223","Fpk1","secp256k1","POW_2_128","ReflectApply","receiver","ReflectOwnKeys","ProcessEmitWarning","warning","NumberIsNaN","EventEmitter","eventsModule","once","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","doError","events","handler","listeners","arrayClone","_addListener","prepend","existing","onceWrapper","_onceWrap","wrapped","list","originalListener","spliceOne","_listeners","unwrap","evlistener","unwrapListeners","emitter","listenerCount","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","wrapListener","EMPTY","Node","hash5","node_default","hashLeaf","hashNode","constructTree","hashed","leaf","nodesList","pNodes","odd","nextIndex","calcRoot","getProof","proof","leafPrefix","nodePrefix","hashLeaf2","hash2","hashNode2","parseLeaf","parseNode","isLeaf","SparseCompactMerkleProof","SideNodes","NonMembershipLeafData","Bitmask","NumSideNodes","SiblingData","sparseCompactMerkleProof_default","SparseMerkleProof","sideNodes","sparseMerkleProof_default","ZERO","MAX_HEIGHT","getBitAtFromMSB","slicedData","reverseSideNodes","reversedSideNodes","countCommonPrefix","data1","data2","compactProof","compactedSideNodes","SparseMerkleTree","currentData","leftNode","rightNode","nodeHash","sideNode","siblingData","oldLeafHash","oldLeafData","actualPath","currentHash","sideNodeValue","nonPlaceholderReached","hash4","commonPrefixCount","offsetOfSideNodes","newRoot","leafHash","leafData","nonEmptySideNodes","nonMembershipLeafData","CHAIN_IDS","getDefaultChainId","networkType","getAssetNetwork","asset","chainId","getAssetWithNetwork","assetRest","chainIdToUse","assetNetwork","getAssetEth","getAssetFuel","DELIMITER_PATH","trimRegex","trimPath","urlJoin","baseUrl","paths","hasBaseUrl","rootPath","allPaths","resolveIconPaths","assets2","basePath","fuelAssetsBaseUrl","rawAssets","assets","networks","slug","buildQueryString","parameters","getAssetById","network","getAssetsByOwner","pagination","last","queryString","coinQuantityfy","coinQuantityLike","addAmountToCoinQuantities","coinQuantities","assetIdx","coinQuantity","InputCoinFragmentDoc","InputMessageFragmentDoc","InputContractFragmentDoc","OutputCoinFragmentDoc","OutputContractFragmentDoc","OutputChangeFragmentDoc","OutputVariableFragmentDoc","OutputContractCreatedFragmentDoc","SubmittedStatusFragmentDoc","ReceiptFragmentDoc","SuccessStatusFragmentDoc","SuccessStatusWithBlockIdFragmentDoc","MalleableTransactionFieldsFragmentDoc","FailureStatusFragmentDoc","FailureStatusWithBlockIdFragmentDoc","SqueezedOutStatusFragmentDoc","PreconfirmationSuccessStatusFragmentDoc","PreconfirmationFailureStatusFragmentDoc","TransactionStatusSubscriptionFragmentDoc","TransactionStatusFragmentDoc","TransactionFragmentDoc","TransactionRawPayloadFragmentDoc","InputEstimatePredicatesFragmentDoc","TransactionEstimatePredicatesFragmentDoc","DryRunFailureAssembleTxFragmentDoc","DryRunSuccessAssembleTxFragmentDoc","DryRunFailureStatusFragmentDoc","DryRunSuccessStatusFragmentDoc","DryRunTransactionStatusFragmentDoc","DryRunTransactionExecutionStatusFragmentDoc","BlockFragmentDoc","CoinFragmentDoc","MessageCoinFragmentDoc","MessageFragmentDoc","GetMessageFragmentDoc","MessageProofFragmentDoc","TxParametersFragmentDoc","PredicateParametersFragmentDoc","ScriptParametersFragmentDoc","ContractParametersFragmentDoc","FeeParametersFragmentDoc","DependentCostFragmentDoc","GasCostsFragmentDoc","ConsensusParametersFragmentDoc","ChainInfoFragmentDoc","ContractBalanceFragmentDoc","PageInfoFragmentDoc","NodeInfoFragmentDoc","RelayedTransactionStatusFragmentDoc","GetVersionDocument","GetNodeInfoDocument","GetChainDocument","GetChainAndNodeInfoDocument","GetTransactionDocument","GetTransactionWithReceiptsDocument","GetTransactionsDocument","GetTransactionsByOwnerDocument","EstimatePredicatesDocument","EstimatePredicatesAndGasPriceDocument","GetLatestBlockDocument","GetLatestBlockHeightDocument","GetBlockDocument","GetBlockWithTransactionsDocument","GetBlocksDocument","GetCoinDocument","GetCoinsDocument","GetCoinsToSpendDocument","GetContractDocument","GetContractBalanceDocument","GetBalanceDocument","GetBalanceV2Document","GetLatestGasPriceDocument","EstimateGasPriceDocument","GetBalancesDocument","GetBalancesV2Document","GetMessagesDocument","DaCompressedBlockDocument","GetMessageProofDocument","GetMessageStatusDocument","GetRelayedTransactionStatusDocument","GetAssetDetailsDocument","AssembleTxDocument","DryRunDocument","SubmitDocument","ProduceBlocksDocument","GetMessageByNonceDocument","IsUserAccountDocument","GetConsensusParametersVersionDocument","SubmitAndAwaitStatusDocument","StatusChangeDocument","getSdk","requester","resolveAccountForAssembleTxParams","account","assembleTxAccount","setAndValidateGasAndFeeForAssembledTx","gasPrice","transactionRequest","setGasLimit","setMaxFee","provider","gasLimitSpecified","maxFeeSpecified","isScriptTx","requiredGasLimit","requiredMaxFee","feeForGasPrice","gqlErrorMessage","mapGqlErrorMessage","mapGqlErrorWithIncompatibleNodeVersion","incompatibleNodeVersionMessage","assertGqlResponseHasNoErrors","errors","mappedErrors","errorMessage","FuelGraphqlSubscriber","stream","onEvent","fetchFn","errorReader","resultReader","parsingLeftover","text","regex","matches","done","nextEvent","event","inputify","predicateData","hexlify3","outputify","hexlify4","ZeroBytes322","isMessageCoin","isRawCoin","resource","isRawMessage","isCoin","isMessage","deserializeChain","chain","daHeight","consensusParameters","latestBlock","contractParams","feeParams","predicateParams","scriptParams","txParams","gasCosts","baseAssetId","serializeChain","baseChainHeight","contractParameters","feeParameters","predicateParameters","scriptParameters","txParameters","deserializeNodeInfo","nodeInfo","maxDepth","maxTx","nodeVersion","utxoValidation","vmBacktrace","indexation","serializeNodeInfo","deserializeProviderCache","cache2","serializeProviderCache","hexOrZero","ZeroBytes323","deserializeReceipt","receipt","receiptType","rd","digest","messageId","hexlify5","deserializeInput","parsedInput","deserializeOutput","parsedOutput","deserializeProcessedTxOutput","doesReceiptHaveMissingOutputVariables","doesReceiptHaveMissingContractId","getReceiptsWithMissingData","receipts","memo","assembleReceiptByType","gqlReceipt","DEFAULT_BLOCK_EXPLORER_URL","getPathFromInput","buildBlockExplorerUrl","blockExplorerUrl","providerUrl","txId","blockNumber","explorerUrl","customInputParams","definedValues","hasAnyDefinedValues","inputKeys","pathGeneratedFromInputParams","trimSlashes","cleanPath","cleanBlockExplorerUrl","cleanProviderUrl","encodedProviderUrl","protocol","providerUrlProtocol","getGasUsedFromReceipts","ReceiptType3","resolveGasDependentCosts","byteSize","gasDependentCost","dependentValue","gasUsedByInputs","txBytesSize","witnessCache","chargeableInputs","vmInitializationCost","getMinGas","gasPerByte","metadataGas","vmInitGas","bytesGas","inputsGas","getMaxGas","witnessesLength","minGas","gasLimit","maxGasPerTx","remainingAllowedWitnessGas","maxGas","calculateMetadataGasForTxCreate","stateRootSize","contractBytesSize","contractRootGas","stateRootGas","txIdGas","contractIdInputSize","contractIdGas","calculateMetadataGasForTxScript","calculateMetadataGasForTxBlob","witnessBytesSize","blobLen","calculateMetadataGasForTxUpgrade","consensusSize","consensusLen","calculateMetadataGasForTxUpload","subsectionSize","subsectionsSize","subsectionLen","subsectionsLen","calculateMinGasForTxUpload","baseMinGas","additionalStoragePerByte","calculateGasFee","gas","priceFactor","hexlify6","normalizeJSON","assemblePanicError","statusReason","stringify","assembleSignalErrorMessage","reasonHex","logs","lastLog","lastButOneLog","FAILED_TRANSFER_TO_ADDRESS_SIGNAL2","buildAbiErrorMessage","abiError","positionMessage","findErrorInAbis","abis","assembleRevertError","_receipts","abisArr","extractTxError","groupedLogs","isPanic","ReceiptType4","isRevert","mergeQuantities","resultMap","addToMap","ChangeOutputCollisionError","NoWitnessAtIndexError","NoWitnessByOwnerError","isRequestInputCoin","InputType3","isRequestInputMessage","isRequestInputMessageWithoutData","isRequestInputCoinOrMessage","isRequestInputResource","getRequestInputResourceOwner","isRequestInputResourceFromOwner","isPredicate","hexlify7","getAssetAmountInRequestInputs","baseAsset","cacheRequestInputsResources","cacheRequestInputsResourcesFromOwner","getBurnableAssetCount","coinInputs","changeOutputs","OutputType3","validateTransactionForAssetBurn","enableAssetBurn","witnessify","hexlify8","BaseTransactionRequest","witnesses","isDefined2","req","ZeroBytes324","ownerAddress","witness","accounts","InputType4","OutputType4","found","hexlify9","coin","resources","quantities","quantity","_gasCosts","chainInfo","wit","resourcesOwner","findAssetInput","updateAssetInput","assetInput","usedQuantity","UTXO_ID_LEN2","removedIndex","inputsToExtractGasUsed","correspondingInput","summary","transactionId","hashTransaction","transaction","TransactionType3","ZeroBytes325","inputClone","clone2","InputType5","outputClone","OutputType5","chainIdBytes","concatenatedData","TransactionCoder2","BlobTransactionRequest","clone3","baseTransaction","getStorageValue","arrayify5","storageSlotify","storageSlot","hexlify10","CreateTransactionRequest","TransactionType4","hexlify11","ZeroBytes326","clone4","bn11","OutputType6","arrayify6","returnZeroScript","arrayify7","withdrawScript","ScriptTransactionRequest","TransactionType5","bn12","arrayify8","clone5","signatureCallback","txCost","ZeroBytes327","hexlify12","InputType6","OutputType7","numberOfVariables","outputsNumber","contract","contractAddress","addressify2","abiInterface","UpgradeTransactionRequest","TransactionType6","clone6","consensus","bytecodeRoot","hexlify13","UploadTransactionRequest","subsection","TransactionType7","ZeroBytes328","clone7","subsectionBytecode","hexlify14","arrayify9","bytecode","AbstractScriptRequest","transactionRequestify","TransactionType8","isTransactionTypeScript","request2","isTransactionTypeCreate","isTransactionTypeBlob","isTransactionTypeUpgrade","isTransactionTypeUpload","cache","ResourceCache","ttl","transactionResourceCache","activeData","currentTime","expired","resourcesFromOwner","cached","resourceData","transactionResourcesCache","hexlify15","calculateTXFeeForSummary","rawPayload","bn13","gasPriceFactor","transactionBytes","arrayify10","TransactionCoder3","TransactionType9","getFunctionCall","argumentsOffset","Interface2","argumentsProvided","decodedArguments","getInputsByTypes","getInputsByType","getInputsCoin","InputType7","getInputsMessage","getInputsCoinAndMessage","isInputCoin","getInputsContract","findCoinInput","aggregateInputsAmountsByAssetAndOwner","aggregated","ownersMap","ownerBalance","findMessageInput","getInputFromAssetId","isBaseAsset","coinInput","getInputContractFromIndex","contractInput","getInputAccountAddress","getOutputsByType","getOutputsContractCreated","OutputType8","getOutputsCoin","getOutputsChange","getOutputsContract","getOutputsVariable","TransactionTypeName","TransactionTypeName2","TransactionStatus","TransactionStatus2","OperationName","OperationName2","AddressType","AddressType2","ChainName","ChainName2","getReceiptsByType","getTransactionTypeName","transactionType","TransactionType10","isType","isTypeMint","isTypeCreate","isTypeScript","isTypeUpgrade","isTypeUpload","isTypeBlob","hasSameAssetId","getReceiptsCall","ReceiptType5","getReceiptsMessageOut","mergeAssets","op1","op2","assets1","assetMap","existingAsset","bn14","isSameOperation","_f","_g","mergeAssetsSent","toAdd","mergeCalls","mergeOperations","addOperation","operations","existingIndex","op","getReceiptsTransferOut","getWithdrawFromFuelOperations","prevWithdrawFromFuelOps","inputAddress","findBytesSegmentIndex","whole","segment","getContractCalls","abiMap","calls","bytesSegment","arrayify11","segmentIndex","getAssetsSent","processCallReceipt","ZeroBytes329","getContractCallOperations","contractCallReceipts","TransactionCoder4","extractTransferOperationFromReceipt","contractInputs","toAddress","fromAddress","toType","change","getTransferOperations","coinOutputs","txPayers","selectedPayer","fallbackPayer","payedAmount","transferReceipts","transferOutReceipts","getPayProducerOperations","getContractCreatedOperations","contractCreatedOutputs","contractCreatedOutput","getOperations","processGqlReceipt","extractMintedAssetsFromReceipts","mintedAssets","ReceiptType6","extractBurnedAssetsFromReceipts","burnedAssets","getTransactionStatusName","gqlStatus","extractResolvedOutputs","serializedOutputs","resolvedOutputs","utxoId","processGraphqlStatus","gqlTransactionStatus","blockId","totalFee","totalGas","errorReason","isStatusFailure","isStatusSuccess","isStatusPending","isStatusPreConfirmationSuccess","isStatusPreConfirmationFailure","bn15","getTotalFeeFromStatus","assembleTransactionSummary","gasUsed","hexlify16","typeName","bn16","PolicyType3","fee","assemblePreConfirmationTransactionSummary","TransactionCoder5","getAllDecodedLogs","mainAbi","externalAbis","mainContract","firstCallReceipt","ReceiptType7","ZeroBytes3210","isLogFromMainAbi","interfaceToUse","Interface3","decodedLog","TransactionResponse","tx","submitTxSubscription","bn17","tx2","gqlTransaction","arrayify12","TransactionCoder6","subscription","statusChange","contractsAbiMap","transactionStatus","resolvers","sub2","transactionSummary","transactionResult","getDecodedLogs","ReceiptType8","ZeroBytes3211","Interface4","getWaitDelay","retryAttemptNum","duration","autoRetryFetch","_error","retryNum","delay","parseGraphqlResponse","isSubscription","responseClone","validatePaginationArgs","paginationLimit","inputArgs","after","before","MAX_RETRIES","RESOURCES_PAGE_SIZE_LIMIT","TRANSACTIONS_PAGE_SIZE_LIMIT","BALANCES_PAGE_SIZE_LIMIT","NON_PAGINATED_BALANCES_SIZE","BLOCKS_PAGE_SIZE_LIMIT","DEFAULT_RESOURCE_CACHE_TTL","GAS_USED_MODIFIER","WRITE_OPERATIONS","Provider","__Provider_instances","rawUrl","urlWithoutAuth","authHeaders","FUELS","resourceCacheTTL","consensusParametersTimestamp","isDefined3","retryOptions","timeout","signal","fullRequest","normalizedUrl","currentBlockHeight","retriesLeft","retryAttempt","sleepTime","sleep2","height","writeOperationHappened","parsedUrl","username","maxGasPerPredicate","ignoreCache","inflightRequest","getChainAndNodeInfoFromNetwork","isMajorSupported","isMinorSupported","gqlClient","requestInit","graphQlResponse","executeQuery","vars","opDefinition","customOperations","blobParams","updatedVariables","document2","gql2","bn18","processedNodeInfo","processedChain","all","assetMetadata","assetDetails","totalSupply","maxOutputs","transactionRequestLike","estimateTxDependencies","_includePreConfirmation","encodedTransaction","hexlify17","cacheInputs_fn","dryRunStatuses","rawReceipts","dryRunStatus","estimatePredicates","blockHorizon","gasPrice2","gasPriceParam","missingContractIds","outputVariables","attempt","serializedReceipts","missingOutputVariables","missingOutputContractIds","Address2","transactionRequests","results","allRequests","clone8","serializedTransactionsMap","transactionsToProcess","encodedTransactions","dryRunResults","nextRoundTransactions","requestIdx","hasMissingOutputs","previous","minFee","processedReceipts","txRequestClone","updateMaxFee","isScriptTransaction","signedRequest","addedSignatures","lengthBefore","pristineGasUsed","reserveGas","resourcesIdsToIgnore","feePayerAccount","accountCoinQuantities","allAddresses","feePayerIndex","baseAssetChange","requiredBalances","changeOutputAccount","changeAccountAddress","changePolicy","excludeInput","parsedReceipts","TransactionType11","paginationArgs","edges","pageInfo","excludedIds","coinsQuery","maxPerAsset","blobIds","blobs","idOrHeight","transactions","TransactionCoder7","arrayify13","daCompressedBlock","contractBalance","balance","supportsPagination","InputMessageCoder2","commitBlockId","commitBlockHeight","inputObject","messageProof","messageBlockHeader","commitBlockHeader","blockProof","latestGasPrice","estimateGasPrice","startTime","latestBlockHeight","DateTime2","rawMessage","relayedTransactionId","relayedTransactionStatus","addresses","allCached","maxInputsBn","getTransactionSummary","decodedTransaction","TransactionCoder8","arrayify14","txReceipts","bn19","getTransactionSummaryFromRequest","getTransactionsSummaries","filters","validPaginationParams","transactionsByOwner","edge","assembleTransactionSummaryFromJson","deserializedTransactionBytes","arrayify15","TransactionCoder9","bn20","serializeTransactionResponseJson","preConfirmationStatus","deserializeTransactionResponseJson","json","requestJson","providerCache","AbstractAccount","formatTransferToContractScriptData","transferParams","numberCoder","transferParam","encoded","Address3","arrayify16","assembleTransferToContractScript","asm.initWasm","asm.gtf","asm.GTFArgs","asm.addi","asm.lw","asm.tr","asm.ret","splitCoinsIntoBatches","maxBatchLength","batchesNum","batches","batchStart","batchEnd","MAX_FUNDING_ATTEMPTS","Account","connector","txs","txResponses","Address4","assetIdToFetch","estimatedPredicates","requiredQuantities","requiredInBaseAsset","bn21","requiredQuantitiesWithFee","quantitiesDict","missingQuantities","owned","required","needsToBeFunded","fundingAttempts","requestToReestimate2","clone9","newFee","totalBaseAssetOnInputs","totalBaseAssetRequiredWithFee","requestToReestimate","destination","contractTransferParams","defaultAssetId","hexlify18","recipientAddress","recipientDataArray","arrayify17","amountDataArray","submitAll","consolidationParams","outputNum","maxInputsNumber","totalFeeCost","coinsBatches","consolidateMoreThanOneCoin","batch","coinBatch","amountPerNewUtxo","OutputType9","coinOutputsQuantities","transactionFeeForDryRun","InputType8","connectorOptions","requestToSign","connectorsSendTxParams","UTXO_ID_LEN3","isDefined4","currentTransactionId","outputQuantities","assembledRequest","costParams","requestToPrepare","onBeforeSend","skipCustomFee","Signer","privateKeyBytes","hexlify19","Address5","arrayify18","p0","p1","signedMessageBytes","recoveryParam","entropy","randomBytes3","DEFAULT_KDF_PARAMS_LOG_N","DEFAULT_KDF_PARAMS_R","DEFAULT_KDF_PARAMS_P","DEFAULT_KEY_SIZE","DEFAULT_IV_SIZE","removeHexPrefix","encryptKeystoreWallet","privateKeyBuffer","Address6","randomBytes4","ciphertext","macHashUint8Array","mac","decryptKeystoreWallet","jsonWallet","keystoreWallet","ciphertextBuffer","passwordBuffer","macHash","FuelError22","hexlify20","BaseWalletUnlocked","signer","signedMessage","hexlify21","hashedTransaction","signedTransaction","english","Language","Language2","getLowerMask","getUpperMask","getWords","mnemonic","getPhrase","entropyToMnemonicIndices","indices","remainingBits","checksumBits","arrayify19","mnemonicWordsToEntropy","words","wordlist","FuelError23","entropyBits","checksumMask","MasterSecret","MainnetPRV","TestnetPRV","MNEMONIC_SIZES","assertWordList","FuelError24","ErrorCode22","assertEntropy","assertMnemonic","errorMsg","Mnemonic","phrase","hexlify22","entropyBytes","arrayify20","passphrase","phraseBytes","seedArray","testnet","masterKey","depth","fingerprint","chainCode","extendedKey","sha2563","extraEntropy","randomBytes5","mnemonic_default","HARDENED_INDEX","MainnetPRV2","hexlify23","MainnetPUB","TestnetPRV2","TestnetPUB","base58check","encodeBase582","dataSlice2","sha2564","getExtendedKeyPrefix","isPublic","isPublicExtendedKey","isValidExtendedKey","parsePath","FuelError25","ErrorCode23","HDWallet","arrayify21","IL","IR","ki","bn22","Ki","hdwallet","parentFingerprint","validChecksum","hdwallet_default","WalletLocked","WalletUnlocked","generateOptions","childWallet","hdWallet","Wallet","MemoryStorage","MnemonicVault","_secret","numberOfAccounts","wallet","Address7","FuelError26","ErrorCode24","PrivateKeyVault","_privateKeys","pk","Address8","FuelError27","ErrorCode25","ERROR_MESSAGES","FuelError28","ErrorCode26","WalletManager","__WalletManager_instances","_vaults","_passphrase","_isLocked","vaultId","vaultState","Address9","vs","vaultConfig","Vault2","vault","oldpass","newpass","isLocked","deserializeVaults_fn","encryptedData","serializeVaults_fn","VaultClass","vaults","Vault","FuelError29","ErrorCode27","_address","StorageAbstract","BLOB_ID_SIZE","REG_ADDRESS_OF_DATA_AFTER_CODE","REG_START_OF_LOADED_CODE","REG_GENERAL_USE","WORD_SIZE2","DATA_OFFSET_INDEX","CONFIGURABLE_OFFSET_INDEX","getBytecodeDataOffset","getBytecodeConfigurableOffset","getBytecodeId","configurableOffset","byteCodeWithoutConfigurableSection","sha2565","getLegacyBlobId","dataOffset","byteCodeWithoutDataSection","getPredicateScriptLoaderInstructions","originalBinary","asm2","REG_PC","REG_SP","REG_IS","getInstructions","numOfInstructions2","asm2.move_","asm2.addi","asm2.bsiz","asm2.ldc","asm2.lw","asm2.sub","asm2.divi","asm2.jmp","getInstructionsNoDataSection","configurableSection","instructionBytes2","blobBytes2","dataSectionLenBytes","loaderBytecode2","numOfInstructions","instructionBytes","blobBytes","fundBlobTx","deployer","blobTxRequest","adjustConfigurableOffsets","configurableOffsetDiff","readOnlyConfigurables","deployScriptOrPredicate","loaderInstanceCallback","arrayify22","loaderBytecode","blobOffset","newConfigurableOffsetDiff","newAbi","blobExists","loaderInstance","fundedBlobRequest","FuelError30","ErrorCode28","getPredicateRoot","arrayify23","codeRoot","hexlify24","hash3","concat9","Predicate","configurableConstants","predicateBytes","predicateInterface","Address10","arrayify24","placeholderIndex","hexlify25","mainFn","overrides","Interface5","FuelError31","ErrorCode29","mutatedBytes","predicateInputs","hasEmptyPredicateInputs","FuelConnectorMethods","FuelConnectorMethods2","FuelConnectorEventTypes","FuelConnectorEventTypes2","FuelConnectorEventType","LocalStorage","localStorage","FuelConnector","EventEmitter2","FuelError32","_message","_transaction","_params","_assets","_asset","_networkUrl","_network","_contractId","_abi","_id","eventName","cacheFor","cacheTime","dispatchFuelConnectorEvent","deferPromise","defer","withTimeout","timeoutPromise","FuelError33","HAS_CONNECTOR_TIMEOUT","PING_CACHE_TIME","warn","Fuel","targetObject","isConnected","networks2","currentNetwork","currentAccount","connectorName","connectResponse","FuelError34","ErrorCode30","currentConnector","unSub","hasConnector","requestTimestamp","ping","curConnector","installed","providerOrNetwork","AbstractProgram","AbstractContract","getAbisFromAllCalls","functionScopes","funcScope","program","getResultLogs","mainCallConfig","main","otherContractsAbis","getAllResultLogs","InstructionSet","_operations","ops","instructions","calculateScriptDataBaseOffset","callResultToScriptResult","callResult","scriptResultReceipt","returnReceipt","decodeCallResult","decoder","scriptResult","callResultToInvocationResult","call2","ScriptRequest","scriptDataEncoder","scriptResultDecoder2","callScript","DEFAULT_OPCODE_PARAMS","SCRIPT_WRAPPER_CONTRACT_ID","getSingleCallInstructions","callDataOffset","gasForwardedOffset","inst","asm.movi","asm.call","asm.RegId","offsets","multiCallInstructions","isReturnType","getMainCallReceipt","scriptResultDecoder","mainCallResult","mainCallInstructionStart","decodeContractCallScriptResult","getCallInstructionsLength","contractCalls","asm.Instruction","getContractCallScript","TOTAL_CALLS","callInstructionsLength","paddedInstructionsLength","paramOffsets","segmentOffset","ASSET_ID_LEN2","encodedSelectorOffset","CONTRACT_ID_LEN2","encodedArgsOffset","encodedArgs","callParamOffsets","extractInvocationResult","isMultiCall","decodedResults","encodedResult","func","buildFunctionResult","transactionResponse","txResult","buildPreConfirmationFunctionResult","buildDryRunResult","funcScopes","createContractCall","forward","callParameters","BaseInvocationScope","contractCallScript","reduceForwardCoins","requiredCoins","currentAmount","asm2.initWasm","gasLimitOnCalls","restAssembleTxParams","contracts","signers","allQuantities","utxoForBaseAssetId","utxo","amountForFee","baseAssetResource","FunctionInvocationScope","callParams","MultiCallInvocationScope","Contract","accountOrProvider","fragment","funcInvocationScopeCreator","ScriptInvocationScope","programBytes","AbstractScript","Script","ScriptRequest2","DEVNET_NETWORK_URL","TESTNET_NETWORK_URL","getLoaderInstructions","asm","numberOfInstructions","numberOfBlobs","blobIdSize","blobIdBytes","asm.move_","asm.bsiz","asm.ldc","asm.subi","asm.jnzb","asm.sub","asm.divi","asm.jmp","getContractChunks","getContractRoot","getContractStorageRoot","tree","getContractId","hexlifyWithPrefix","CHUNK_SIZE_MULTIPLIER","ContractFactory","deployOptions","keyA","keyB","maxContractSize","chunkSizeMultiplier","createRequest","uniqueBlobIds","uploadedBlobIds","blobIdsToUpload","totalCost","createMinGas","createMinFee","txIdResolver","txIdPromise","uploadedBlobs","contractSizeLimit","transactionSizeLimit","maxLimit","chainLimit","sizeLimit","blobTx","maxChunkSize","DECIMAL_FUEL","DECIMAL_WEI","DECIMAL_KWEI","DECIMAL_MWEI","DECIMAL_GWEI","Src14OwnedProxy","__Contract","Src14OwnedProxyFactory","__ContractFactory"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAIA;AAEJ,MAAMC,KAAqB,OAAO,cAAgB,MAAc,IAAI,YAAY,SAAS,EAAE,WAAW,IAAM,OAAO,GAAM,CAAA,IAAI,EAAE,QAAQ,MAAM;AAAE,QAAM,MAAM,2BAA2B;AAAC;AAEnL,OAAO,cAAgB,OAAeA,GAAkB,OAAM;AAClE,IAAIC,KAA0B;AAE9B,SAASC,KAAuB;AAC5B,UAAID,OAA4B,QAAQA,GAAwB,eAAe,OAC3EA,KAA0B,IAAI,WAAWF,EAAO,OAAO,MAAM,IAE1DE;AACX;AAEA,SAASE,GAAmBC,GAAKC,GAAK;AAClC,SAAAD,IAAMA,MAAQ,GACPJ,GAAkB,OAAOE,GAAsB,EAAC,SAASE,GAAKA,IAAMC,CAAG,CAAC;AACnF;AAEA,SAASC,EAAaC,GAAUC,GAAO;AACnC,MAAI,EAAED,aAAoBC;AACtB,UAAM,IAAI,MAAM,wBAAwBA,EAAM,IAAI,EAAE;AAE5D;AAOA,SAASC,GAAQC,GAAIC,GAAM;AACvB,QAAMC,IAAMb,EAAO,QAAQW,GAAIC,CAAI;AACnC,SAAOE,EAAY,OAAOD,CAAG;AACjC;AASA,SAASE,GAASJ,GAAIK,GAAIJ,GAAM;AAC5B,QAAMC,IAAMb,EAAO,SAASW,GAAIK,GAAIJ,CAAI;AACxC,SAAOE,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASI,GAAUN,GAAIK,GAAIE,GAAIN,GAAM;AACjC,EAAAL,EAAaK,GAAMO,EAAW;AAC9B,MAAIC,IAAOR,EAAK,mBAAoB;AACpC,QAAMC,IAAMb,EAAO,UAAUW,GAAIK,GAAIE,GAAIE,CAAI;AAC7C,SAAON,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASQ,GAAUV,GAAIK,GAAIE,GAAIN,GAAM;AACjC,EAAAL,EAAaK,GAAMO,EAAW;AAC9B,MAAIC,IAAOR,EAAK,mBAAoB;AACpC,QAAMC,IAAMb,EAAO,UAAUW,GAAIK,GAAIE,GAAIE,CAAI;AAC7C,SAAON,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASS,GAAUX,GAAIK,GAAIE,GAAIN,GAAM;AACjC,EAAAL,EAAaK,GAAMW,EAAQ;AAC3B,MAAIH,IAAOR,EAAK,mBAAoB;AACpC,QAAMC,IAAMb,EAAO,UAAUW,GAAIK,GAAIE,GAAIE,CAAI;AAC7C,SAAON,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASW,GAAUb,GAAIK,GAAIE,GAAIN,GAAM;AACjC,EAAAL,EAAaK,GAAMW,EAAQ;AAC3B,MAAIH,IAAOR,EAAK,mBAAoB;AACpC,QAAMC,IAAMb,EAAO,UAAUW,GAAIK,GAAIE,GAAIE,CAAI;AAC7C,SAAON,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASY,GAAUd,GAAIK,GAAIE,GAAIN,GAAM;AACjC,EAAAL,EAAaK,GAAMc,EAAO;AAC1B,MAAIN,IAAOR,EAAK,mBAAoB;AACpC,QAAMC,IAAMb,EAAO,UAAUW,GAAIK,GAAIE,GAAIE,CAAI;AAC7C,SAAON,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASc,GAAUhB,GAAIK,GAAIE,GAAIN,GAAM;AACjC,EAAAL,EAAaK,GAAMc,EAAO;AAC1B,MAAIN,IAAOR,EAAK,mBAAoB;AACpC,QAAMC,IAAMb,EAAO,UAAUW,GAAIK,GAAIE,GAAIE,CAAI;AAC7C,SAAON,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASe,GAAUjB,GAAIK,GAAIE,GAAIN,GAAM;AACjC,EAAAL,EAAaK,GAAMiB,EAAO;AAC1B,MAAIT,IAAOR,EAAK,mBAAoB;AACpC,QAAMC,IAAMb,EAAO,UAAUW,GAAIK,GAAIE,GAAIE,CAAI;AAC7C,SAAON,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASiB,GAAUnB,GAAIK,GAAIE,GAAIN,GAAM;AACjC,EAAAL,EAAaK,GAAMiB,EAAO;AAC1B,MAAIT,IAAOR,EAAK,mBAAoB;AACpC,QAAMC,IAAMb,EAAO,UAAUW,GAAIK,GAAIE,GAAIE,CAAI;AAC7C,SAAON,EAAY,OAAOD,CAAG;AACjC;AASA,SAASkB,GAAIC,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASsB,GAAIH,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASuB,GAAIJ,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASwB,GAAGL,GAAKC,GAAKC,GAAK;AACvB,QAAMrB,IAAMb,EAAO,GAAGgC,GAAKC,GAAKC,CAAG;AACnC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASyB,GAAIN,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS0B,GAAGP,GAAKC,GAAKC,GAAK;AACvB,QAAMrB,IAAMb,EAAO,GAAGgC,GAAKC,GAAKC,CAAG;AACnC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS2B,GAAGR,GAAKC,GAAKC,GAAK;AACvB,QAAMrB,IAAMb,EAAO,GAAGgC,GAAKC,GAAKC,CAAG;AACnC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS4B,GAAKT,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS6B,GAAKV,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS8B,GAAKX,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AAQA,SAAS+B,GAAMZ,GAAKa,GAAK;AACrB,QAAMhC,IAAMb,EAAO,MAAMgC,GAAKa,CAAG;AACjC,SAAO/B,EAAY,OAAOD,CAAG;AACjC;AASA,SAASiC,GAAId,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AAQA,SAASkC,GAAIf,GAAKgB,GAAK;AACnB,QAAMnC,IAAMb,EAAO,IAAIgC,GAAKgB,CAAG;AAC/B,SAAOlC,EAAY,OAAOD,CAAG;AACjC;AASA,SAASoC,GAAGjB,GAAKC,GAAKC,GAAK;AACvB,QAAMrB,IAAMb,EAAO,GAAGgC,GAAKC,GAAKC,CAAG;AACnC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASqC,GAAIlB,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASsC,GAAInB,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASuC,GAAIpB,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASwC,GAAIrB,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASyC,GAAKtB,GAAKuB,GAASC,GAASC,GAAS;AAC1C,QAAM5C,IAAMb,EAAO,KAAKgC,GAAKuB,GAASC,GAASC,CAAO;AACtD,SAAO3C,EAAY,OAAOD,CAAG;AACjC;AAOA,SAASA,GAAI6C,GAAO;AAChB,QAAM7C,IAAMb,EAAO,IAAI0D,CAAK;AAC5B,SAAO5C,EAAY,OAAOD,CAAG;AACjC;AAQA,SAAS8C,GAAKC,GAAMtD,GAAK;AACrB,QAAMO,IAAMb,EAAO,KAAK4D,GAAMtD,CAAG;AACjC,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AAOA,SAASgD,GAAKC,GAAO;AACjB,QAAMjD,IAAMb,EAAO,KAAK8D,CAAK;AAC7B,SAAOhD,EAAY,OAAOD,CAAG;AACjC;AAQA,SAASkD,GAAIC,GAAU1D,GAAK;AACxB,QAAMO,IAAMb,EAAO,IAAIgE,GAAU1D,CAAG;AACpC,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AASA,SAASoD,GAAID,GAAUE,GAAU5D,GAAK;AAClC,QAAMO,IAAMb,EAAO,IAAIgE,GAAUE,GAAU5D,CAAG;AAC9C,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASsD,GAAIC,GAAQC,GAAUC,GAAUhE,GAAK;AAC1C,QAAMO,IAAMb,EAAO,IAAIoE,GAAQC,GAAUC,GAAUhE,CAAG;AACtD,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AAQA,SAAS0D,GAAKvC,GAAKwC,GAAQ;AACvB,QAAM3D,IAAMb,EAAO,KAAKgC,GAAKwC,CAAM;AACnC,SAAO1D,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS4D,GAAKzC,GAAK;AACf,QAAMnB,IAAMb,EAAO,KAAKgC,CAAG;AAC3B,SAAOlB,EAAY,OAAOD,CAAG;AACjC;AAQA,SAAS6D,GAAKC,GAAQC,GAAa;AAC/B,QAAM/D,IAAMb,EAAO,KAAK2E,GAAQC,CAAW;AAC3C,SAAO9D,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASgE,GAAKC,GAAeC,GAAWC,GAAeC,GAAS;AAC5D,QAAMpE,IAAMb,EAAO,KAAK8E,GAAeC,GAAWC,GAAeC,CAAO;AACxE,SAAOnE,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASqE,GAAIlB,GAAUmB,GAAkBC,GAAQ9E,GAAK;AAClD,QAAMO,IAAMb,EAAO,IAAIgE,GAAUmB,GAAkBC,GAAQ9E,CAAG;AAC9D,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AAQA,SAASwE,GAAKrB,GAAUmB,GAAkB;AACtC,QAAMtE,IAAMb,EAAO,KAAKgE,GAAUmB,CAAgB;AAClD,SAAOrE,EAAY,OAAOD,CAAG;AACjC;AAQA,SAASyE,GAAKtD,GAAKmD,GAAkB;AACjC,QAAMtE,IAAMb,EAAO,KAAKgC,GAAKmD,CAAgB;AAC7C,SAAOrE,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS0E,GAAGvD,GAAK;AACb,QAAMnB,IAAMb,EAAO,GAAGgC,CAAG;AACzB,SAAOlB,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS2E,GAAItB,GAAUkB,GAAQ9E,GAAKmF,GAAM;AACtC,QAAM5E,IAAMb,EAAO,IAAIkE,GAAUkB,GAAQ9E,GAAKmF,CAAI;AAClD,SAAO3E,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS6E,GAAIC,GAAGC,GAAGC,GAAGC,GAAG;AACrB,QAAMjF,IAAMb,EAAO,IAAI2F,GAAGC,GAAGC,GAAGC,CAAC;AACjC,SAAOhF,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASkF,GAAKJ,GAAGC,GAAGhC,GAAMtD,GAAK;AAC3B,QAAMO,IAAMb,EAAO,KAAK2F,GAAGC,GAAGhC,GAAMtD,CAAG;AACvC,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AAQA,SAASmF,GAAKrB,GAAQC,GAAa;AAC/B,QAAM/D,IAAMb,EAAO,KAAK2E,GAAQC,CAAW;AAC3C,SAAO9D,EAAY,OAAOD,CAAG;AACjC;AAOA,SAASoF,GAAKvC,GAAO;AACjB,QAAM7C,IAAMb,EAAO,KAAK0D,CAAK;AAC7B,SAAO5C,EAAY,OAAOD,CAAG;AACjC;AASA,SAASqF,GAAKC,GAAUC,GAAQC,GAAM;AAClC,QAAMxF,IAAMb,EAAO,KAAKmG,GAAUC,GAAQC,CAAI;AAC9C,SAAOvF,EAAY,OAAOD,CAAG;AACjC;AASA,SAASyF,GAAItE,GAAKoE,GAAQD,GAAU;AAChC,QAAMtF,IAAMb,EAAO,IAAIgC,GAAKoE,GAAQD,CAAQ;AAC5C,SAAOrF,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS0F,GAAKvC,GAAUoC,GAAQD,GAAUE,GAAM;AAC5C,QAAMxF,IAAMb,EAAO,KAAKgE,GAAUoC,GAAQD,GAAUE,CAAI;AACxD,SAAOvF,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS2F,GAAIL,GAAUC,GAAQ1C,GAAO;AAClC,QAAM7C,IAAMb,EAAO,IAAImG,GAAUC,GAAQ1C,CAAK;AAC9C,SAAO5C,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS4F,GAAKN,GAAUC,GAAQlC,GAAUmC,GAAM;AAC5C,QAAMxF,IAAMb,EAAO,KAAKmG,GAAUC,GAAQlC,GAAUmC,CAAI;AACxD,SAAOvF,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS6F,GAAGvB,GAAkBR,GAAQK,GAAe;AACjD,QAAMnE,IAAMb,EAAO,GAAGmF,GAAkBR,GAAQK,CAAa;AAC7D,SAAOlE,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS8F,GAAIxB,GAAkByB,GAAcjC,GAAQK,GAAe;AAChE,QAAMnE,IAAMb,EAAO,IAAImF,GAAkByB,GAAcjC,GAAQK,CAAa;AAC5E,SAAOlE,EAAY,OAAOD,CAAG;AACjC;AASA,SAASgG,GAAK7C,GAAU8C,GAAUC,GAAe;AAC7C,QAAMlG,IAAMb,EAAO,KAAKgE,GAAU8C,GAAUC,CAAa;AACzD,SAAOjG,EAAY,OAAOD,CAAG;AACjC;AASA,SAASmG,GAAKhD,GAAU8C,GAAUC,GAAe;AAC7C,QAAMlG,IAAMb,EAAO,KAAKgE,GAAU8C,GAAUC,CAAa;AACzD,SAAOjG,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASoG,GAAKC,GAAcJ,GAAUK,GAAUC,GAAS;AACrD,QAAMvG,IAAMb,EAAO,KAAKkH,GAAcJ,GAAUK,GAAUC,CAAO;AACjE,SAAOtG,EAAY,OAAOD,CAAG;AACjC;AASA,SAASwG,GAAKrD,GAAUE,GAAU5D,GAAK;AACnC,QAAMO,IAAMb,EAAO,KAAKgE,GAAUE,GAAU5D,CAAG;AAC/C,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AASA,SAASyG,GAAKtD,GAAUE,GAAU5D,GAAK;AACnC,QAAMO,IAAMb,EAAO,KAAKgE,GAAUE,GAAU5D,CAAG;AAC/C,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AAQA,SAAS0G,GAAKvF,GAAKwC,GAAQ;AACvB,QAAM3D,IAAMb,EAAO,KAAKgC,GAAKwC,CAAM;AACnC,SAAO1D,EAAY,OAAOD,CAAG;AACjC;AAMA,SAAS2G,KAAO;AACZ,QAAM3G,IAAMb,EAAO,KAAM;AACzB,SAAOc,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS4G,GAAK/D,GAAO;AACjB,QAAM7C,IAAMb,EAAO,KAAK0D,CAAK;AAC7B,SAAO5C,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS6G,GAAI1F,GAAKgD,GAAeG,GAAkB;AAC/C,QAAMtE,IAAMb,EAAO,IAAIgC,GAAKgD,GAAeG,CAAgB;AAC3D,SAAOrE,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS8G,GAAIC,GAAY;AACrB,QAAM/G,IAAMb,EAAO,IAAI4H,CAAU;AACjC,SAAO9G,EAAY,OAAOD,CAAG;AACjC;AASA,SAASgH,GAAID,GAAY3F,GAAKC,GAAK;AAC/B,QAAMrB,IAAMb,EAAO,IAAI4H,GAAY3F,GAAKC,CAAG;AAC3C,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASiH,GAAIC,GAAgBC,GAAWC,GAAUC,GAAO;AACrD,QAAMrH,IAAMb,EAAO,IAAI+H,GAAgBC,GAAWC,GAAUC,CAAK;AACjE,SAAOpH,EAAY,OAAOD,CAAG;AACjC;AASA,SAASsH,GAAKnG,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASuH,GAAKpG,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASwH,GAAKrG,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASyH,GAAKtG,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS0H,GAAKvG,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS2H,GAAKxG,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS4H,GAAIzG,GAAKC,GAAKC,GAAK;AACxB,QAAMrB,IAAMb,EAAO,IAAIgC,GAAKC,GAAKC,CAAG;AACpC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS6H,GAAK1G,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS8H,GAAK3G,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAAS+H,GAAK5G,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASgI,GAAK7G,GAAKC,GAAKC,GAAK;AACzB,QAAMrB,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,CAAG;AACrC,SAAOpB,EAAY,OAAOD,CAAG;AACjC;AASA,SAASiI,GAAKC,GAAUC,GAAUpB,GAAY;AAC1C,QAAM/G,IAAMb,EAAO,KAAK+I,GAAUC,GAAUpB,CAAU;AACtD,SAAO9G,EAAY,OAAOD,CAAG;AACjC;AASA,SAASoI,GAAGjH,GAAK4B,GAAMwB,GAAQ;AAC3B,QAAMvE,IAAMb,EAAO,GAAGgC,GAAK4B,GAAMwB,CAAM;AACvC,SAAOtE,EAAY,OAAOD,CAAG;AACjC;AASA,SAASqI,GAAGlH,GAAK4B,GAAMwB,GAAQ;AAC3B,QAAMvE,IAAMb,EAAO,GAAGgC,GAAK4B,GAAMwB,CAAM;AACvC,SAAOtE,EAAY,OAAOD,CAAG;AACjC;AASA,SAASsI,GAAGvF,GAAMF,GAAO0B,GAAQ;AAC7B,QAAMvE,IAAMb,EAAO,GAAG4D,GAAMF,GAAO0B,CAAM;AACzC,SAAOtE,EAAY,OAAOD,CAAG;AACjC;AASA,SAASuI,GAAGxF,GAAMF,GAAO0B,GAAQ;AAC7B,QAAMvE,IAAMb,EAAO,GAAG4D,GAAMF,GAAO0B,CAAM;AACzC,SAAOtE,EAAY,OAAOD,CAAG;AACjC;AASA,SAASwI,GAAKrF,GAAUE,GAAU5D,GAAK;AACnC,QAAMO,IAAMb,EAAO,KAAKgE,GAAUE,GAAU5D,CAAG;AAC/C,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AASA,SAASyI,GAAItH,GAAKgB,GAAKuG,GAAU;AAC7B,QAAM1I,IAAMb,EAAO,IAAIgC,GAAKgB,GAAKuG,CAAQ;AACzC,SAAOzI,EAAY,OAAOD,CAAG;AACjC;AAQA,SAAS2I,GAAK5F,GAAM6F,GAAO;AACvB,QAAM5I,IAAMb,EAAO,KAAK4D,GAAM6F,CAAK;AACnC,SAAO3I,EAAY,OAAOD,CAAG;AACjC;AAQA,SAAS6I,GAAG1H,GAAKuH,GAAU;AACvB,QAAM1I,IAAMb,EAAO,GAAGgC,GAAKuH,CAAQ;AACnC,SAAOzI,EAAY,OAAOD,CAAG;AACjC;AAQA,SAAS8I,GAAK3H,GAAK4H,GAAK;AACpB,QAAM/I,IAAMb,EAAO,KAAKgC,GAAK4H,CAAG;AAChC,SAAO9I,EAAY,OAAOD,CAAG;AACjC;AAQA,SAASgJ,GAAKC,GAASlC,GAAY;AAC/B,QAAM/G,IAAMb,EAAO,KAAK8J,GAASlC,CAAU;AAC3C,SAAO9G,EAAY,OAAOD,CAAG;AACjC;AAQA,SAASkJ,GAAKC,GAASC,GAAO;AAC1B,QAAMpJ,IAAMb,EAAO,KAAKgK,GAASC,CAAK;AACtC,SAAOnJ,EAAY,OAAOD,CAAG;AACjC;AAQA,SAASqJ,GAAKF,GAASC,GAAO;AAC1B,QAAMpJ,IAAMb,EAAO,KAAKgK,GAASC,CAAK;AACtC,SAAOnJ,EAAY,OAAOD,CAAG;AACjC;AASA,SAASsJ,GAAKL,GAASE,GAASC,GAAO;AACnC,QAAMpJ,IAAMb,EAAO,KAAK8J,GAASE,GAASC,CAAK;AAC/C,SAAOnJ,EAAY,OAAOD,CAAG;AACjC;AASA,SAASuJ,GAAKN,GAASE,GAASC,GAAO;AACnC,QAAMpJ,IAAMb,EAAO,KAAK8J,GAASE,GAASC,CAAK;AAC/C,SAAOnJ,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASwJ,GAAKtB,GAAUC,GAAUgB,GAASC,GAAO;AAC9C,QAAMpJ,IAAMb,EAAO,KAAK+I,GAAUC,GAAUgB,GAASC,CAAK;AAC1D,SAAOnJ,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASyJ,GAAKvB,GAAUC,GAAUgB,GAASC,GAAO;AAC9C,QAAMpJ,IAAMb,EAAO,KAAK+I,GAAUC,GAAUgB,GAASC,CAAK;AAC1D,SAAOnJ,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS0J,GAAG3C,GAAY;AACpB,QAAM/G,IAAMb,EAAO,GAAG4H,CAAU;AAChC,SAAO9G,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS2J,GAAK7F,GAAQ;AAClB,QAAM9D,IAAMb,EAAO,KAAK2E,CAAM;AAC9B,SAAO7D,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS4J,GAAK9F,GAAQ;AAClB,QAAM9D,IAAMb,EAAO,KAAK2E,CAAM;AAC9B,SAAO7D,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS6J,GAAI/F,GAAQ;AACjB,QAAM9D,IAAMb,EAAO,IAAI2E,CAAM;AAC7B,SAAO7D,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS8J,GAAIhG,GAAQ;AACjB,QAAM9D,IAAMb,EAAO,IAAI2E,CAAM;AAC7B,SAAO7D,EAAY,OAAOD,CAAG;AACjC;AAOA,SAAS+J,GAAKC,GAAS;AACnB,QAAMhK,IAAMb,EAAO,KAAK6K,CAAO;AAC/B,SAAO/J,EAAY,OAAOD,CAAG;AACjC;AAOA,SAASiK,GAAKD,GAAS;AACnB,QAAMhK,IAAMb,EAAO,KAAK6K,CAAO;AAC/B,SAAO/J,EAAY,OAAOD,CAAG;AACjC;AAOA,SAASkK,GAAKF,GAAS;AACnB,QAAMhK,IAAMb,EAAO,KAAK6K,CAAO;AAC/B,SAAO/J,EAAY,OAAOD,CAAG;AACjC;AAOA,SAASmK,GAAKH,GAAS;AACnB,QAAMhK,IAAMb,EAAO,KAAK6K,CAAO;AAC/B,SAAO/J,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASoK,GAAKjJ,GAAKC,GAAKC,GAAKgJ,GAAO;AAChC,QAAMrK,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,GAAKgJ,CAAK;AAC5C,SAAOpK,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASsK,GAAKnJ,GAAKC,GAAKC,GAAKgJ,GAAO;AAChC,QAAMrK,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,GAAKgJ,CAAK;AAC5C,SAAOpK,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASuK,GAAKpJ,GAAKC,GAAKC,GAAKgJ,GAAO;AAChC,QAAMrK,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,GAAKgJ,CAAK;AAC5C,SAAOpK,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASwK,GAAKrJ,GAAKC,GAAKC,GAAKgJ,GAAO;AAChC,QAAMrK,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,GAAKgJ,CAAK;AAC5C,SAAOpK,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASyK,GAAKtJ,GAAKC,GAAKC,GAAKgJ,GAAO;AAChC,QAAMrK,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,GAAKgJ,CAAK;AAC5C,SAAOpK,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS0K,GAAKvJ,GAAKC,GAAKC,GAAKgJ,GAAO;AAChC,QAAMrK,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,GAAKgJ,CAAK;AAC5C,SAAOpK,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS2K,GAAKxJ,GAAKC,GAAKC,GAAKgJ,GAAO;AAChC,QAAMrK,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,GAAKgJ,CAAK;AAC5C,SAAOpK,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS4K,GAAKzJ,GAAKC,GAAKC,GAAKgJ,GAAO;AAChC,QAAMrK,IAAMb,EAAO,KAAKgC,GAAKC,GAAKC,GAAKgJ,CAAK;AAC5C,SAAOpK,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS6K,GAAK1J,GAAKuB,GAASC,GAASC,GAAS;AAC1C,QAAM5C,IAAMb,EAAO,KAAKgC,GAAKuB,GAASC,GAASC,CAAO;AACtD,SAAO3C,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS8K,GAAK3J,GAAKuB,GAASC,GAASC,GAAS;AAC1C,QAAM5C,IAAMb,EAAO,KAAKgC,GAAKuB,GAASC,GAASC,CAAO;AACtD,SAAO3C,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS+K,GAAK5J,GAAK6J,GAASC,GAASC,GAAQ;AACzC,QAAMlL,IAAMb,EAAO,KAAKgC,GAAK6J,GAASC,GAASC,CAAM;AACrD,SAAOjL,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASmL,GAAKhK,GAAK6J,GAASC,GAASC,GAAQ;AACzC,QAAMlL,IAAMb,EAAO,KAAKgC,GAAK6J,GAASC,GAASC,CAAM;AACrD,SAAOjL,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASoL,GAAKjK,GAAKuB,GAASC,GAASuI,GAAQ;AACzC,QAAMlL,IAAMb,EAAO,KAAKgC,GAAKuB,GAASC,GAASuI,CAAM;AACrD,SAAOjL,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASqL,GAAKlK,GAAKuB,GAASC,GAASuI,GAAQ;AACzC,QAAMlL,IAAMb,EAAO,KAAKgC,GAAKuB,GAASC,GAASuI,CAAM;AACrD,SAAOjL,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASsL,GAAKxG,GAAGC,GAAGC,GAAGC,GAAG;AACtB,QAAMjF,IAAMb,EAAO,KAAK2F,GAAGC,GAAGC,GAAGC,CAAC;AAClC,SAAOhF,EAAY,OAAOD,CAAG;AACjC;AAQA,SAASuL,GAAKpK,GAAKqK,GAAa;AAC5B,QAAMxL,IAAMb,EAAO,KAAKgC,GAAKqK,CAAW;AACxC,SAAOvL,EAAY,OAAOD,CAAG;AACjC;AAUA,SAASyL,GAAKC,GAASF,GAAajH,GAAQ9E,GAAK;AAC7C,QAAMO,IAAMb,EAAO,KAAKuM,GAASF,GAAajH,GAAQ9E,CAAG;AACzD,SAAOQ,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS2L,GAAKxK,GAAKyK,GAAUC,GAAgBC,GAAY;AACrD,QAAM9L,IAAMb,EAAO,KAAKgC,GAAKyK,GAAUC,GAAgBC,CAAU;AACjE,SAAO7L,EAAY,OAAOD,CAAG;AACjC;AAUA,SAAS+L,GAAKC,GAASJ,GAAUK,GAAiBH,GAAY;AAC1D,QAAM9L,IAAMb,EAAO,KAAK6M,GAASJ,GAAUK,GAAiBH,CAAU;AACtE,SAAO7L,EAAY,OAAOD,CAAG;AACjC;AAEA,IAAIkM,KAAwB;AAE5B,SAASC,KAAqB;AAC1B,UAAID,OAA0B,QAAQA,GAAsB,OAAO,aAAa,MAASA,GAAsB,OAAO,aAAa,UAAaA,GAAsB,WAAW/M,EAAO,OAAO,YAC3L+M,KAAwB,IAAI,SAAS/M,EAAO,OAAO,MAAM,IAEtD+M;AACX;AAEA,SAASE,GAAoB5M,GAAKC,GAAK;AACnC,SAAAD,IAAMA,MAAQ,GACPF,GAAsB,EAAC,SAASE,IAAM,GAAGA,IAAM,IAAIC,CAAG;AACjE;AAKA,MAAM4M,KAAc,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,EAI9B,IAAI;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIZ,IAAI;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIZ,IAAI;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIZ,IAAI;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIZ,KAAK;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIb,KAAK;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIb,KAAK;AAAA,EAAG,GAAK;AACjB,CAAC,GAOKC,KAAS,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,EAIzB,kBAAkB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI1B,WAAW;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAInB,uBAAuB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI/B,YAAY;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIjB,aAAa;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIrB,aAAa;AAAA,EAAG,GAAK;AACzB,CAAC,GAOKC,KAAU,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,EAI1B,MAAM;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAId,gBAAgB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIxB,cAAc;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAItB,kBAAkB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI1B,mBAAmB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI3B,oBAAoB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI5B,sBAAsB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI9B,QAAQ;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIhB,YAAY;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAItB,oBAAoB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI9B,qBAAqB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI/B,sBAAsB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIhC,UAAU;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIpB,4BAA4B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIxC,yBAAyB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIrC,mBAAmB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI/B,oBAAoB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIhC,sBAAsB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIlC,YAAY;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIxB,0BAA0B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAItC,oBAAoB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIhC,qBAAqB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIjC,sBAAsB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIlC,WAAW;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIvB,eAAe;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI3B,sBAAsB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIlC,gBAAgB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI5B,iBAAiB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI7B,kBAAkB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI9B,oBAAoB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIhC,uBAAuB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAInC,0BAA0B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAItC,8BAA8B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI1C,oBAAoB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIhC,wBAAwB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIpC,2BAA2B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIvC,mBAAmB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI/B,0BAA0B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAItC,iBAAiB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI7B,oBAAoB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIhC,uBAAuB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAInC,oBAAoB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIhC,mBAAmB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI/B,0BAA0B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAItC,wBAAwB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIpC,6BAA6B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIzC,iCAAiC;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI7C,kBAAkB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI9B,uBAAuB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAInC,2BAA2B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIvC,8BAA8B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI1C,YAAY;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAIxB,cAAc;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI1B,kBAAkB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI9B,mBAAmB;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI/B,0BAA0B;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAItC,iCAAiC;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI7C,gCAAgC;AAAA,EAAK,KAAO;AAAA;AAAA;AAAA;AAAA,EAI5C,mBAAmB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAIjC,aAAa;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI3B,aAAa;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI3B,WAAW;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAIzB,oBAAoB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAIlC,gBAAgB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI9B,cAAc;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI5B,kBAAkB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAIhC,YAAY;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI1B,oBAAoB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAIlC,uBAAuB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAIrC,wBAAwB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAItC,qBAAqB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAInC,uBAAuB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAIrC,QAAQ;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAItB,kBAAkB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAIhC,gBAAgB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI9B,eAAe;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI7B,gBAAgB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI9B,kBAAkB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAIhC,gBAAgB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI9B,iBAAiB;AAAA,EAAM,MAAQ;AAAA;AAAA;AAAA;AAAA,EAI/B,kBAAkB;AAAA,EAAM,MAAQ;AACpC,CAAC,GAKKC,KAAS,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,EAIzB,KAAK;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIb,KAAK;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIb,KAAK;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIb,IAAI;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIZ,KAAK;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIb,KAAK;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIb,KAAK;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIb,KAAK;AAAA,EAAG,GAAK;AACjB,CAAC,GAKKC,KAAc,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,EAI9B,oBAAoB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI5B,QAAQ;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIhB,UAAU;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIlB,qBAAqB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI7B,gBAAgB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxB,oBAAoB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI5B,kBAAkB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI1B,iBAAiB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIzB,kBAAkB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAI1B,yBAAyB;AAAA,EAAG,GAAK;AAAA;AAAA;AAAA;AAAA,EAIjC,iBAAiB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI3B,eAAe;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIzB,gBAAgB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI1B,iBAAiB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI3B,qBAAqB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI/B,2BAA2B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIrC,wBAAwB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIlC,6BAA6B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIvC,cAAc;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIxB,uBAAuB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIjC,mBAAmB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI7B,WAAW;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIrB,oBAAoB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI9B,qBAAqB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI/B,yBAAyB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAInC,iBAAiB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI3B,0BAA0B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIpC,2BAA2B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIrC,4BAA4B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAItC,wBAAwB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIlC,+BAA+B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA;AAAA,EAKzC,yBAAyB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAInC,2BAA2B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIrC,kBAAkB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI5B,oBAAoB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9B,iBAAiB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI3B,+BAA+B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIzC,mBAAmB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI7B,oBAAoB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI9B,qBAAqB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI/B,gBAAgB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI1B,gBAAgB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI1B,iBAAiB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI3B,iBAAiB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI3B,oBAAoB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,cAAc;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxB,sBAAsB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIhC,qBAAqB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA;AAAA,EAK/B,0BAA0B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIpC,+BAA+B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIzC,qCAAqC;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI/C,oCAAoC;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI9C,yBAAyB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAInC,mCAAmC;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI7C,cAAc;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIxB,uBAAuB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIjC,mBAAmB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI7B,oBAAoB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAI9B,0BAA0B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIpC,2BAA2B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIrC,2BAA2B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIrC,sBAAsB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIhC,uBAAuB;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIjC,2BAA2B;AAAA,EAAI,IAAM;AAAA;AAAA;AAAA;AAAA,EAIrC,8BAA8B;AAAA,EAAI,IAAM;AAC5C,CAAC,GAEKC,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlN,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMmN,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMnN,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkN,GAAgB,WAAW,IAAI,GACxBlN;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB0M,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1M,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM+M,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAvN,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMwN,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMxN,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBuN,GAAiB,WAAW,IAAI,GACzBvN;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzB+M,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM/M,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkN,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1N,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2N,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3N,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0N,GAAiB,WAAW,IAAI,GACzB1N;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYyD,GAAO;AACf,IAAAvD,EAAauD,GAAO2J,CAAK;AACzB,QAAIrM,IAAO0C,EAAM,mBAAoB;AACrC,UAAMjD,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBkN,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlN,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoN,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5N,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAM6N,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAM7N,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4N,GAAgB,WAAW,IAAI,GACxB5N;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBoN,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpN,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsN,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9N,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM+N,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM/N,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8N,GAAiB,WAAW,IAAI,GACzB9N;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBsN,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtN,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwN,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhO,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMiO,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMjO,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgO,GAAgB,WAAW,IAAI,GACxBhO;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKgD,GAAeG,GAAkB;AAC9C,IAAA5E,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAayE,GAAeyI,CAAK;AACjC,QAAIC,IAAO1I,EAAc,mBAAoB;AAC7C,IAAAzE,EAAa4E,GAAkBsI,CAAK;AACpC,QAAIE,IAAOxI,EAAiB,mBAAoB;AAChD,UAAMtE,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBwN,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxN,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0N,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlO,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMmO,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMnO,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkO,GAAiB,WAAW,IAAI,GACzBlO;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAY2B,GAAK;AACb,IAAAzB,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,UAAMnB,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzB0N,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1N,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4N,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApO,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMqO,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMrO,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoO,GAAiB,WAAW,IAAI,GACzBpO;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2B,GAAKwC,GAAQ;AACrB,IAAAjE,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAaiE,GAAQiJ,CAAK;AAC1B,QAAIC,IAAOlJ,EAAO,mBAAoB;AACtC,UAAM3D,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzB4N,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5N,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8N,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtO,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMuO,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMvO,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsO,GAAiB,WAAW,IAAI,GACzBtO;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYkM,GAASF,GAAajH,GAAQ9E,GAAK;AAC3C,IAAAC,EAAagM,GAASkB,CAAK;AAC3B,QAAIrM,IAAOmL,EAAQ,mBAAoB;AACvC,IAAAhM,EAAa8L,GAAaoB,CAAK;AAC/B,QAAIC,IAAOrB,EAAY,mBAAoB;AAC3C,IAAA9L,EAAa6E,GAAQqI,CAAK;AAC1B,QAAIE,IAAOvI,EAAO,mBAAoB;AACtC,IAAA7E,EAAaD,GAAKmN,CAAK;AACvB,QAAIoB,IAAOvO,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzB8N,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9N,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMiO,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAzO,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM0O,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM1O,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjByO,GAAiB,WAAW,IAAI,GACzBzO;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2B,GAAKqK,GAAa;AAC1B,IAAA9L,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa8L,GAAaoB,CAAK;AAC/B,QAAIC,IAAOrB,EAAY,mBAAoB;AAC3C,UAAMxL,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzBiO,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMjO,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMmO,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA3O,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM4O,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM5O,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB2O,GAAiB,WAAW,IAAI,GACzB3O;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAYsE,GAAQC,GAAa;AAC7B,IAAArE,EAAaoE,GAAQ8I,CAAK;AAC1B,QAAIrM,IAAOuD,EAAO,mBAAoB;AACtC,IAAApE,EAAaqE,GAAa6I,CAAK;AAC/B,QAAIC,IAAO9I,EAAY,mBAAoB;AAC3C,UAAM/D,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzBmO,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMnO,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMqO,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA7O,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM8O,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM9O,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB6O,GAAiB,WAAW,IAAI,GACzB7O;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYyE,GAAeC,GAAWC,GAAeC,GAAS;AAC1D,IAAA1E,EAAauE,GAAe2I,CAAK;AACjC,QAAIrM,IAAO0D,EAAc,mBAAoB;AAC7C,IAAAvE,EAAawE,GAAW0I,CAAK;AAC7B,QAAIC,IAAO3I,EAAU,mBAAoB;AACzC,IAAAxE,EAAayE,GAAeyI,CAAK;AACjC,QAAIE,IAAO3I,EAAc,mBAAoB;AAC7C,IAAAzE,EAAa0E,GAASwI,CAAK;AAC3B,QAAIoB,IAAO5J,EAAQ,mBAAoB;AACvC,UAAMpE,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBqO,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMrO,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMuO,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA/O,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAMgP,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAMhP,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB+O,GAAe,WAAW,IAAI,GACvB/O;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAY2B,GAAK;AACb,IAAAzB,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,UAAMnB,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBuO,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMvO,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMyO,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAjP,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMkP,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMlP,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBiP,GAAgB,WAAW,IAAI,GACxBjP;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2D,GAAUmB,GAAkBC,GAAQ9E,GAAK;AACjD,IAAAC,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAa4E,GAAkBsI,CAAK;AACpC,QAAIC,IAAOvI,EAAiB,mBAAoB;AAChD,IAAA5E,EAAa6E,GAAQqI,CAAK;AAC1B,QAAIE,IAAOvI,EAAO,mBAAoB;AACtC,IAAA7E,EAAaD,GAAKmN,CAAK;AACvB,QAAIoB,IAAOvO,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzByO,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMzO,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM2O,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAnP,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMoP,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMpP,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBmP,GAAgB,WAAW,IAAI,GACxBnP;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYsE,GAAQ;AAChB,IAAApE,EAAaoE,GAAQ8I,CAAK;AAC1B,QAAIrM,IAAOuD,EAAO,mBAAoB;AACtC,UAAM9D,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzB2O,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM3O,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM6O,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAArP,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMsP,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMtP,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBqP,GAAiB,WAAW,IAAI,GACzBrP;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYsE,GAAQ;AAChB,IAAApE,EAAaoE,GAAQiL,EAAK;AAC1B,QAAIxO,IAAOuD,EAAO,mBAAoB;AACtC,UAAM9D,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzB6O,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAM7O,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO4P,GAAM,OAAO/O,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgP,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxP,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMyP,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMzP,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwP,GAAgB,WAAW,IAAI,GACxBxP;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYsE,GAAQ;AAChB,IAAApE,EAAaoE,GAAQ8I,CAAK;AAC1B,QAAIrM,IAAOuD,EAAO,mBAAoB;AACtC,UAAM9D,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBgP,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhP,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkP,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1P,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2P,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3P,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0P,GAAiB,WAAW,IAAI,GACzB1P;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYsE,GAAQ;AAChB,IAAApE,EAAaoE,GAAQiL,EAAK;AAC1B,QAAIxO,IAAOuD,EAAO,mBAAoB;AACtC,UAAM9D,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBkP,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMlP,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO4P,GAAM,OAAO/O,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoP,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5P,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6P,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7P,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4P,GAAiB,WAAW,IAAI,GACzB5P;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2D,GAAUmB,GAAkB;AACpC,IAAA5E,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAa4E,GAAkBsI,CAAK;AACpC,QAAIC,IAAOvI,EAAiB,mBAAoB;AAChD,UAAMtE,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzBoP,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpP,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsP,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9P,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM+P,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM/P,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8P,GAAiB,WAAW,IAAI,GACzB9P;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2B,GAAKmD,GAAkB;AAC/B,IAAA5E,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa4E,GAAkBsI,CAAK;AACpC,QAAIC,IAAOvI,EAAiB,mBAAoB;AAChD,UAAMtE,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzBsP,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtP,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwP,KAA2B,OAAO,uBAAyB,MAC3D,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhQ,MAAOL,EAAO,uBAAuBK,MAAQ,GAAG,CAAC,CAAC;AAIjF,MAAMc,GAAY;AAAA,EAEd,OAAO,OAAOd,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOnP,GAAY,SAAS;AAC/C,WAAAmP,EAAI,YAAYjQ,GAChBgQ,GAAwB,SAASC,GAAKA,EAAI,WAAWA,CAAG,GACjDA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgQ,GAAwB,WAAW,IAAI,GAChChQ;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,uBAAuBK,GAAK,CAAC;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,OAAO;AAEP,WADYL,EAAO,2BAA2B,KAAK,SAAS;AAAA,EAEpE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,KAAKuQ,GAAM;AACX,IAAAvQ,EAAO,2BAA2B,KAAK,WAAWuQ,CAAI;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,eAAe;AAEf,WADYvQ,EAAO,mCAAmC,KAAK,SAAS,MACrD;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,aAAauQ,GAAM;AACnB,IAAAvQ,EAAO,mCAAmC,KAAK,WAAWuQ,CAAI;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,SAAS;AACL,UAAMlQ,IAAM,KAAK,mBAAoB,GAC/BQ,IAAMb,EAAO,mBAAmBK,CAAG;AACzC,WAAOmQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,OAAO,SAAS4P,GAAM;AAClB,IAAAlQ,EAAakQ,GAAMD,EAAK;AACxB,QAAIpP,IAAOqP,EAAK,mBAAoB;AACpC,UAAM5P,IAAMb,EAAO,qBAAqBoB,CAAI;AAC5C,WAAOP,MAAQ,IAAI,SAAYM,GAAY,OAAON,CAAG;AAAA,EAC7D;AACA;AAEA,MAAM6P,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAArQ,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMsQ,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMtQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBqQ,GAAgB,WAAW,IAAI,GACxBrQ;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB6P,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM7P,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM+P,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAvQ,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMwQ,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMxQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBuQ,GAAiB,WAAW,IAAI,GACzBvQ;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzB+P,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM/P,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMiQ,KAAuB,OAAO,uBAAyB,MACvD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAzQ,MAAOL,EAAO,mBAAmBK,MAAQ,GAAG,CAAC,CAAC;AAI7E,MAAMwB,GAAQ;AAAA,EAEV,qBAAqB;AACjB,UAAMxB,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjByQ,GAAoB,WAAW,IAAI,GAC5BzQ;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,mBAAmBK,GAAK,CAAC;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,eAAe;AAEf,WADYL,EAAO,+BAA+B,KAAK,SAAS,MACjD;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,aAAauQ,GAAM;AACnB,IAAAvQ,EAAO,+BAA+B,KAAK,WAAWuQ,CAAI;AAAA,EAClE;AACA;AAEA,MAAMQ,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1Q,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2Q,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3Q,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0Q,GAAiB,WAAW,IAAI,GACzB1Q;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYsF,GAAGC,GAAGC,GAAGC,GAAG;AACpB,IAAAvF,EAAaoF,GAAG8H,CAAK;AACrB,QAAIrM,IAAOuE,EAAE,mBAAoB;AACjC,IAAApF,EAAaqF,GAAG6H,CAAK;AACrB,QAAIC,IAAO9H,EAAE,mBAAoB;AACjC,IAAArF,EAAasF,GAAG4H,CAAK;AACrB,QAAIE,IAAO9H,EAAE,mBAAoB;AACjC,IAAAtF,EAAauF,GAAG2H,CAAK;AACrB,QAAIoB,IAAO/I,EAAE,mBAAoB;AACjC,UAAMjF,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBkQ,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlQ,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoQ,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5Q,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6Q,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7Q,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4Q,GAAiB,WAAW,IAAI,GACzB5Q;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2D,GAAU8C,GAAUC,GAAe;AAC3C,IAAAxG,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAauG,GAAU2G,CAAK;AAC5B,QAAIC,IAAO5G,EAAS,mBAAoB;AACxC,IAAAvG,EAAawG,GAAe0G,CAAK;AACjC,QAAIE,IAAO5G,EAAc,mBAAoB;AAC7C,UAAMlG,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBoQ,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpQ,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsQ,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9Q,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM+Q,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM/Q,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8Q,GAAiB,WAAW,IAAI,GACzB9Q;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2B,GAAKyK,GAAUC,GAAgBC,GAAY;AACnD,IAAApM,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAakM,GAAUgB,CAAK;AAC5B,QAAIC,IAAOjB,EAAS,mBAAoB;AACxC,IAAAlM,EAAamM,GAAgBe,CAAK;AAClC,QAAIE,IAAOjB,EAAe,mBAAoB;AAC9C,IAAAnM,EAAaoM,GAAYc,CAAK;AAC9B,QAAIoB,IAAOlC,EAAW,mBAAoB;AAC1C,UAAM9L,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBsQ,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtQ,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwQ,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhR,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMiR,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMjR,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgR,GAAiB,WAAW,IAAI,GACzBhR;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2D,GAAU8C,GAAUC,GAAe;AAC3C,IAAAxG,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAauG,GAAU2G,CAAK;AAC5B,QAAIC,IAAO5G,EAAS,mBAAoB;AACxC,IAAAvG,EAAawG,GAAe0G,CAAK;AACjC,QAAIE,IAAO5G,EAAc,mBAAoB;AAC7C,UAAMlG,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBwQ,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxQ,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0Q,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlR,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMmR,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMnR,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkR,GAAiB,WAAW,IAAI,GACzBlR;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY6G,GAAcJ,GAAUK,GAAUC,GAAS;AACnD,IAAA7G,EAAa2G,GAAcuG,CAAK;AAChC,QAAIrM,IAAO8F,EAAa,mBAAoB;AAC5C,IAAA3G,EAAauG,GAAU2G,CAAK;AAC5B,QAAIC,IAAO5G,EAAS,mBAAoB;AACxC,IAAAvG,EAAa4G,GAAUsG,CAAK;AAC5B,QAAIE,IAAOxG,EAAS,mBAAoB;AACxC,IAAA5G,EAAa6G,GAASqG,CAAK;AAC3B,QAAIoB,IAAOzH,EAAQ,mBAAoB;AACvC,UAAMvG,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzB0Q,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1Q,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4Q,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApR,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMqR,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMrR,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoR,GAAiB,WAAW,IAAI,GACzBpR;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYwM,GAASJ,GAAUK,GAAiBH,GAAY;AACxD,IAAApM,EAAasM,GAASY,CAAK;AAC3B,QAAIrM,IAAOyL,EAAQ,mBAAoB;AACvC,IAAAtM,EAAakM,GAAUgB,CAAK;AAC5B,QAAIC,IAAOjB,EAAS,mBAAoB;AACxC,IAAAlM,EAAauM,GAAiBW,CAAK;AACnC,QAAIE,IAAOb,EAAgB,mBAAoB;AAC/C,IAAAvM,EAAaoM,GAAYc,CAAK;AAC9B,QAAIoB,IAAOlC,EAAW,mBAAoB;AAC1C,UAAM9L,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzB4Q,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5Q,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8Q,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtR,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAMuR,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAMvR,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsR,GAAe,WAAW,IAAI,GACvBtR;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB8Q,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9Q,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgR,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxR,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMyR,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMzR,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwR,GAAgB,WAAW,IAAI,GACxBxR;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBgR,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhR,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkR,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1R,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2R,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3R,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0R,GAAiB,WAAW,IAAI,GACzB1R;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBkR,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlR,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoR,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5R,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6R,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7R,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4R,GAAiB,WAAW,IAAI,GACzB5R;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYqD,GAAO;AACf,IAAAnD,EAAamD,GAAO+J,CAAK;AACzB,QAAIrM,IAAOsC,EAAM,mBAAoB;AACrC,UAAM7C,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBoR,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpR,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsR,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9R,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAM+R,GAAG;AAAA,EAEL,OAAO,OAAO/R,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAO8B,GAAG,SAAS;AACtC,WAAA9B,EAAI,YAAYjQ,GAChB8R,GAAe,SAAS7B,GAAKA,EAAI,WAAWA,CAAG,GACxCA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8R,GAAe,WAAW,IAAI,GACvB9R;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,OAAO,UAAUM,GAAIC,GAAM;AACvB,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,UAAME,IAAMb,EAAO,aAAaoB,GAAMR,CAAI;AAC1C,WAAOwR,GAAG,OAAOvR,CAAG;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAYmB,GAAKuH,GAAU;AACvB,IAAAhJ,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAagJ,GAAU8I,EAAK;AAC5B,QAAI3E,IAAOnE,EAAS,mBAAoB;AACxC,UAAM1I,IAAMb,EAAO,kBAAkBoB,GAAMsM,CAAI;AAC/C,gBAAK,YAAY7M,MAAQ,GACzBsR,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtR,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,SAAS,KAAK,SAAS;AAC1C,WAAOqS,GAAM,OAAOxR,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMyR,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAjS,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAMkS,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAMlS,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBiS,GAAe,WAAW,IAAI,GACvBjS;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzByR,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMzR,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM2R,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAnS,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMoS,GAAI;AAAA,EAEN,OAAO,OAAOpS,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOmC,GAAI,SAAS;AACvC,WAAAnC,EAAI,YAAYjQ,GAChBmS,GAAgB,SAASlC,GAAKA,EAAI,WAAWA,CAAG,GACzCA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBmS,GAAgB,WAAW,IAAI,GACxBnS;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,OAAO,UAAUM,GAAIK,GAAIJ,GAAM;AAC3B,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,IAAAJ,EAAaS,GAAIyM,CAAK;AACtB,QAAIC,IAAO1M,EAAG,mBAAoB;AAClC,UAAMH,IAAMb,EAAO,cAAcoB,GAAMsM,GAAM9M,CAAI;AACjD,WAAO6R,GAAI,OAAO5R,CAAG;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAYmB,GAAKgB,GAAKuG,GAAU;AAC5B,IAAAhJ,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAayC,GAAKyK,CAAK;AACvB,QAAIC,IAAO1K,EAAI,mBAAoB;AACnC,IAAAzC,EAAagJ,GAAUuE,EAAK;AAC5B,QAAIH,IAAOpE,EAAS,mBAAoB;AACxC,UAAM1I,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB2R,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM3R,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM6R,KAAqB,OAAO,uBAAyB,MACrD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAArS,MAAOL,EAAO,iBAAiBK,MAAQ,GAAG,CAAC,CAAC;AAI3E,MAAMmQ,GAAM;AAAA,EAER,OAAO,OAAOnQ,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOE,GAAM,SAAS;AACzC,WAAAF,EAAI,YAAYjQ,GAChBqS,GAAkB,SAASpC,GAAKA,EAAI,WAAWA,CAAG,GAC3CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBqS,GAAkB,WAAW,IAAI,GAC1BrS;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,iBAAiBK,GAAK,CAAC;AAAA,EACtC;AACA;AAEA,MAAMsS,KAAqB,OAAO,uBAAyB,MACrD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtS,MAAOL,EAAO,iBAAiBK,MAAQ,GAAG,CAAC,CAAC;AAI3E,MAAMyN,GAAM;AAAA,EAER,OAAO,OAAOzN,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOxC,GAAM,SAAS;AACzC,WAAAwC,EAAI,YAAYjQ,GAChBsS,GAAkB,SAASrC,GAAKA,EAAI,WAAWA,CAAG,GAC3CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsS,GAAkB,WAAW,IAAI,GAC1BtS;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,iBAAiBK,GAAK,CAAC;AAAA,EACtC;AACA;AAEA,MAAMuS,KAAqB,OAAO,uBAAyB,MACrD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAvS,MAAOL,EAAO,iBAAiBK,MAAQ,GAAG,CAAC,CAAC;AAI3E,MAAMgS,GAAM;AAAA,EAER,OAAO,OAAOhS,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAO+B,GAAM,SAAS;AACzC,WAAA/B,EAAI,YAAYjQ,GAChBuS,GAAkB,SAAStC,GAAKA,EAAI,WAAWA,CAAG,GAC3CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBuS,GAAkB,WAAW,IAAI,GAC1BvS;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,iBAAiBK,GAAK,CAAC;AAAA,EACtC;AACA;AAEA,MAAMwS,KAAqB,OAAO,uBAAyB,MACrD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxS,MAAOL,EAAO,iBAAiBK,MAAQ,GAAG,CAAC,CAAC;AAI3E,MAAMuP,GAAM;AAAA,EAER,OAAO,OAAOvP,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOV,GAAM,SAAS;AACzC,WAAAU,EAAI,YAAYjQ,GAChBwS,GAAkB,SAASvC,GAAKA,EAAI,WAAWA,CAAG,GAC3CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwS,GAAkB,WAAW,IAAI,GAC1BxS;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,iBAAiBK,GAAK,CAAC;AAAA,EACtC;AACA;AAEA,MAAMyS,KAA2B,OAAO,uBAAyB,MAC3D,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAzS,MAAOL,EAAO,uBAAuBK,MAAQ,GAAG,CAAC,CAAC;AAUjF,MAAMS,EAAY;AAAA,EAEd,OAAO,OAAOT,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOxP,EAAY,SAAS;AAC/C,WAAAwP,EAAI,YAAYjQ,GAChByS,GAAwB,SAASxC,GAAKA,EAAI,WAAWA,CAAG,GACjDA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjByS,GAAwB,WAAW,IAAI,GAChCzS;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,uBAAuBK,GAAK,CAAC;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,WAAW;AACP,QAAI;AACA,YAAM0S,IAAS/S,EAAO,gCAAgC,GAAG;AACzD,MAAAA,EAAO,qBAAqB+S,GAAQ,KAAK,SAAS;AAClD,UAAIC,IAAKhG,KAAqB,SAAS+F,IAAS,IAAI,GAAG,EAAI,GACvDE,IAAKjG,KAAqB,SAAS+F,IAAS,IAAI,GAAG,EAAI,GACvDG,IAAKjG,GAAoB+F,GAAIC,CAAE,EAAE,MAAO;AAC5C,aAAAjT,EAAO,oBAAoBgT,GAAIC,IAAK,GAAG,CAAC,GACjCC;AAAA,IACnB,UAAkB;AACN,MAAAlT,EAAO,gCAAgC,EAAE;AAAA,IACrD;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,OAAO;AAEV,WADYA,EAAO,iBAAkB,MACtB;AAAA,EACvB;AACA;AAEA,MAAMmT,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9S,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAM+S,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAM/S,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8S,GAAe,WAAW,IAAI,GACvB9S;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYuH,GAAY;AACpB,IAAArH,EAAaqH,GAAYgI,EAAK;AAC9B,QAAIxO,IAAOwG,EAAW,mBAAoB;AAC1C,UAAM/G,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBsS,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMtS,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO4P,GAAM,OAAO/O,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwS,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhT,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMiT,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMjT,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgT,GAAgB,WAAW,IAAI,GACxBhT;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYuH,GAAY;AACpB,IAAArH,EAAaqH,GAAY6F,CAAK;AAC9B,QAAIrM,IAAOwG,EAAW,mBAAoB;AAC1C,UAAM/G,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBwS,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxS,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0S,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlT,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMmT,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMnT,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkT,GAAiB,WAAW,IAAI,GACzBlT;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2J,GAASC,GAAO;AACxB,IAAA1J,EAAayJ,GAASyD,CAAK;AAC3B,QAAIrM,IAAO4I,EAAQ,mBAAoB;AACvC,IAAAzJ,EAAa0J,GAAOoI,EAAK;AACzB,QAAI3E,IAAOzD,EAAM,mBAAoB;AACrC,UAAMpJ,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzB0S,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1S,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,SAAS,KAAK,SAAS;AAC1C,WAAOqS,GAAM,OAAOxR,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4S,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApT,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMqT,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMrT,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoT,GAAiB,WAAW,IAAI,GACzBpT;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2J,GAASC,GAAO;AACxB,IAAA1J,EAAayJ,GAASyD,CAAK;AAC3B,QAAIrM,IAAO4I,EAAQ,mBAAoB;AACvC,IAAAzJ,EAAa0J,GAAOoI,EAAK;AACzB,QAAI3E,IAAOzD,EAAM,mBAAoB;AACrC,UAAMpJ,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzB4S,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5S,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,SAAS,KAAK,SAAS;AAC1C,WAAOqS,GAAM,OAAOxR,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8S,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtT,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMuT,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMvT,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsT,GAAgB,WAAW,IAAI,GACxBtT;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAYuH,GAAY3F,GAAKC,GAAK;AAC9B,IAAA3B,EAAaqH,GAAY6F,CAAK;AAC9B,QAAIrM,IAAOwG,EAAW,mBAAoB;AAC1C,IAAArH,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB8S,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9S,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgT,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxT,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMyT,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMzT,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwT,GAAiB,WAAW,IAAI,GACzBxT;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY0I,GAAUC,GAAUgB,GAASC,GAAO;AAC5C,IAAA1J,EAAawI,GAAU0E,CAAK;AAC5B,QAAIrM,IAAO2H,EAAS,mBAAoB;AACxC,IAAAxI,EAAayI,GAAUyE,CAAK;AAC5B,QAAIC,IAAO1E,EAAS,mBAAoB;AACxC,IAAAzI,EAAayJ,GAASyD,CAAK;AAC3B,QAAIE,IAAO3D,EAAQ,mBAAoB;AACvC,IAAAzJ,EAAa0J,GAAOuG,EAAK;AACzB,QAAI3B,IAAO5E,EAAM,mBAAoB;AACrC,UAAMpJ,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBgT,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhT,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkT,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1T,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2T,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3T,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0T,GAAiB,WAAW,IAAI,GACzB1T;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY0I,GAAUC,GAAUgB,GAASC,GAAO;AAC5C,IAAA1J,EAAawI,GAAU0E,CAAK;AAC5B,QAAIrM,IAAO2H,EAAS,mBAAoB;AACxC,IAAAxI,EAAayI,GAAUyE,CAAK;AAC5B,QAAIC,IAAO1E,EAAS,mBAAoB;AACxC,IAAAzI,EAAayJ,GAASyD,CAAK;AAC3B,QAAIE,IAAO3D,EAAQ,mBAAoB;AACvC,IAAAzJ,EAAa0J,GAAOuG,EAAK;AACzB,QAAI3B,IAAO5E,EAAM,mBAAoB;AACrC,UAAMpJ,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBkT,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlT,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoT,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5T,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6T,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7T,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4T,GAAiB,WAAW,IAAI,GACzB5T;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY0I,GAAUC,GAAUpB,GAAY;AACxC,IAAArH,EAAawI,GAAU0E,CAAK;AAC5B,QAAIrM,IAAO2H,EAAS,mBAAoB;AACxC,IAAAxI,EAAayI,GAAUyE,CAAK;AAC5B,QAAIC,IAAO1E,EAAS,mBAAoB;AACxC,IAAAzI,EAAaqH,GAAYkG,EAAK;AAC9B,QAAIH,IAAO/F,EAAW,mBAAoB;AAC1C,UAAM/G,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBoT,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpT,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsT,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9T,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM+T,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM/T,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8T,GAAiB,WAAW,IAAI,GACzB9T;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAYyJ,GAASE,GAASC,GAAO;AACjC,IAAA1J,EAAauJ,GAAS2D,CAAK;AAC3B,QAAIrM,IAAO0I,EAAQ,mBAAoB;AACvC,IAAAvJ,EAAayJ,GAASyD,CAAK;AAC3B,QAAIC,IAAO1D,EAAQ,mBAAoB;AACvC,IAAAzJ,EAAa0J,GAAO6D,EAAK;AACzB,QAAIH,IAAO1D,EAAM,mBAAoB;AACrC,UAAMpJ,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBsT,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtT,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwT,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhU,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMiU,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMjU,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgU,GAAiB,WAAW,IAAI,GACzBhU;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAYyJ,GAASE,GAASC,GAAO;AACjC,IAAA1J,EAAauJ,GAAS2D,CAAK;AAC3B,QAAIrM,IAAO0I,EAAQ,mBAAoB;AACvC,IAAAvJ,EAAayJ,GAASyD,CAAK;AAC3B,QAAIC,IAAO1D,EAAQ,mBAAoB;AACvC,IAAAzJ,EAAa0J,GAAO6D,EAAK;AACzB,QAAIH,IAAO1D,EAAM,mBAAoB;AACrC,UAAMpJ,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBwT,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxT,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0T,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlU,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMmU,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMnU,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkU,GAAiB,WAAW,IAAI,GACzBlU;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAYyJ,GAASlC,GAAY;AAC7B,IAAArH,EAAauJ,GAAS2D,CAAK;AAC3B,QAAIrM,IAAO0I,EAAQ,mBAAoB;AACvC,IAAAvJ,EAAaqH,GAAYyK,EAAK;AAC9B,QAAI3E,IAAO9F,EAAW,mBAAoB;AAC1C,UAAM/G,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzB0T,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1T,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,SAAS,KAAK,SAAS;AAC1C,WAAOqS,GAAM,OAAOxR,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4T,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApU,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMqU,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMrU,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoU,GAAiB,WAAW,IAAI,GACzBpU;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2D,GAAUE,GAAU5D,GAAK;AACjC,IAAAC,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAa2D,GAAUuJ,CAAK;AAC5B,QAAIC,IAAOxJ,EAAS,mBAAoB;AACxC,IAAA3D,EAAaD,GAAKmN,CAAK;AACvB,QAAIE,IAAOrN,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB4T,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5T,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8T,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtU,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAMuU,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAMvU,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsU,GAAe,WAAW,IAAI,GACvBtU;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAK4B,GAAMwB,GAAQ;AAC3B,IAAA7E,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAaqD,GAAM6J,CAAK;AACxB,QAAIC,IAAO9J,EAAK,mBAAoB;AACpC,IAAArD,EAAa6E,GAAQ0I,EAAK;AAC1B,QAAIH,IAAOvI,EAAO,mBAAoB;AACtC,UAAMvE,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzB8T,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9T,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgU,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxU,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMyU,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMzU,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwU,GAAgB,WAAW,IAAI,GACxBxU;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY6D,GAAUkB,GAAQ9E,GAAKmF,GAAM;AACrC,IAAAlF,EAAa2D,GAAUuJ,CAAK;AAC5B,QAAIrM,IAAO8C,EAAS,mBAAoB;AACxC,IAAA3D,EAAa6E,GAAQqI,CAAK;AAC1B,QAAIC,IAAOtI,EAAO,mBAAoB;AACtC,IAAA7E,EAAaD,GAAKmN,CAAK;AACvB,QAAIE,IAAOrN,EAAI,mBAAoB;AACnC,IAAAC,EAAakF,GAAM+K,EAAK;AACxB,QAAI3B,IAAOpJ,EAAK,mBAAoB;AACpC,UAAM5E,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBgU,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhU,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkU,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1U,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAM2U,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAM3U,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0U,GAAgB,WAAW,IAAI,GACxB1U;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYsF,GAAGC,GAAGC,GAAGC,GAAG;AACpB,IAAAvF,EAAaoF,GAAG8H,CAAK;AACrB,QAAIrM,IAAOuE,EAAE,mBAAoB;AACjC,IAAApF,EAAaqF,GAAG6H,CAAK;AACrB,QAAIC,IAAO9H,EAAE,mBAAoB;AACjC,IAAArF,EAAasF,GAAG4H,CAAK;AACrB,QAAIE,IAAO9H,EAAE,mBAAoB;AACjC,IAAAtF,EAAauF,GAAG2H,CAAK;AACrB,QAAIoB,IAAO/I,EAAE,mBAAoB;AACjC,UAAMjF,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBkU,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlU,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoU,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5U,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6U,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7U,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4U,GAAiB,WAAW,IAAI,GACzB5U;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYsF,GAAGC,GAAGhC,GAAMtD,GAAK;AACzB,IAAAC,EAAaoF,GAAG8H,CAAK;AACrB,QAAIrM,IAAOuE,EAAE,mBAAoB;AACjC,IAAApF,EAAaqF,GAAG6H,CAAK;AACrB,QAAIC,IAAO9H,EAAE,mBAAoB;AACjC,IAAArF,EAAaqD,GAAM6J,CAAK;AACxB,QAAIE,IAAO/J,EAAK,mBAAoB;AACpC,IAAArD,EAAaD,GAAKmN,CAAK;AACvB,QAAIoB,IAAOvO,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBoU,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpU,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsU,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9U,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAM+U,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAM/U,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8U,GAAe,WAAW,IAAI,GACvB9U;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBsU,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtU,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwU,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhV,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAMiV,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAMjV,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgV,GAAe,WAAW,IAAI,GACvBhV;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAK4B,GAAMwB,GAAQ;AAC3B,IAAA7E,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAaqD,GAAM6J,CAAK;AACxB,QAAIC,IAAO9J,EAAK,mBAAoB;AACpC,IAAArD,EAAa6E,GAAQ0I,EAAK;AAC1B,QAAIH,IAAOvI,EAAO,mBAAoB;AACtC,UAAMvE,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBwU,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxU,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0U,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlV,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMmV,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMnV,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkV,GAAgB,WAAW,IAAI,GACxBlV;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2D,GAAU1D,GAAK;AACvB,IAAAC,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAaD,GAAKmN,CAAK;AACvB,QAAIC,IAAOpN,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzB0U,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1U,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4U,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApV,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMqV,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMrV,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoV,GAAiB,WAAW,IAAI,GACzBpV;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAYuD,GAAM6F,GAAO;AACrB,IAAAlJ,EAAaqD,GAAM6J,CAAK;AACxB,QAAIrM,IAAOwC,EAAK,mBAAoB;AACpC,IAAArD,EAAakJ,GAAO4I,EAAK;AACzB,QAAI3E,IAAOjE,EAAM,mBAAoB;AACrC,UAAM5I,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzB4U,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5U,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,SAAS,KAAK,SAAS;AAC1C,WAAOqS,GAAM,OAAOxR,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8U,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtV,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMuV,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMvV,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsV,GAAgB,WAAW,IAAI,GACxBtV;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2D,GAAUE,GAAU5D,GAAK;AACjC,IAAAC,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAa2D,GAAUuJ,CAAK;AAC5B,QAAIC,IAAOxJ,EAAS,mBAAoB;AACxC,IAAA3D,EAAaD,GAAKmN,CAAK;AACvB,QAAIE,IAAOrN,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB8U,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9U,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgV,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxV,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMyV,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMzV,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwV,GAAiB,WAAW,IAAI,GACzBxV;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2D,GAAUE,GAAU5D,GAAK;AACjC,IAAAC,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAa2D,GAAUuJ,CAAK;AAC5B,QAAIC,IAAOxJ,EAAS,mBAAoB;AACxC,IAAA3D,EAAaD,GAAKwN,EAAK;AACvB,QAAIH,IAAOrN,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBgV,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhV,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkV,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1V,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAM2V,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAM3V,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0V,GAAgB,WAAW,IAAI,GACxB1V;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY+D,GAAQC,GAAUC,GAAUhE,GAAK;AACzC,IAAAC,EAAa6D,GAAQqJ,CAAK;AAC1B,QAAIrM,IAAOgD,EAAO,mBAAoB;AACtC,IAAA7D,EAAa8D,GAAUoJ,CAAK;AAC5B,QAAIC,IAAOrJ,EAAS,mBAAoB;AACxC,IAAA9D,EAAa+D,GAAUmJ,CAAK;AAC5B,QAAIE,IAAOrJ,EAAS,mBAAoB;AACxC,IAAA/D,EAAaD,GAAKmN,CAAK;AACvB,QAAIoB,IAAOvO,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBkV,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlV,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoV,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5V,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6V,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7V,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4V,GAAiB,WAAW,IAAI,GACzB5V;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAYsE,GAAQC,GAAa;AAC7B,IAAArE,EAAaoE,GAAQ8I,CAAK;AAC1B,QAAIrM,IAAOuD,EAAO,mBAAoB;AACtC,IAAApE,EAAaqE,GAAa6I,CAAK;AAC/B,QAAIC,IAAO9I,EAAY,mBAAoB;AAC3C,UAAM/D,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzBoV,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpV,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsV,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9V,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM+V,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM/V,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8V,GAAiB,WAAW,IAAI,GACzB9V;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2B,GAAKuB,GAASC,GAASC,GAAS;AACxC,IAAAlD,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAagD,GAASkK,CAAK;AAC3B,QAAIC,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAhD,EAAaiD,GAASiK,CAAK;AAC3B,QAAIE,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAjD,EAAakD,GAASgK,CAAK;AAC3B,QAAIoB,IAAOpL,EAAQ,mBAAoB;AACvC,UAAM5C,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBsV,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtV,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwV,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhW,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMiW,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMjW,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgW,GAAiB,WAAW,IAAI,GACzBhW;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBwV,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxV,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0V,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlW,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMmW,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMnW,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkW,GAAgB,WAAW,IAAI,GACxBlW;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB0V,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1V,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4V,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApW,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMqW,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMrW,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoW,GAAiB,WAAW,IAAI,GACzBpW;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzB4V,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5V,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8V,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtW,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMuW,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMvW,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsW,GAAiB,WAAW,IAAI,GACzBtW;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2B,GAAKa,GAAK;AAClB,IAAAtC,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAasC,GAAK4K,CAAK;AACvB,QAAIC,IAAO7K,EAAI,mBAAoB;AACnC,UAAMhC,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzB8V,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9V,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgW,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxW,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMyW,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMzW,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwW,GAAiB,WAAW,IAAI,GACzBxW;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2B,GAAK4H,GAAK;AAClB,IAAArJ,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAaqJ,GAAKyI,EAAK;AACvB,QAAI3E,IAAO9D,EAAI,mBAAoB;AACnC,UAAM/I,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzBgW,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhW,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,SAAS,KAAK,SAAS;AAC1C,WAAOqS,GAAM,OAAOxR,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkW,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1W,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2W,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3W,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0W,GAAiB,WAAW,IAAI,GACzB1W;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBkW,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlW,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoW,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5W,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAM6W,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAM7W,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4W,GAAgB,WAAW,IAAI,GACxB5W;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBoW,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpW,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsW,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9W,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM+W,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM/W,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8W,GAAiB,WAAW,IAAI,GACzB9W;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBsW,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtW,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwW,KAAwB,OAAO,uBAAyB,MACxD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhX,MAAOL,EAAO,oBAAoBK,MAAQ,GAAG,CAAC,CAAC;AAI9E,MAAMkB,GAAS;AAAA,EAEX,qBAAqB;AACjB,UAAMlB,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgX,GAAqB,WAAW,IAAI,GAC7BhX;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,oBAAoBK,GAAK,CAAC;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,KAAK;AAEL,WADYL,EAAO,sBAAsB,KAAK,SAAS;AAAA,EAE/D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,GAAGuQ,GAAM;AACT,IAAAvQ,EAAO,sBAAsB,KAAK,WAAWuQ,CAAI;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,eAAe;AAEf,WADYvQ,EAAO,mCAAmC,KAAK,SAAS,MACrD;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,aAAauQ,GAAM;AACnB,IAAAvQ,EAAO,mCAAmC,KAAK,WAAWuQ,CAAI;AAAA,EACtE;AACA;AAEA,MAAM+G,KAAuB,OAAO,uBAAyB,MACvD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAjX,MAAOL,EAAO,mBAAmBK,MAAQ,GAAG,CAAC,CAAC;AAI7E,MAAMqB,GAAQ;AAAA,EAEV,qBAAqB;AACjB,UAAMrB,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBiX,GAAoB,WAAW,IAAI,GAC5BjX;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,mBAAmBK,GAAK,CAAC;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,eAAe;AAEf,WADYL,EAAO,mCAAmC,KAAK,SAAS,MACrD;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,aAAauQ,GAAM;AACnB,IAAAvQ,EAAO,mCAAmC,KAAK,WAAWuQ,CAAI;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,eAAe;AAEf,WADYvQ,EAAO,+BAA+B,KAAK,SAAS,MACjD;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,IAAI,aAAauQ,GAAM;AACnB,IAAAvQ,EAAO,+BAA+B,KAAK,WAAWuQ,CAAI;AAAA,EAClE;AACA;AAEA,MAAMgH,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlX,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMmX,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMnX,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkX,GAAiB,WAAW,IAAI,GACzBlX;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAII,cAAc;AACV,UAAMQ,IAAMb,EAAO,oBAAqB;AACxC,gBAAK,YAAYa,MAAQ,GACzB0W,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AACA;AAEA,MAAME,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApX,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMqX,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMrX,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoX,GAAgB,WAAW,IAAI,GACxBpX;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2B,GAAKgB,GAAK;AAClB,IAAAzC,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAayC,GAAKyK,CAAK;AACvB,QAAIC,IAAO1K,EAAI,mBAAoB;AACnC,UAAMnC,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzB4W,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5W,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8W,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtX,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAMuX,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAMvX,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsX,GAAe,WAAW,IAAI,GACvBtX;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB8W,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9W,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgX,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxX,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMyX,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMzX,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwX,GAAgB,WAAW,IAAI,GACxBxX;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBgX,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhX,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkX,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1X,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2X,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3X,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0X,GAAiB,WAAW,IAAI,GACzB1X;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYwK,GAAS;AACjB,IAAAtK,EAAasK,GAAS+E,EAAK;AAC3B,QAAIxO,IAAOyJ,EAAQ,mBAAoB;AACvC,UAAMhK,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBkX,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMlX,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO4P,GAAM,OAAO/O,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoX,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5X,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6X,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7X,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4X,GAAiB,WAAW,IAAI,GACzB5X;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYwK,GAAS;AACjB,IAAAtK,EAAasK,GAAS+E,EAAK;AAC3B,QAAIxO,IAAOyJ,EAAQ,mBAAoB;AACvC,UAAMhK,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBoX,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMpX,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO4P,GAAM,OAAO/O,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsX,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9X,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM+X,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM/X,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8X,GAAiB,WAAW,IAAI,GACzB9X;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYwK,GAAS;AACjB,IAAAtK,EAAasK,GAAS+E,EAAK;AAC3B,QAAIxO,IAAOyJ,EAAQ,mBAAoB;AACvC,UAAMhK,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBsX,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMtX,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO4P,GAAM,OAAO/O,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwX,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhY,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMiY,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMjY,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgY,GAAiB,WAAW,IAAI,GACzBhY;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYwK,GAAS;AACjB,IAAAtK,EAAasK,GAAS+E,EAAK;AAC3B,QAAIxO,IAAOyJ,EAAQ,mBAAoB;AACvC,UAAMhK,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBwX,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMxX,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO4P,GAAM,OAAO/O,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0X,KAAgC,OAAO,uBAAyB,MAChE,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlY,MAAOL,EAAO,4BAA4BK,MAAQ,GAAG,CAAC,CAAC;AAItF,MAAMmY,GAAiB;AAAA,EAEnB,qBAAqB;AACjB,UAAMnY,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkY,GAA6B,WAAW,IAAI,GACrClY;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,4BAA4BK,GAAK,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAYoY,GAAQC,GAAa;AAC7B,UAAM7X,IAAMb,EAAO,kCAAkCyY,GAAQC,CAAW;AACxE,gBAAK,YAAY7X,MAAQ,GACzB0X,GAA6B,SAAS,MAAM,KAAK,WAAW,IAAI,GACzD;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,SAAS;AAEL,WADYvY,EAAO,wBAAwB,KAAK,SAAS;AAAA,EAEjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,cAAc;AAEV,WADYA,EAAO,6BAA6B,KAAK,SAAS,MAC/C;AAAA,EACvB;AACA;AAEA,MAAM2Y,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtY,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMuY,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMvY,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsY,GAAgB,WAAW,IAAI,GACxBtY;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYqD,GAAO;AACf,IAAAnD,EAAamD,GAAO+J,CAAK;AACzB,QAAIrM,IAAOsC,EAAM,mBAAoB;AACrC,UAAM7C,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzB8X,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9X,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgY,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxY,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMyY,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMzY,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwY,GAAiB,WAAW,IAAI,GACzBxY;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAYuD,GAAMtD,GAAK;AACnB,IAAAC,EAAaqD,GAAM6J,CAAK;AACxB,QAAIrM,IAAOwC,EAAK,mBAAoB;AACpC,IAAArD,EAAaD,GAAKmN,CAAK;AACvB,QAAIC,IAAOpN,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzBgY,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhY,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkY,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1Y,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2Y,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3Y,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0Y,GAAiB,WAAW,IAAI,GACzB1Y;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,YAAYqD,GAAO;AACf,IAAAnD,EAAamD,GAAO+J,CAAK;AACzB,QAAIrM,IAAOsC,EAAM,mBAAoB;AACrC,UAAM7C,IAAMb,EAAO,oBAAoBoB,CAAI;AAC3C,gBAAK,YAAYP,MAAQ,GACzBkY,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlY,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoY,KAAqB,OAAO,uBAAyB,MACrD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5Y,MAAOL,EAAO,iBAAiBK,MAAQ,GAAG,CAAC,CAAC;AAI3E,MAAMoN,EAAM;AAAA,EAER,OAAO,OAAOpN,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAO7C,EAAM,SAAS;AACzC,WAAA6C,EAAI,YAAYjQ,GAChB4Y,GAAkB,SAAS3I,GAAKA,EAAI,WAAWA,CAAG,GAC3CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4Y,GAAkB,WAAW,IAAI,GAC1B5Y;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,iBAAiBK,GAAK,CAAC;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,OAAO,YAAY6Y,GAAG;AAClB,UAAMrY,IAAMb,EAAO,kBAAkBkZ,CAAC;AACtC,WAAOrY,MAAQ,IAAI,SAAY4M,EAAM,OAAO5M,CAAG;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,MAAM;AACT,UAAMA,IAAMb,EAAO,UAAW;AAC9B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,OAAO;AACV,UAAMA,IAAMb,EAAO,WAAY;AAC/B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,MAAM;AACT,UAAMA,IAAMb,EAAO,UAAW;AAC9B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,OAAO;AACV,UAAMA,IAAMb,EAAO,WAAY;AAC/B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,KAAK;AACR,UAAMA,IAAMb,EAAO,SAAU;AAC7B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,OAAO;AACV,UAAMA,IAAMb,EAAO,WAAY;AAC/B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,OAAO,KAAK;AACR,UAAMA,IAAMb,EAAO,SAAU;AAC7B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,KAAK;AACR,UAAMA,IAAMb,EAAO,SAAU;AAC7B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,KAAK;AACR,UAAMA,IAAMb,EAAO,SAAU;AAC7B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,MAAM;AACT,UAAMA,IAAMb,EAAO,UAAW;AAC9B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,KAAK;AACR,UAAMA,IAAMb,EAAO,SAAU;AAC7B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,MAAM;AACT,UAAMA,IAAMb,EAAO,UAAW;AAC9B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,OAAO;AACV,UAAMA,IAAMb,EAAO,WAAY;AAC/B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,OAAO,KAAK;AACR,UAAMA,IAAMb,EAAO,SAAU;AAC7B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,MAAM;AACT,UAAMA,IAAMb,EAAO,UAAW;AAC9B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,WAAW;AACd,UAAMA,IAAMb,EAAO,eAAgB;AACnC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,OAAO,OAAO;AACV,UAAMA,IAAMb,EAAO,WAAY;AAC/B,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAYqY,GAAG;AACX,UAAMrY,IAAMb,EAAO,qBAAqBkZ,CAAC;AACzC,gBAAK,YAAYrY,MAAQ,GACzBoY,GAAkB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC9C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAM5Y,IAAM,KAAK,mBAAoB;AAErC,WADYL,EAAO,YAAYK,CAAG;AAAA,EAE1C;AACA;AAEA,MAAM8Y,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9Y,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM+Y,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM/Y,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8Y,GAAiB,WAAW,IAAI,GACzB9Y;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2D,GAAUE,GAAU5D,GAAK;AACjC,IAAAC,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAa2D,GAAUuJ,CAAK;AAC5B,QAAIC,IAAOxJ,EAAS,mBAAoB;AACxC,IAAA3D,EAAaD,GAAKmN,CAAK;AACvB,QAAIE,IAAOrN,EAAI,mBAAoB;AACnC,UAAMO,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBsY,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtY,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwY,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhZ,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAMiZ,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAMjZ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgZ,GAAe,WAAW,IAAI,GACvBhZ;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAYuD,GAAMF,GAAO0B,GAAQ;AAC7B,IAAA7E,EAAaqD,GAAM6J,CAAK;AACxB,QAAIrM,IAAOwC,EAAK,mBAAoB;AACpC,IAAArD,EAAamD,GAAO+J,CAAK;AACzB,QAAIC,IAAOhK,EAAM,mBAAoB;AACrC,IAAAnD,EAAa6E,GAAQ0I,EAAK;AAC1B,QAAIH,IAAOvI,EAAO,mBAAoB;AACtC,UAAMvE,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBwY,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxY,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0Y,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlZ,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMmZ,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMnZ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkZ,GAAiB,WAAW,IAAI,GACzBlZ;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY8F,GAAUC,GAAQC,GAAM;AAChC,IAAA9F,EAAa4F,GAAUsH,CAAK;AAC5B,QAAIrM,IAAO+E,EAAS,mBAAoB;AACxC,IAAA5F,EAAa6F,GAAQqH,CAAK;AAC1B,QAAIC,IAAOtH,EAAO,mBAAoB;AACtC,IAAA7F,EAAa8F,GAAMoH,CAAK;AACxB,QAAIE,IAAOtH,EAAK,mBAAoB;AACpC,UAAMxF,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB0Y,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1Y,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4Y,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApZ,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMqZ,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMrZ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoZ,GAAgB,WAAW,IAAI,GACxBpZ;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB4Y,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5Y,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8Y,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtZ,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMuZ,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMvZ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsZ,GAAiB,WAAW,IAAI,GACzBtZ;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzB8Y,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9Y,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgZ,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxZ,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMyZ,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMzZ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwZ,GAAgB,WAAW,IAAI,GACxBxZ;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY0H,GAAgBC,GAAWC,GAAUC,GAAO;AACpD,IAAA3H,EAAawH,GAAgB0F,CAAK;AAClC,QAAIrM,IAAO2G,EAAe,mBAAoB;AAC9C,IAAAxH,EAAayH,GAAWyF,CAAK;AAC7B,QAAIC,IAAO1F,EAAU,mBAAoB;AACzC,IAAAzH,EAAa0H,GAAUwF,CAAK;AAC5B,QAAIE,IAAO1F,EAAS,mBAAoB;AACxC,IAAA1H,EAAa2H,GAAOuF,CAAK;AACzB,QAAIoB,IAAO3G,EAAM,mBAAoB;AACrC,UAAMrH,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBgZ,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhZ,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkZ,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1Z,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAM2Z,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAM3Z,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0Z,GAAgB,WAAW,IAAI,GACxB1Z;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBkZ,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlZ,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoZ,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5Z,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6Z,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7Z,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4Z,GAAiB,WAAW,IAAI,GACzB5Z;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBoZ,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpZ,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsZ,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9Z,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAM+Z,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAM/Z,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8Z,GAAgB,WAAW,IAAI,GACxB9Z;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKoE,GAAQD,GAAU;AAC/B,IAAA5F,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa6F,GAAQqH,CAAK;AAC1B,QAAIC,IAAOtH,EAAO,mBAAoB;AACtC,IAAA7F,EAAa4F,GAAUsH,CAAK;AAC5B,QAAIE,IAAOxH,EAAS,mBAAoB;AACxC,UAAMtF,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBsZ,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtZ,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwZ,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAha,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMia,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMja,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBga,GAAiB,WAAW,IAAI,GACzBha;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2D,GAAUoC,GAAQD,GAAUE,GAAM;AAC1C,IAAA9F,EAAayD,GAAUyJ,CAAK;AAC5B,QAAIrM,IAAO4C,EAAS,mBAAoB;AACxC,IAAAzD,EAAa6F,GAAQqH,CAAK;AAC1B,QAAIC,IAAOtH,EAAO,mBAAoB;AACtC,IAAA7F,EAAa4F,GAAUsH,CAAK;AAC5B,QAAIE,IAAOxH,EAAS,mBAAoB;AACxC,IAAA5F,EAAa8F,GAAMoH,CAAK;AACxB,QAAIoB,IAAOxI,EAAK,mBAAoB;AACpC,UAAMxF,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBwZ,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxZ,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0Z,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAla,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMma,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMna,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBka,GAAgB,WAAW,IAAI,GACxBla;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzB0Z,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1Z,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4Z,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApa,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMqa,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMra,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoa,GAAiB,WAAW,IAAI,GACzBpa;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzB4Z,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5Z,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8Z,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAta,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAMua,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAMva,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsa,GAAe,WAAW,IAAI,GACvBta;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAYuD,GAAMF,GAAO0B,GAAQ;AAC7B,IAAA7E,EAAaqD,GAAM6J,CAAK;AACxB,QAAIrM,IAAOwC,EAAK,mBAAoB;AACpC,IAAArD,EAAamD,GAAO+J,CAAK;AACzB,QAAIC,IAAOhK,EAAM,mBAAoB;AACrC,IAAAnD,EAAa6E,GAAQ0I,EAAK;AAC1B,QAAIH,IAAOvI,EAAO,mBAAoB;AACtC,UAAMvE,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzB8Z,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9Z,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMga,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxa,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMya,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMza,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwa,GAAgB,WAAW,IAAI,GACxBxa;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY8F,GAAUC,GAAQ1C,GAAO;AACjC,IAAAnD,EAAa4F,GAAUsH,CAAK;AAC5B,QAAIrM,IAAO+E,EAAS,mBAAoB;AACxC,IAAA5F,EAAa6F,GAAQqH,CAAK;AAC1B,QAAIC,IAAOtH,EAAO,mBAAoB;AACtC,IAAA7F,EAAamD,GAAO+J,CAAK;AACzB,QAAIE,IAAOjK,EAAM,mBAAoB;AACrC,UAAM7C,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBga,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMha,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMka,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1a,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2a,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3a,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0a,GAAiB,WAAW,IAAI,GACzB1a;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY8F,GAAUC,GAAQlC,GAAUmC,GAAM;AAC1C,IAAA9F,EAAa4F,GAAUsH,CAAK;AAC5B,QAAIrM,IAAO+E,EAAS,mBAAoB;AACxC,IAAA5F,EAAa6F,GAAQqH,CAAK;AAC1B,QAAIC,IAAOtH,EAAO,mBAAoB;AACtC,IAAA7F,EAAa2D,GAAUuJ,CAAK;AAC5B,QAAIE,IAAOzJ,EAAS,mBAAoB;AACxC,IAAA3D,EAAa8F,GAAMoH,CAAK;AACxB,QAAIoB,IAAOxI,EAAK,mBAAoB;AACpC,UAAMxF,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBka,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMla,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoa,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5a,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6a,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7a,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4a,GAAiB,WAAW,IAAI,GACzB5a;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,YAAY2B,GAAKwC,GAAQ;AACrB,IAAAjE,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAaiE,GAAQiJ,CAAK;AAC1B,QAAIC,IAAOlJ,EAAO,mBAAoB;AACtC,UAAM3D,IAAMb,EAAO,oBAAoBoB,GAAMsM,CAAI;AACjD,gBAAK,YAAY7M,MAAQ,GACzBoa,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpa,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsa,KAAkB,OAAO,uBAAyB,MAClD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9a,MAAOL,EAAO,cAAcK,MAAQ,GAAG,CAAC,CAAC;AAIxE,MAAM+a,GAAG;AAAA,EAEL,qBAAqB;AACjB,UAAM/a,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8a,GAAe,WAAW,IAAI,GACvB9a;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,cAAcK,GAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY8E,GAAkBR,GAAQK,GAAe;AACjD,IAAAzE,EAAa4E,GAAkBsI,CAAK;AACpC,QAAIrM,IAAO+D,EAAiB,mBAAoB;AAChD,IAAA5E,EAAaoE,GAAQ8I,CAAK;AAC1B,QAAIC,IAAO/I,EAAO,mBAAoB;AACtC,IAAApE,EAAayE,GAAeyI,CAAK;AACjC,QAAIE,IAAO3I,EAAc,mBAAoB;AAC7C,UAAMnE,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBsa,GAAe,SAAS,MAAM,KAAK,WAAW,IAAI,GAC3C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMta,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwa,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhb,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAMib,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAMjb,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgb,GAAgB,WAAW,IAAI,GACxBhb;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY8E,GAAkByB,GAAcjC,GAAQK,GAAe;AAC/D,IAAAzE,EAAa4E,GAAkBsI,CAAK;AACpC,QAAIrM,IAAO+D,EAAiB,mBAAoB;AAChD,IAAA5E,EAAaqG,GAAc6G,CAAK;AAChC,QAAIC,IAAO9G,EAAa,mBAAoB;AAC5C,IAAArG,EAAaoE,GAAQ8I,CAAK;AAC1B,QAAIE,IAAOhJ,EAAO,mBAAoB;AACtC,IAAApE,EAAayE,GAAeyI,CAAK;AACjC,QAAIoB,IAAO7J,EAAc,mBAAoB;AAC7C,UAAMnE,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBwa,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxa,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0a,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlb,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMmb,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMnb,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkb,GAAiB,WAAW,IAAI,GACzBlb;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2B,GAAK6J,GAASC,GAASC,GAAQ;AACvC,IAAAxL,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAasL,GAAS4B,CAAK;AAC3B,QAAIC,IAAO7B,EAAQ,mBAAoB;AACvC,IAAAtL,EAAauL,GAAS2B,CAAK;AAC3B,QAAIE,IAAO7B,EAAQ,mBAAoB;AACvC,IAAAvL,EAAawL,GAAQ0B,CAAK;AAC1B,QAAIoB,IAAO9C,EAAO,mBAAoB;AACtC,UAAMlL,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzB0a,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1a,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4a,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApb,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMqb,GAAK;AAAA,EAEP,OAAO,OAAOrb,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOoL,GAAK,SAAS;AACxC,WAAApL,EAAI,YAAYjQ,GAChBob,GAAiB,SAASnL,GAAKA,EAAI,WAAWA,CAAG,GAC1CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBob,GAAiB,WAAW,IAAI,GACzBpb;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,OAAO,UAAUM,GAAIK,GAAIE,GAAIN,GAAM;AAC/B,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,IAAAJ,EAAaS,GAAIyM,CAAK;AACtB,QAAIC,IAAO1M,EAAG,mBAAoB;AAClC,IAAAT,EAAaW,GAAIuM,CAAK;AACtB,QAAIE,IAAOzM,EAAG,mBAAoB;AAClC,IAAAX,EAAaK,GAAMO,EAAW;AAC9B,QAAI0N,IAAOjO,EAAK,mBAAoB;AACpC,UAAMC,IAAMb,EAAO,eAAeoB,GAAMsM,GAAMC,GAAMkB,CAAI;AACxD,WAAO6M,GAAK,OAAO7a,CAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYmB,GAAKC,GAAKC,GAAKgJ,GAAO;AAC9B,IAAA3K,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,IAAA3B,EAAa2K,GAAOsF,EAAK;AACzB,QAAI3B,IAAO3D,EAAM,mBAAoB;AACrC,UAAMrK,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzB4a,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5a,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8a,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtb,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMub,GAAK;AAAA,EAEP,OAAO,OAAOvb,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOsL,GAAK,SAAS;AACxC,WAAAtL,EAAI,YAAYjQ,GAChBsb,GAAiB,SAASrL,GAAKA,EAAI,WAAWA,CAAG,GAC1CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsb,GAAiB,WAAW,IAAI,GACzBtb;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,OAAO,UAAUM,GAAIK,GAAIE,GAAIN,GAAM;AAC/B,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,IAAAJ,EAAaS,GAAIyM,CAAK;AACtB,QAAIC,IAAO1M,EAAG,mBAAoB;AAClC,IAAAT,EAAaW,GAAIuM,CAAK;AACtB,QAAIE,IAAOzM,EAAG,mBAAoB;AAClC,IAAAX,EAAaK,GAAMiB,EAAO;AAC1B,QAAIgN,IAAOjO,EAAK,mBAAoB;AACpC,UAAMC,IAAMb,EAAO,eAAeoB,GAAMsM,GAAMC,GAAMkB,CAAI;AACxD,WAAO+M,GAAK,OAAO/a,CAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYmB,GAAKC,GAAKC,GAAKgJ,GAAO;AAC9B,IAAA3K,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,IAAA3B,EAAa2K,GAAOsF,EAAK;AACzB,QAAI3B,IAAO3D,EAAM,mBAAoB;AACrC,UAAMrK,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzB8a,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9a,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgb,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxb,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMyb,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMzb,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwb,GAAiB,WAAW,IAAI,GACzBxb;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2B,GAAKuB,GAASC,GAASC,GAAS;AACxC,IAAAlD,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAagD,GAASkK,CAAK;AAC3B,QAAIC,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAhD,EAAaiD,GAASiK,CAAK;AAC3B,QAAIE,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAjD,EAAakD,GAASgK,CAAK;AAC3B,QAAIoB,IAAOpL,EAAQ,mBAAoB;AACvC,UAAM5C,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBgb,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhb,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkb,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1b,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2b,GAAK;AAAA,EAEP,OAAO,OAAO3b,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAO0L,GAAK,SAAS;AACxC,WAAA1L,EAAI,YAAYjQ,GAChB0b,GAAiB,SAASzL,GAAKA,EAAI,WAAWA,CAAG,GAC1CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0b,GAAiB,WAAW,IAAI,GACzB1b;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,OAAO,UAAUM,GAAIK,GAAIE,GAAIN,GAAM;AAC/B,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,IAAAJ,EAAaS,GAAIyM,CAAK;AACtB,QAAIC,IAAO1M,EAAG,mBAAoB;AAClC,IAAAT,EAAaW,GAAIuM,CAAK;AACtB,QAAIE,IAAOzM,EAAG,mBAAoB;AAClC,IAAAX,EAAaK,GAAMc,EAAO;AAC1B,QAAImN,IAAOjO,EAAK,mBAAoB;AACpC,UAAMC,IAAMb,EAAO,eAAeoB,GAAMsM,GAAMC,GAAMkB,CAAI;AACxD,WAAOmN,GAAK,OAAOnb,CAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYmB,GAAKC,GAAKC,GAAKgJ,GAAO;AAC9B,IAAA3K,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,IAAA3B,EAAa2K,GAAOsF,EAAK;AACzB,QAAI3B,IAAO3D,EAAM,mBAAoB;AACrC,UAAMrK,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBkb,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlb,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMob,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5b,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6b,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM7b,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4b,GAAiB,WAAW,IAAI,GACzB5b;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2B,GAAKuB,GAASC,GAASuI,GAAQ;AACvC,IAAAxL,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAagD,GAASkK,CAAK;AAC3B,QAAIC,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAhD,EAAaiD,GAASiK,CAAK;AAC3B,QAAIE,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAjD,EAAawL,GAAQ0B,CAAK;AAC1B,QAAIoB,IAAO9C,EAAO,mBAAoB;AACtC,UAAMlL,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBob,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpb,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsb,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9b,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM+b,GAAK;AAAA,EAEP,OAAO,OAAO/b,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAO8L,GAAK,SAAS;AACxC,WAAA9L,EAAI,YAAYjQ,GAChB8b,GAAiB,SAAS7L,GAAKA,EAAI,WAAWA,CAAG,GAC1CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8b,GAAiB,WAAW,IAAI,GACzB9b;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,OAAO,UAAUM,GAAIK,GAAIE,GAAIN,GAAM;AAC/B,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,IAAAJ,EAAaS,GAAIyM,CAAK;AACtB,QAAIC,IAAO1M,EAAG,mBAAoB;AAClC,IAAAT,EAAaW,GAAIuM,CAAK;AACtB,QAAIE,IAAOzM,EAAG,mBAAoB;AAClC,IAAAX,EAAaK,GAAMW,EAAQ;AAC3B,QAAIsN,IAAOjO,EAAK,mBAAoB;AACpC,UAAMC,IAAMb,EAAO,eAAeoB,GAAMsM,GAAMC,GAAMkB,CAAI;AACxD,WAAOuN,GAAK,OAAOvb,CAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYmB,GAAKC,GAAKC,GAAKgJ,GAAO;AAC9B,IAAA3K,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,IAAA3B,EAAa2K,GAAOsF,EAAK;AACzB,QAAI3B,IAAO3D,EAAM,mBAAoB;AACrC,UAAMrK,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBsb,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtb,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwb,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhc,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMic,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMjc,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgc,GAAiB,WAAW,IAAI,GACzBhc;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2B,GAAK6J,GAASC,GAASC,GAAQ;AACvC,IAAAxL,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAasL,GAAS4B,CAAK;AAC3B,QAAIC,IAAO7B,EAAQ,mBAAoB;AACvC,IAAAtL,EAAauL,GAAS2B,CAAK;AAC3B,QAAIE,IAAO7B,EAAQ,mBAAoB;AACvC,IAAAvL,EAAawL,GAAQ0B,CAAK;AAC1B,QAAIoB,IAAO9C,EAAO,mBAAoB;AACtC,UAAMlL,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBwb,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxb,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM0b,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAlc,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMmc,GAAK;AAAA,EAEP,OAAO,OAAOnc,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOkM,GAAK,SAAS;AACxC,WAAAlM,EAAI,YAAYjQ,GAChBkc,GAAiB,SAASjM,GAAKA,EAAI,WAAWA,CAAG,GAC1CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBkc,GAAiB,WAAW,IAAI,GACzBlc;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,OAAO,UAAUM,GAAIK,GAAIE,GAAIN,GAAM;AAC/B,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,IAAAJ,EAAaS,GAAIyM,CAAK;AACtB,QAAIC,IAAO1M,EAAG,mBAAoB;AAClC,IAAAT,EAAaW,GAAIuM,CAAK;AACtB,QAAIE,IAAOzM,EAAG,mBAAoB;AAClC,IAAAX,EAAaK,GAAMO,EAAW;AAC9B,QAAI0N,IAAOjO,EAAK,mBAAoB;AACpC,UAAMC,IAAMb,EAAO,eAAeoB,GAAMsM,GAAMC,GAAMkB,CAAI;AACxD,WAAO2N,GAAK,OAAO3b,CAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYmB,GAAKC,GAAKC,GAAKgJ,GAAO;AAC9B,IAAA3K,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,IAAA3B,EAAa2K,GAAOsF,EAAK;AACzB,QAAI3B,IAAO3D,EAAM,mBAAoB;AACrC,UAAMrK,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzB0b,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM1b,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM4b,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAApc,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMqc,GAAK;AAAA,EAEP,OAAO,OAAOrc,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOoM,GAAK,SAAS;AACxC,WAAApM,EAAI,YAAYjQ,GAChBoc,GAAiB,SAASnM,GAAKA,EAAI,WAAWA,CAAG,GAC1CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBoc,GAAiB,WAAW,IAAI,GACzBpc;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,OAAO,UAAUM,GAAIK,GAAIE,GAAIN,GAAM;AAC/B,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,IAAAJ,EAAaS,GAAIyM,CAAK;AACtB,QAAIC,IAAO1M,EAAG,mBAAoB;AAClC,IAAAT,EAAaW,GAAIuM,CAAK;AACtB,QAAIE,IAAOzM,EAAG,mBAAoB;AAClC,IAAAX,EAAaK,GAAMiB,EAAO;AAC1B,QAAIgN,IAAOjO,EAAK,mBAAoB;AACpC,UAAMC,IAAMb,EAAO,eAAeoB,GAAMsM,GAAMC,GAAMkB,CAAI;AACxD,WAAO6N,GAAK,OAAO7b,CAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYmB,GAAKC,GAAKC,GAAKgJ,GAAO;AAC9B,IAAA3K,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,IAAA3B,EAAa2K,GAAOsF,EAAK;AACzB,QAAI3B,IAAO3D,EAAM,mBAAoB;AACrC,UAAMrK,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzB4b,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM5b,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAM8b,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAtc,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMuc,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMvc,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBsc,GAAiB,WAAW,IAAI,GACzBtc;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2B,GAAKuB,GAASC,GAASC,GAAS;AACxC,IAAAlD,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAagD,GAASkK,CAAK;AAC3B,QAAIC,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAhD,EAAaiD,GAASiK,CAAK;AAC3B,QAAIE,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAjD,EAAakD,GAASgK,CAAK;AAC3B,QAAIoB,IAAOpL,EAAQ,mBAAoB;AACvC,UAAM5C,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzB8b,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAM9b,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMgc,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAxc,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMyc,GAAK;AAAA,EAEP,OAAO,OAAOzc,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAOwM,GAAK,SAAS;AACxC,WAAAxM,EAAI,YAAYjQ,GAChBwc,GAAiB,SAASvM,GAAKA,EAAI,WAAWA,CAAG,GAC1CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBwc,GAAiB,WAAW,IAAI,GACzBxc;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,OAAO,UAAUM,GAAIK,GAAIE,GAAIN,GAAM;AAC/B,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,IAAAJ,EAAaS,GAAIyM,CAAK;AACtB,QAAIC,IAAO1M,EAAG,mBAAoB;AAClC,IAAAT,EAAaW,GAAIuM,CAAK;AACtB,QAAIE,IAAOzM,EAAG,mBAAoB;AAClC,IAAAX,EAAaK,GAAMc,EAAO;AAC1B,QAAImN,IAAOjO,EAAK,mBAAoB;AACpC,UAAMC,IAAMb,EAAO,eAAeoB,GAAMsM,GAAMC,GAAMkB,CAAI;AACxD,WAAOiO,GAAK,OAAOjc,CAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYmB,GAAKC,GAAKC,GAAKgJ,GAAO;AAC9B,IAAA3K,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,IAAA3B,EAAa2K,GAAOsF,EAAK;AACzB,QAAI3B,IAAO3D,EAAM,mBAAoB;AACrC,UAAMrK,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBgc,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMhc,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMkc,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA1c,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM2c,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAM3c,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB0c,GAAiB,WAAW,IAAI,GACzB1c;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAY2B,GAAKuB,GAASC,GAASuI,GAAQ;AACvC,IAAAxL,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAagD,GAASkK,CAAK;AAC3B,QAAIC,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAhD,EAAaiD,GAASiK,CAAK;AAC3B,QAAIE,IAAOnK,EAAQ,mBAAoB;AACvC,IAAAjD,EAAawL,GAAQ0B,CAAK;AAC1B,QAAIoB,IAAO9C,EAAO,mBAAoB;AACtC,UAAMlL,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBkc,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMlc,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,QAAQ,KAAK,SAAS;AACzC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMoc,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA5c,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAM6c,GAAK;AAAA,EAEP,OAAO,OAAO7c,GAAK;AACf,IAAAA,IAAMA,MAAQ;AACd,UAAMiQ,IAAM,OAAO,OAAO4M,GAAK,SAAS;AACxC,WAAA5M,EAAI,YAAYjQ,GAChB4c,GAAiB,SAAS3M,GAAKA,EAAI,WAAWA,CAAG,GAC1CA;AAAA,EACf;AAAA,EAEI,qBAAqB;AACjB,UAAMjQ,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB4c,GAAiB,WAAW,IAAI,GACzB5c;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,OAAO,UAAUM,GAAIK,GAAIE,GAAIN,GAAM;AAC/B,IAAAL,EAAaI,GAAI8M,CAAK;AACtB,QAAIrM,IAAOT,EAAG,mBAAoB;AAClC,IAAAJ,EAAaS,GAAIyM,CAAK;AACtB,QAAIC,IAAO1M,EAAG,mBAAoB;AAClC,IAAAT,EAAaW,GAAIuM,CAAK;AACtB,QAAIE,IAAOzM,EAAG,mBAAoB;AAClC,IAAAX,EAAaK,GAAMW,EAAQ;AAC3B,QAAIsN,IAAOjO,EAAK,mBAAoB;AACpC,UAAMC,IAAMb,EAAO,eAAeoB,GAAMsM,GAAMC,GAAMkB,CAAI;AACxD,WAAOqO,GAAK,OAAOrc,CAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQI,YAAYmB,GAAKC,GAAKC,GAAKgJ,GAAO;AAC9B,IAAA3K,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,IAAA3B,EAAa2K,GAAOsF,EAAK;AACzB,QAAI3B,IAAO3D,EAAM,mBAAoB;AACrC,UAAMrK,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,GAAMkB,CAAI;AAC7D,gBAAK,YAAYhO,MAAQ,GACzBoc,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMpc,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAOwQ,GAAM,OAAO3P,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMsc,KAAmB,OAAO,uBAAyB,MACnD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAA9c,MAAOL,EAAO,eAAeK,MAAQ,GAAG,CAAC,CAAC;AAIzE,MAAM+c,GAAI;AAAA,EAEN,qBAAqB;AACjB,UAAM/c,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjB8c,GAAgB,WAAW,IAAI,GACxB9c;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,eAAeK,GAAK,CAAC;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAKuL,CAAK;AACvB,QAAIE,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,mBAAmBoB,GAAMsM,GAAMC,CAAI;AACtD,gBAAK,YAAY9M,MAAQ,GACzBsc,GAAgB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC5C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMtc,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AACA;AAEA,MAAMwc,KAAoB,OAAO,uBAAyB,MACpD,EAAE,UAAU,MAAM;GAAI,YAAY,MAAM;AAAE,EAAA,IAC1C,IAAI,qBAAqB,CAAAhd,MAAOL,EAAO,gBAAgBK,MAAQ,GAAG,CAAC,CAAC;AAI1E,MAAMid,GAAK;AAAA,EAEP,qBAAqB;AACjB,UAAMjd,IAAM,KAAK;AACjB,gBAAK,YAAY,GACjBgd,GAAiB,WAAW,IAAI,GACzBhd;AAAA,EACf;AAAA,EAEI,OAAO;AACH,UAAMA,IAAM,KAAK,mBAAoB;AACrC,IAAAL,EAAO,gBAAgBK,GAAK,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,YAAY2B,GAAKC,GAAKC,GAAK;AACvB,IAAA3B,EAAayB,GAAKyL,CAAK;AACvB,QAAIrM,IAAOY,EAAI,mBAAoB;AACnC,IAAAzB,EAAa0B,GAAKwL,CAAK;AACvB,QAAIC,IAAOzL,EAAI,mBAAoB;AACnC,IAAA1B,EAAa2B,GAAK4L,EAAK;AACvB,QAAIH,IAAOzL,EAAI,mBAAoB;AACnC,UAAMrB,IAAMb,EAAO,oBAAoBoB,GAAMsM,GAAMC,CAAI;AACvD,gBAAK,YAAY9M,MAAQ,GACzBwc,GAAiB,SAAS,MAAM,KAAK,WAAW,IAAI,GAC7C;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMxc,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,KAAK;AACD,UAAMA,IAAMb,EAAO,OAAO,KAAK,SAAS;AACxC,WAAOyN,EAAM,OAAO5M,CAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKI,QAAQ;AACJ,UAAMA,IAAMb,EAAO,WAAW,KAAK,SAAS;AAC5C,WAAO8N,GAAM,OAAOjN,CAAG;AAAA,EAC/B;AACA;AAEA,eAAe0c,GAAWC,GAAQC,GAAS;AACvC,MAAI,OAAO,YAAa,cAAcD,aAAkB,UAAU;AAC9D,QAAI,OAAO,YAAY,wBAAyB;AAC5C,UAAI;AACA,eAAO,MAAM,YAAY,qBAAqBA,GAAQC,CAAO;AAAA,MAEhE,SAAQC,GAAG;AACR,YAAIF,EAAO,QAAQ,IAAI,cAAc,KAAK;AACtC,kBAAQ,KAAK,qMAAqME,CAAC;AAAA;AAGnN,gBAAMA;AAAA,MAE1B;AAGQ,UAAM5Z,IAAQ,MAAM0Z,EAAO,YAAa;AACxC,WAAO,MAAM,YAAY,YAAY1Z,GAAO2Z,CAAO;AAAA,EAE3D,OAAW;AACH,UAAMjd,IAAW,MAAM,YAAY,YAAYgd,GAAQC,CAAO;AAE9D,WAAIjd,aAAoB,YAAY,WACzB,EAAE,UAAAA,GAAU,QAAAgd,EAAQ,IAGpBhd;AAAA,EAEnB;AACA;AAEA,SAASmd,KAAoB;AACzB,QAAMF,IAAU,CAAE;AAClB,SAAAA,EAAQ,MAAM,CAAE,GAChBA,EAAQ,IAAI,mBAAmB,SAASlN,GAAMqN,GAAM;AAChD,UAAM,IAAI,MAAMxd,GAAmBmQ,GAAMqN,CAAI,CAAC;AAAA,EACjD,GAEMH;AACX;AAEA,SAASI,GAAoBrd,GAAUgd,GAAQ;AAC3C,SAAAxd,IAASQ,EAAS,SAClBsd,GAAW,yBAAyBN,GACpCzQ,KAAwB,MACxB7M,KAA0B,MAInBF;AACX;AAEA,SAAS+d,GAASP,GAAQ;AACtB,MAAIxd,MAAW,OAAW,QAAOA;AAGjC,EAAI,OAAOwd,IAAW,QACd,OAAO,eAAeA,CAAM,MAAM,OAAO,YACxC,EAAC,QAAAA,EAAM,IAAIA,IAEZ,QAAQ,KAAK,4EAA4E;AAIjG,QAAMC,IAAUE,GAAmB;AAEnC,EAAMH,aAAkB,YAAY,WAChCA,IAAS,IAAI,YAAY,OAAOA,CAAM;AAG1C,QAAMhd,IAAW,IAAI,YAAY,SAASgd,GAAQC,CAAO;AAEzD,SAAOI,GAAoBrd,GAAUgd,CAAM;AAC/C;AAEA,eAAeM,GAAWE,GAAgB;AACtC,MAAIhe,MAAW,OAAW,QAAOA;AAGjC,EAAI,OAAOge,IAAmB,QACtB,OAAO,eAAeA,CAAc,MAAM,OAAO,YAChD,EAAC,gBAAAA,EAAc,IAAIA,IAEpB,QAAQ,KAAK,2FAA2F;AAGhH,QAAMP,IAAUE,GAAmB,GAE7B,EAAE,UAAAnd,GAAU,QAAAgd,EAAQ,IAAG,MAAMD,GAAW,MAAMS,GAAgBP,CAAO;AAE3E,SAAOI,GAAoBrd,GAAUgd,CAAM;AAC/C;AAEA,SAASS,GAAiBC,GAAMC,GAAUtb,GAAK4a,GAAS;AAaxD,MAAIW,IAAM,MACNC,IAAS,OAAO,UAAY,OAAe,QAAQ,YAAY,QAAQ,QAAQ,SAAS,QAAQ;AACpG,MAAIA;AAEJ,IAAAD,IAAM,OAAO,KAAKvb,GAAK,QAAQ;AAAA,OAExB;AAEP,QAAIyb,IAAM,WAAW,KAAKzb,CAAG,GACzB0b,IAAYD,EAAI;AACpB,IAAAF,IAAM,IAAI,WAAW,IAAI,YAAYG,CAAS,CAAC;AAC/C,aAAQC,IAAI,GAAGA,IAAID,GAAWC;AAC3B,MAAAJ,EAAII,CAAC,IAAIF,EAAI,WAAWE,CAAC;AAAA,EAG5B;AAGW;AACP,QAAIC,IAAM,IAAI,YAAY,OAAOL,CAAG;AACpC,WAA0DK;AAAA,EAC9D;AAGA;AAEA,SAASC,GAAKjB,GAAQ;AAAC,SAAOQ,GAAgB,GAAG,MAAM,0yvCAAmzvC;AAAC;AAE32vC,eAAeU,KAAY;AACzB,SAAO,MAAMb,GAAW,EAAE,gBAAgBY,GAAM,EAAA,CAAE;AACpD;AAMAC,GAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACh8TH,SAASC,GAAaC,GAAyB;AAC7C,SAAAA;AACT;ACDY,IAAAC,uBAAAA,OACVA,EAAA,QAAQ,SACRA,EAAA,SAAS,UACTA,EAAA,MAAM,OACNA,EAAA,OAAO,QACPA,EAAA,WAAW,YACXA,EAAA,OAAO,QANGA,IAAAA,MAAA,CAAA,CAAA,GCHRC,KAAY,OAAO,gBACnBC,KAAS,CAACC,GAAQvb,MAAUqb,GAAUE,GAAQ,QAAQ,EAAE,OAAAvb,GAAO,cAAc,IAAM;AAGvF,SAASwb,KAAqB;AAC5B,SAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AACH;AACAF,GAAOE,IAAoB,oBAAoB;AAG/C,SAASC,GAAaC,GAAS;AAC7B,QAAM,CAACC,GAAOC,GAAOC,CAAK,IAAIH,EAAQ,MAAM,GAAG,EAAE,IAAI,CAACI,MAAM,SAASA,GAAG,EAAE,CAAC;AAC3E,SAAO,EAAE,OAAAH,GAAO,OAAAC,GAAO,OAAAC,EAAO;AAChC;AACAP,GAAOG,IAAc,cAAc;AACnC,SAASM,GAAaC,GAAUC,GAAU;AACxC,QAAMC,IAAUT,GAAaO,CAAQ,GAC/BG,IAAUV,GAAaQ,CAAQ,GAC/BN,IAAQO,EAAQ,QAAQC,EAAQ,OAChCP,IAAQM,EAAQ,QAAQC,EAAQ,OAChCN,IAAQK,EAAQ,QAAQC,EAAQ;AACtC,SAAO;AAAA,IACL,OAAAR;AAAA,IACA,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,iBAAiBF,KAASC,KAASC;AAAA,EACpC;AACH;AACAP,GAAOS,IAAc,cAAc;AACnC,SAASld,GAAGmd,GAAUC,GAAU;AAC9B,QAAM,EAAE,iBAAAG,EAAiB,IAAGL,GAAaC,GAAUC,CAAQ;AAC3D,SAAOG,IAAkB;AAC3B;AACAd,GAAOzc,IAAI,IAAI;AACf,SAASF,GAAGqd,GAAUC,GAAU;AAC9B,QAAM,EAAE,iBAAAG,EAAiB,IAAGL,GAAaC,GAAUC,CAAQ;AAC3D,SAAOG,MAAoB;AAC7B;AACAd,GAAO3c,IAAI,IAAI;AACf,SAAS0d,GAAIL,GAAUC,GAAU;AAC/B,QAAM,EAAE,iBAAAG,EAAiB,IAAGL,GAAaC,GAAUC,CAAQ;AAC3D,SAAOG,KAAmB;AAC5B;AACAd,GAAOe,IAAK,KAAK;AACjB,SAASC,GAAQN,GAAUC,GAAU;AACnC,QAAM,EAAE,OAAAN,EAAO,IAAGI,GAAaC,GAAUC,CAAQ;AACjD,SAAON,MAAU;AACnB;AACAL,GAAOgB,IAAS,SAAS;AACzB,SAASC,GAAQP,GAAUC,GAAU;AACnC,QAAM,EAAE,OAAAL,EAAO,IAAGG,GAAaC,GAAUC,CAAQ;AACjD,SAAOL,MAAU;AACnB;AACAN,GAAOiB,IAAS,SAAS;AACzB,SAASC,GAAQR,GAAUC,GAAU;AACnC,QAAM,EAAE,OAAAJ,EAAO,IAAGE,GAAaC,GAAUC,CAAQ;AACjD,SAAOJ,MAAU;AACnB;AACAP,GAAOkB,IAAS,SAAS;AAGzB,SAASC,GAAkCC,GAAgB;AACzD,QAAM,EAAE,WAAWC,EAAkB,IAAGnB,GAAoB;AAC5D,SAAI,qBAAqB,KAAKkB,CAAc,KAC1C,QAAQ,KAAK,2DAA2DA,CAAc;AAAA,kHACwB,GAEzG;AAAA,IACL,kBAAAC;AAAA,IACA,kBAAkBL,GAAQI,GAAgBC,CAAgB;AAAA,IAC1D,kBAAkBJ,GAAQG,GAAgBC,CAAgB;AAAA,IAC1D,kBAAkBH,GAAQE,GAAgBC,CAAgB;AAAA,EAC3D;AACH;AACArB,GAAOmB,IAAmC,mCAAmC;AAG7E,IAAIG,KAAWpB,GAAoB,GCjF/BH,KAAY,OAAO,gBACnBC,KAAS,CAACC,GAAQvb,MAAUqb,GAAUE,GAAQ,QAAQ,EAAE,OAAAvb,GAAO,cAAc,IAAM,GAGnF6c,IAA6B,kBAACC,OAChCA,EAAW,gBAAmB,iBAC9BA,EAAW,gCAAmC,iCAC9CA,EAAW,0BAA6B,2BACxCA,EAAW,oBAAuB,qBAClCA,EAAW,yBAA4B,0BACvCA,EAAW,iBAAoB,kBAC/BA,EAAW,qBAAwB,sBACnCA,EAAW,qBAAwB,sBACnCA,EAAW,uBAA0B,wBACrCA,EAAW,iBAAoB,kBAC/BA,EAAW,oBAAuB,qBAClCA,EAAW,qBAAwB,sBACnCA,EAAW,kBAAqB,mBAChCA,EAAW,eAAkB,gBAC7BA,EAAW,qBAAwB,sBACnCA,EAAW,+BAAkC,gCAC7CA,EAAW,mBAAsB,oBACjCA,EAAW,wBAA2B,yBACtCA,EAAW,6BAAgC,8BAC3CA,EAAW,yBAA4B,0BACvCA,EAAW,kBAAqB,mBAChCA,EAAW,sBAAyB,uBACpCA,EAAW,uBAA0B,wBACrCA,EAAW,yBAA4B,0BACvCA,EAAW,wBAA2B,yBACtCA,EAAW,mBAAsB,oBACjCA,EAAW,mBAAsB,oBACjCA,EAAW,qBAAwB,sBACnCA,EAAW,cAAiB,eAC5BA,EAAW,sBAAyB,uBACpCA,EAAW,qBAAwB,sBACnCA,EAAW,uBAA0B,wBACrCA,EAAW,kBAAqB,mBAChCA,EAAW,oBAAuB,qBAClCA,EAAW,eAAkB,gBAC7BA,EAAW,eAAkB,gBAC7BA,EAAW,eAAkB,gBAC7BA,EAAW,yBAA4B,0BACvCA,EAAW,cAAiB,eAC5BA,EAAW,2BAA8B,4BACzCA,EAAW,kBAAqB,mBAChCA,EAAW,gBAAmB,iBAC9BA,EAAW,oBAAuB,oBAClCA,EAAW,oBAAuB,qBAClCA,EAAW,6BAAgC,8BAC3CA,EAAW,kBAAqB,mBAChCA,EAAW,0BAA6B,2BACxCA,EAAW,kCAAqC,yCAChDA,EAAW,sBAAyB,uBACpCA,EAAW,gBAAmB,iBAC9BA,EAAW,oBAAuB,qBAClCA,EAAW,oBAAuB,qBAClCA,EAAW,kBAAqB,mBAChCA,EAAW,wBAA2B,yBACtCA,EAAW,qBAAwB,sBACnCA,EAAW,iCAAoC,kCAC/CA,EAAW,4BAA+B,6BAC1CA,EAAW,6BAAgC,8BAC3CA,EAAW,6BAAgC,8BAC3CA,EAAW,+BAAkC,gCAC7CA,EAAW,oBAAuB,qBAClCA,EAAW,sBAAyB,uBACpCA,EAAW,oBAAuB,qBAClCA,EAAW,2BAA8B,4BACzCA,EAAW,8BAAiC,+BAC5CA,EAAW,gCAAmC,iCAC9CA,EAAW,sBAAyB,uBACpCA,EAAW,gBAAmB,iBAC9BA,EAAW,uBAA0B,wBACrCA,EAAW,sBAAyB,uBACpCA,EAAW,0BAA6B,2BACxCA,EAAW,kCAAqC,mCAChDA,EAAW,uBAA0B,wBACrCA,EAAW,oBAAuB,qBAClCA,EAAW,mBAAsB,oBACjCA,EAAW,kBAAqB,mBAChCA,EAAW,eAAkB,gBAC7BA,EAAW,mBAAsB,oBACjCA,EAAW,mBAAsB,oBACjCA,EAAW,mBAAsB,oBACjCA,EAAW,2BAA8B,4BACzCA,EAAW,0BAA6B,2BACxCA,EAAW,0BAA6B,2BACxCA,EAAW,kBAAqB,mBAChCA,EAAW,iBAAoB,kBAC/BA,EAAW,oCAAuC,qCAClDA,EAAW,kBAAqB,mBAChCA,EAAW,yBAA4B,0BACvCA,EAAW,kBAAqB,mBAChCA,EAAW,6BAAgC,8BAC3CA,EAAW,uBAA0B,wBACrCA,EAAW,qBAAwB,sBACnCA,EAAW,UAAa,WACjBA,IACND,KAAa,CAAE,CAAA,OAIdE,KAAYC,KAAA,cAAyB,MAAM;AAAA,EA2B7C,YAAYC,GAAMC,GAASC,IAAW,CAAE,GAAEC,IAAW,MAAM;AACzD,UAAMF,CAAO;AAvBf,IAAAG,EAAA,kBAAWT;AACX,IAAAS,EAAA;AACA,IAAAA,EAAA;AAmBA,IAAAA,EAAA;AAGE,SAAK,OAAOJ,GACZ,KAAK,OAAO,aACZ,KAAK,WAAWE,GAChB,KAAK,WAAWC;AAAA,EACpB;AAAA,EAzBE,OAAO,MAAM,GAAG;AACd,UAAME,IAAQ;AACd,QAAIA,EAAM,SAAS;AACjB,YAAM,IAAIN;AAAA,QACR;AAAA,QACA;AAAA,MACD;AAEH,UAAMO,IAAa,OAAO,OAAOV,CAAS;AAE1C,QAAI,CADgBU,EAAW,SAASD,EAAM,IAAI;AAEhD,YAAM,IAAIN;AAAA,QACR;AAAA,QACA,uBAAuBM,EAAM,IAAI,qBAAqBC,EAAW,KAAK,IAAI,CAAC;AAAA,MAC5E;AAEH,WAAO,IAAIP,GAAWM,EAAM,MAAMA,EAAM,OAAO;AAAA,EACnD;AAAA,EASE,WAAW;AACT,UAAM,EAAE,MAAAL,GAAM,MAAAO,GAAM,SAAAN,GAAS,UAAAC,GAAU,UAAAM,GAAU,UAAAL,EAAQ,IAAK;AAC9D,WAAO,EAAE,MAAAH,GAAM,MAAAO,GAAM,SAAAN,GAAS,UAAAC,GAAU,UAAAM,GAAU,UAAAL,EAAU;AAAA,EAChE;AACA,GApCI9B,GAAO0B,IAAM,WAAW,GAE1BK,EAJcL,IAIP,SAAQH,IAJDG;;;;;;;;;;;;;;;;;;;;;;;;ACvGhB,MAAeU,KAAA,CAAA;;;;;;;ACAf,KAAC,SAAU5D,GAAQ6D,GAAS;AAI1B,eAASC,EAAQ1X,GAAK2X,GAAK;AACzB,YAAI,CAAC3X,EAAK,OAAM,IAAI,MAAM2X,KAAO,kBAAkB;AAAA,MACvD;AAIE,eAASC,EAAUC,GAAMC,GAAW;AAClC,QAAAD,EAAK,SAASC;AACd,YAAIC,IAAW,WAAY;AAAA,QAAE;AAC7B,QAAAA,EAAS,YAAYD,EAAU,WAC/BD,EAAK,YAAY,IAAIE,EAAU,GAC/BF,EAAK,UAAU,cAAcA;AAAA,MACjC;AAIE,eAASG,EAAIC,GAAQC,GAAMC,GAAQ;AACjC,YAAIH,EAAG,KAAKC,CAAM;AAChB,iBAAOA;AAGT,aAAK,WAAW,GAChB,KAAK,QAAQ,MACb,KAAK,SAAS,GAGd,KAAK,MAAM,MAEPA,MAAW,UACTC,MAAS,QAAQA,MAAS,UAC5BC,IAASD,GACTA,IAAO,KAGT,KAAK,MAAMD,KAAU,GAAGC,KAAQ,IAAIC,KAAU,IAAI;AAAA,MAExD;AACE,MAAI,OAAOvE,KAAW,WACpBA,EAAO,UAAUoE,IAEjBP,EAAQ,KAAKO,GAGfA,EAAG,KAAKA,GACRA,EAAG,WAAW;AAEd,UAAII;AACJ,UAAI;AACF,QAAI,OAAO,SAAW,OAAe,OAAO,OAAO,SAAW,MAC5DA,IAAS,OAAO,SAEhBA,IAASC,GAAkB;AAAA,MAE9B,QAAW;AAAA,MACd;AAEE,MAAAL,EAAG,OAAO,SAAeM,GAAK;AAC5B,eAAIA,aAAeN,IACV,KAGFM,MAAQ,QAAQ,OAAOA,KAAQ,YACpCA,EAAI,YAAY,aAAaN,EAAG,YAAY,MAAM,QAAQM,EAAI,KAAK;AAAA,MACtE,GAEDN,EAAG,MAAM,SAAcO,GAAMC,GAAO;AAClC,eAAID,EAAK,IAAIC,CAAK,IAAI,IAAUD,IACzBC;AAAA,MACR,GAEDR,EAAG,MAAM,SAAcO,GAAMC,GAAO;AAClC,eAAID,EAAK,IAAIC,CAAK,IAAI,IAAUD,IACzBC;AAAA,MACR,GAEDR,EAAG,UAAU,QAAQ,SAAeC,GAAQC,GAAMC,GAAQ;AACxD,YAAI,OAAOF,KAAW;AACpB,iBAAO,KAAK,YAAYA,GAAQC,GAAMC,CAAM;AAG9C,YAAI,OAAOF,KAAW;AACpB,iBAAO,KAAK,WAAWA,GAAQC,GAAMC,CAAM;AAG7C,QAAID,MAAS,UACXA,IAAO,KAETR,EAAOQ,OAAUA,IAAO,MAAMA,KAAQ,KAAKA,KAAQ,EAAE,GAErDD,IAASA,EAAO,SAAQ,EAAG,QAAQ,QAAQ,EAAE;AAC7C,YAAIQ,IAAQ;AACZ,QAAIR,EAAO,CAAC,MAAM,QAChBQ,KACA,KAAK,WAAW,IAGdA,IAAQR,EAAO,WACbC,MAAS,KACX,KAAK,UAAUD,GAAQQ,GAAON,CAAM,KAEpC,KAAK,WAAWF,GAAQC,GAAMO,CAAK,GAC/BN,MAAW,QACb,KAAK,WAAW,KAAK,QAAO,GAAID,GAAMC,CAAM;AAAA,MAInD,GAEDH,EAAG,UAAU,cAAc,SAAsBC,GAAQC,GAAMC,GAAQ;AAwBrE,QAvBIF,IAAS,MACX,KAAK,WAAW,GAChBA,IAAS,CAACA,IAERA,IAAS,YACX,KAAK,QAAQ,CAACA,IAAS,QAAS,GAChC,KAAK,SAAS,KACLA,IAAS,oBAClB,KAAK,QAAQ;AAAA,UACXA,IAAS;AAAA,UACRA,IAAS,WAAa;AAAA,QACxB,GACD,KAAK,SAAS,MAEdP,EAAOO,IAAS,gBAAgB,GAChC,KAAK,QAAQ;AAAA,UACXA,IAAS;AAAA,UACRA,IAAS,WAAa;AAAA,UACvB;AAAA,QACD,GACD,KAAK,SAAS,IAGZE,MAAW,QAGf,KAAK,WAAW,KAAK,QAAO,GAAID,GAAMC,CAAM;AAAA,MAC7C,GAEDH,EAAG,UAAU,aAAa,SAAqBC,GAAQC,GAAMC,GAAQ;AAGnE,YADAT,EAAO,OAAOO,EAAO,UAAW,QAAQ,GACpCA,EAAO,UAAU;AACnB,sBAAK,QAAQ,CAAC,CAAC,GACf,KAAK,SAAS,GACP;AAGT,aAAK,SAAS,KAAK,KAAKA,EAAO,SAAS,CAAC,GACzC,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM;AAClC,iBAASrD,IAAI,GAAGA,IAAI,KAAK,QAAQA;AAC/B,eAAK,MAAMA,CAAC,IAAI;AAGlB,YAAI8D,GAAGC,GACHC,IAAM;AACV,YAAIT,MAAW;AACb,eAAKvD,IAAIqD,EAAO,SAAS,GAAGS,IAAI,GAAG9D,KAAK,GAAGA,KAAK;AAC9C,YAAA+D,IAAIV,EAAOrD,CAAC,IAAKqD,EAAOrD,IAAI,CAAC,KAAK,IAAMqD,EAAOrD,IAAI,CAAC,KAAK,IACzD,KAAK,MAAM8D,CAAC,KAAMC,KAAKC,IAAO,UAC9B,KAAK,MAAMF,IAAI,CAAC,IAAKC,MAAO,KAAKC,IAAQ,UACzCA,KAAO,IACHA,KAAO,OACTA,KAAO,IACPF;AAAA,iBAGKP,MAAW;AACpB,eAAKvD,IAAI,GAAG8D,IAAI,GAAG9D,IAAIqD,EAAO,QAAQrD,KAAK;AACzC,YAAA+D,IAAIV,EAAOrD,CAAC,IAAKqD,EAAOrD,IAAI,CAAC,KAAK,IAAMqD,EAAOrD,IAAI,CAAC,KAAK,IACzD,KAAK,MAAM8D,CAAC,KAAMC,KAAKC,IAAO,UAC9B,KAAK,MAAMF,IAAI,CAAC,IAAKC,MAAO,KAAKC,IAAQ,UACzCA,KAAO,IACHA,KAAO,OACTA,KAAO,IACPF;AAIN,eAAO,KAAK,OAAQ;AAAA,MACrB;AAED,eAASG,EAAeC,GAAQC,GAAO;AACrC,YAAI9c,IAAI6c,EAAO,WAAWC,CAAK;AAE/B,YAAI9c,KAAK,MAAMA,KAAK;AAClB,iBAAOA,IAAI;AAEN,YAAIA,KAAK,MAAMA,KAAK;AACzB,iBAAOA,IAAI;AAEN,YAAIA,KAAK,MAAMA,KAAK;AACzB,iBAAOA,IAAI;AAEX,QAAAyb,EAAO,IAAO,0BAA0BoB,CAAM;AAAA,MAEpD;AAEE,eAASE,EAAcF,GAAQG,GAAYF,GAAO;AAChD,YAAIG,IAAIL,EAAcC,GAAQC,CAAK;AACnC,eAAIA,IAAQ,KAAKE,MACfC,KAAKL,EAAcC,GAAQC,IAAQ,CAAC,KAAK,IAEpCG;AAAA,MACX;AAEE,MAAAlB,EAAG,UAAU,YAAY,SAAoBC,GAAQQ,GAAON,GAAQ;AAElE,aAAK,SAAS,KAAK,MAAMF,EAAO,SAASQ,KAAS,CAAC,GACnD,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM;AAClC,iBAAS7D,IAAI,GAAGA,IAAI,KAAK,QAAQA;AAC/B,eAAK,MAAMA,CAAC,IAAI;AAIlB,YAAIgE,IAAM,GACNF,IAAI,GAEJC;AACJ,YAAIR,MAAW;AACb,eAAKvD,IAAIqD,EAAO,SAAS,GAAGrD,KAAK6D,GAAO7D,KAAK;AAC3C,YAAA+D,IAAIK,EAAaf,GAAQQ,GAAO7D,CAAC,KAAKgE,GACtC,KAAK,MAAMF,CAAC,KAAKC,IAAI,UACjBC,KAAO,MACTA,KAAO,IACPF,KAAK,GACL,KAAK,MAAMA,CAAC,KAAKC,MAAM,MAEvBC,KAAO;AAAA,aAGN;AACL,cAAIO,IAAclB,EAAO,SAASQ;AAClC,eAAK7D,IAAIuE,IAAc,MAAM,IAAIV,IAAQ,IAAIA,GAAO7D,IAAIqD,EAAO,QAAQrD,KAAK;AAC1E,YAAA+D,IAAIK,EAAaf,GAAQQ,GAAO7D,CAAC,KAAKgE,GACtC,KAAK,MAAMF,CAAC,KAAKC,IAAI,UACjBC,KAAO,MACTA,KAAO,IACPF,KAAK,GACL,KAAK,MAAMA,CAAC,KAAKC,MAAM,MAEvBC,KAAO;AAAA,QAGjB;AAEI,aAAK,OAAQ;AAAA,MACd;AAED,eAASQ,EAAWC,GAAKZ,GAAOa,GAAKpgB,GAAK;AAIxC,iBAHIggB,IAAI,GACJ,IAAI,GACJxiB,IAAM,KAAK,IAAI2iB,EAAI,QAAQC,CAAG,GACzB1E,IAAI6D,GAAO7D,IAAIle,GAAKke,KAAK;AAChC,cAAI3Y,IAAIod,EAAI,WAAWzE,CAAC,IAAI;AAE5B,UAAAsE,KAAKhgB,GAGD+C,KAAK,KACP,IAAIA,IAAI,KAAK,KAGJA,KAAK,KACd,IAAIA,IAAI,KAAK,KAIb,IAAIA,GAENyb,EAAOzb,KAAK,KAAK,IAAI/C,GAAK,mBAAmB,GAC7CggB,KAAK;AAAA,QACX;AACI,eAAOA;AAAA,MACX;AAEE,MAAAlB,EAAG,UAAU,aAAa,SAAqBC,GAAQC,GAAMO,GAAO;AAElE,aAAK,QAAQ,CAAC,CAAC,GACf,KAAK,SAAS;AAGd,iBAASc,IAAU,GAAGC,IAAU,GAAGA,KAAW,UAAWA,KAAWtB;AAClE,UAAAqB;AAEF,QAAAA,KACAC,IAAWA,IAAUtB,IAAQ;AAO7B,iBALIuB,IAAQxB,EAAO,SAASQ,GACxB5D,IAAM4E,IAAQF,GACdD,IAAM,KAAK,IAAIG,GAAOA,IAAQ5E,CAAG,IAAI4D,GAErCiB,IAAO,GACF9E,IAAI6D,GAAO7D,IAAI0E,GAAK1E,KAAK2E;AAChC,UAAAG,IAAON,EAAUnB,GAAQrD,GAAGA,IAAI2E,GAASrB,CAAI,GAE7C,KAAK,MAAMsB,CAAO,GACd,KAAK,MAAM,CAAC,IAAIE,IAAO,WACzB,KAAK,MAAM,CAAC,KAAKA,IAEjB,KAAK,OAAOA,CAAI;AAIpB,YAAI7E,MAAQ,GAAG;AACb,cAAI8E,KAAM;AAGV,eAFAD,IAAON,EAAUnB,GAAQrD,GAAGqD,EAAO,QAAQC,CAAI,GAE1CtD,IAAI,GAAGA,IAAIC,GAAKD;AACnB,YAAA+E,MAAOzB;AAGT,eAAK,MAAMyB,EAAG,GACV,KAAK,MAAM,CAAC,IAAID,IAAO,WACzB,KAAK,MAAM,CAAC,KAAKA,IAEjB,KAAK,OAAOA,CAAI;AAAA,QAExB;AAEI,aAAK,OAAQ;AAAA,MACd,GAED1B,EAAG,UAAU,OAAO,SAAe4B,GAAM;AACvC,QAAAA,EAAK,QAAQ,IAAI,MAAM,KAAK,MAAM;AAClC,iBAAShF,IAAI,GAAGA,IAAI,KAAK,QAAQA;AAC/B,UAAAgF,EAAK,MAAMhF,CAAC,IAAI,KAAK,MAAMA,CAAC;AAE9B,QAAAgF,EAAK,SAAS,KAAK,QACnBA,EAAK,WAAW,KAAK,UACrBA,EAAK,MAAM,KAAK;AAAA,MACjB;AAED,eAASC,EAAMD,GAAM3gB,GAAK;AACxB,QAAA2gB,EAAK,QAAQ3gB,EAAI,OACjB2gB,EAAK,SAAS3gB,EAAI,QAClB2gB,EAAK,WAAW3gB,EAAI,UACpB2gB,EAAK,MAAM3gB,EAAI;AAAA,MACnB;AAqCE,UAnCA+e,EAAG,UAAU,QAAQ,SAAgB4B,GAAM;AACzC,QAAAC,EAAKD,GAAM,IAAI;AAAA,MAChB,GAED5B,EAAG,UAAU,QAAQ,WAAkB;AACrC,YAAIkB,IAAI,IAAIlB,EAAG,IAAI;AACnB,oBAAK,KAAKkB,CAAC,GACJA;AAAA,MACR,GAEDlB,EAAG,UAAU,UAAU,SAAkB8B,GAAM;AAC7C,eAAO,KAAK,SAASA;AACnB,eAAK,MAAM,KAAK,QAAQ,IAAI;AAE9B,eAAO;AAAA,MACR,GAGD9B,EAAG,UAAU,SAAS,WAAkB;AACtC,eAAO,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,SAAS,CAAC,MAAM;AACxD,eAAK;AAEP,eAAO,KAAK,UAAW;AAAA,MACxB,GAEDA,EAAG,UAAU,YAAY,WAAsB;AAE7C,eAAI,KAAK,WAAW,KAAK,KAAK,MAAM,CAAC,MAAM,MACzC,KAAK,WAAW,IAEX;AAAA,MACR,GAIG,OAAO,SAAW,OAAe,OAAO,OAAO,OAAQ;AACzD,YAAI;AACF,UAAAA,EAAG,UAAU,OAAO,IAAI,4BAA4B,CAAC,IAAI+B;AAAA,QAC1D,QAAW;AACV,UAAA/B,EAAG,UAAU,UAAU+B;AAAA,QAC7B;AAAA;AAEI,QAAA/B,EAAG,UAAU,UAAU+B;AAGzB,eAASA,IAAW;AAClB,gBAAQ,KAAK,MAAM,YAAY,WAAW,KAAK,SAAS,EAAE,IAAI;AAAA,MAClE;AAgCE,UAAIC,IAAQ;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,GAEGC,IAAa;AAAA,QACf;AAAA,QAAG;AAAA,QACH;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAAA,QACvB;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAClB;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAClB;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAClB;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,MACnB,GAEGC,IAAa;AAAA,QACf;AAAA,QAAG;AAAA,QACH;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAC5D;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAS;AAAA,QAC3D;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAS;AAAA,QAC3D;AAAA,QAAS;AAAA,QAAS;AAAA,QAAS;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QACzD;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,QAAU;AAAA,MAC7D;AAED,MAAAlC,EAAG,UAAU,WAAW,SAAmBE,GAAMiC,GAAS;AACxD,QAAAjC,IAAOA,KAAQ,IACfiC,IAAUA,IAAU,KAAK;AAEzB,YAAIC;AACJ,YAAIlC,MAAS,MAAMA,MAAS,OAAO;AACjC,UAAAkC,IAAM;AAGN,mBAFIxB,IAAM,GACNyB,IAAQ,GACHzF,IAAI,GAAGA,IAAI,KAAK,QAAQA,KAAK;AACpC,gBAAI+D,IAAI,KAAK,MAAM/D,CAAC,GAChB8E,MAAUf,KAAKC,IAAOyB,KAAS,UAAU,SAAS,EAAE;AACxD,YAAAA,IAAS1B,MAAO,KAAKC,IAAQ,UAC7BA,KAAO,GACHA,KAAO,OACTA,KAAO,IACPhE,MAEEyF,MAAU,KAAKzF,MAAM,KAAK,SAAS,IACrCwF,IAAMJ,EAAM,IAAIN,EAAK,MAAM,IAAIA,IAAOU,IAEtCA,IAAMV,IAAOU;AAAA,UAEvB;AAIM,eAHIC,MAAU,MACZD,IAAMC,EAAM,SAAS,EAAE,IAAID,IAEtBA,EAAI,SAASD,MAAY;AAC9B,YAAAC,IAAM,MAAMA;AAEd,iBAAI,KAAK,aAAa,MACpBA,IAAM,MAAMA,IAEPA;AAAA,QACb;AAEI,YAAIlC,OAAUA,IAAO,MAAMA,KAAQ,KAAKA,KAAQ,IAAI;AAElD,cAAIoC,IAAYL,EAAW/B,CAAI,GAE3BqC,IAAYL,EAAWhC,CAAI;AAC/B,UAAAkC,IAAM;AACN,cAAIne,KAAI,KAAK,MAAO;AAEpB,eADAA,GAAE,WAAW,GACN,CAACA,GAAE,YAAU;AAClB,gBAAIid,KAAIjd,GAAE,MAAMse,CAAS,EAAE,SAASrC,CAAI;AACxC,YAAAjc,KAAIA,GAAE,MAAMse,CAAS,GAEhBte,GAAE,WAGLme,IAAMlB,KAAIkB,IAFVA,IAAMJ,EAAMM,IAAYpB,GAAE,MAAM,IAAIA,KAAIkB;AAAA,UAIlD;AAIM,eAHI,KAAK,aACPA,IAAM,MAAMA,IAEPA,EAAI,SAASD,MAAY;AAC9B,YAAAC,IAAM,MAAMA;AAEd,iBAAI,KAAK,aAAa,MACpBA,IAAM,MAAMA,IAEPA;AAAA,QACb;AAEI,QAAA1C,EAAO,IAAO,iCAAiC;AAAA,MAChD,GAEDM,EAAG,UAAU,WAAW,WAAqB;AAC3C,YAAI/gB,IAAM,KAAK,MAAM,CAAC;AACtB,eAAI,KAAK,WAAW,IAClBA,KAAO,KAAK,MAAM,CAAC,IAAI,WACd,KAAK,WAAW,KAAK,KAAK,MAAM,CAAC,MAAM,IAEhDA,KAAO,mBAAoB,KAAK,MAAM,CAAC,IAAI,WAClC,KAAK,SAAS,KACvBygB,EAAO,IAAO,4CAA4C,GAEpD,KAAK,aAAa,IAAK,CAACzgB,IAAMA;AAAA,MACvC,GAED+gB,EAAG,UAAU,SAAS,WAAmB;AACvC,eAAO,KAAK,SAAS,IAAI,CAAC;AAAA,MAC3B,GAEGI,MACFJ,EAAG,UAAU,WAAW,SAAmBG,GAAQqC,GAAQ;AACzD,eAAO,KAAK,YAAYpC,GAAQD,GAAQqC,CAAM;AAAA,MAC/C,IAGHxC,EAAG,UAAU,UAAU,SAAkBG,GAAQqC,GAAQ;AACvD,eAAO,KAAK,YAAY,OAAOrC,GAAQqC,CAAM;AAAA,MAC9C;AAED,UAAIC,IAAW,SAAmBC,GAAWZ,GAAM;AACjD,eAAIY,EAAU,cACLA,EAAU,YAAYZ,CAAI,IAE5B,IAAIY,EAAUZ,CAAI;AAAA,MAC1B;AAED,MAAA9B,EAAG,UAAU,cAAc,SAAsB0C,GAAWvC,GAAQqC,GAAQ;AAC1E,aAAK,OAAQ;AAEb,YAAIG,IAAa,KAAK,WAAY,GAC9BC,IAAYJ,KAAU,KAAK,IAAI,GAAGG,CAAU;AAChD,QAAAjD,EAAOiD,KAAcC,GAAW,uCAAuC,GACvElD,EAAOkD,IAAY,GAAG,6BAA6B;AAEnD,YAAIC,IAAMJ,EAASC,GAAWE,CAAS,GACnCE,IAAU3C,MAAW,OAAO,OAAO;AACvC,oBAAK,iBAAiB2C,CAAO,EAAED,GAAKF,CAAU,GACvCE;AAAA,MACR,GAED7C,EAAG,UAAU,iBAAiB,SAAyB6C,GAAKF,GAAY;AAItE,iBAHII,IAAW,GACXV,IAAQ,GAEHzF,IAAI,GAAGoG,IAAQ,GAAGpG,IAAI,KAAK,QAAQA,KAAK;AAC/C,cAAI8E,IAAQ,KAAK,MAAM9E,CAAC,KAAKoG,IAASX;AAEtC,UAAAQ,EAAIE,GAAU,IAAIrB,IAAO,KACrBqB,IAAWF,EAAI,WACjBA,EAAIE,GAAU,IAAKrB,KAAQ,IAAK,MAE9BqB,IAAWF,EAAI,WACjBA,EAAIE,GAAU,IAAKrB,KAAQ,KAAM,MAG/BsB,MAAU,KACRD,IAAWF,EAAI,WACjBA,EAAIE,GAAU,IAAKrB,KAAQ,KAAM,MAEnCW,IAAQ,GACRW,IAAQ,MAERX,IAAQX,MAAS,IACjBsB,KAAS;AAAA,QAEjB;AAEI,YAAID,IAAWF,EAAI;AAGjB,eAFAA,EAAIE,GAAU,IAAIV,GAEXU,IAAWF,EAAI;AACpB,YAAAA,EAAIE,GAAU,IAAI;AAAA,MAGvB,GAED/C,EAAG,UAAU,iBAAiB,SAAyB6C,GAAKF,GAAY;AAItE,iBAHII,IAAWF,EAAI,SAAS,GACxBR,IAAQ,GAEHzF,IAAI,GAAGoG,IAAQ,GAAGpG,IAAI,KAAK,QAAQA,KAAK;AAC/C,cAAI8E,IAAQ,KAAK,MAAM9E,CAAC,KAAKoG,IAASX;AAEtC,UAAAQ,EAAIE,GAAU,IAAIrB,IAAO,KACrBqB,KAAY,MACdF,EAAIE,GAAU,IAAKrB,KAAQ,IAAK,MAE9BqB,KAAY,MACdF,EAAIE,GAAU,IAAKrB,KAAQ,KAAM,MAG/BsB,MAAU,KACRD,KAAY,MACdF,EAAIE,GAAU,IAAKrB,KAAQ,KAAM,MAEnCW,IAAQ,GACRW,IAAQ,MAERX,IAAQX,MAAS,IACjBsB,KAAS;AAAA,QAEjB;AAEI,YAAID,KAAY;AAGd,eAFAF,EAAIE,GAAU,IAAIV,GAEXU,KAAY;AACjB,YAAAF,EAAIE,GAAU,IAAI;AAAA,MAGvB,GAEG,KAAK,QACP/C,EAAG,UAAU,aAAa,SAAqBW,GAAG;AAChD,eAAO,KAAK,KAAK,MAAMA,CAAC;AAAA,MACzB,IAEDX,EAAG,UAAU,aAAa,SAAqBW,GAAG;AAChD,YAAIsC,IAAItC,GACJO,IAAI;AACR,eAAI+B,KAAK,SACP/B,KAAK,IACL+B,OAAO,KAELA,KAAK,OACP/B,KAAK,GACL+B,OAAO,IAELA,KAAK,MACP/B,KAAK,GACL+B,OAAO,IAELA,KAAK,MACP/B,KAAK,GACL+B,OAAO,IAEF/B,IAAI+B;AAAA,MACZ,GAGHjD,EAAG,UAAU,YAAY,SAAoBW,GAAG;AAE9C,YAAIA,MAAM,EAAG,QAAO;AAEpB,YAAIsC,IAAItC,GACJO,IAAI;AACR,eAAK+B,IAAI,SACP/B,KAAK,IACL+B,OAAO,KAEJA,IAAI,QACP/B,KAAK,GACL+B,OAAO,IAEJA,IAAI,OACP/B,KAAK,GACL+B,OAAO,IAEJA,IAAI,MACP/B,KAAK,GACL+B,OAAO,IAEJA,IAAI,KACP/B,KAEKA;AAAA,MACR,GAGDlB,EAAG,UAAU,YAAY,WAAsB;AAC7C,YAAIW,IAAI,KAAK,MAAM,KAAK,SAAS,CAAC,GAC9BuC,IAAK,KAAK,WAAWvC,CAAC;AAC1B,gBAAQ,KAAK,SAAS,KAAK,KAAKuC;AAAA,MACjC;AAED,eAASC,EAAY7C,GAAK;AAGxB,iBAFIK,IAAI,IAAI,MAAML,EAAI,UAAS,CAAE,GAExB8C,IAAM,GAAGA,IAAMzC,EAAE,QAAQyC,KAAO;AACvC,cAAIxC,IAAOwC,IAAM,KAAM,GACnBC,IAAOD,IAAM;AAEjB,UAAAzC,EAAEyC,CAAG,IAAK9C,EAAI,MAAMM,CAAG,MAAMyC,IAAQ;AAAA,QAC3C;AAEI,eAAO1C;AAAA,MACX;AAGE,MAAAX,EAAG,UAAU,WAAW,WAAqB;AAC3C,YAAI,KAAK,OAAQ,EAAE,QAAO;AAG1B,iBADIkB,IAAI,GACCtE,IAAI,GAAGA,IAAI,KAAK,QAAQA,KAAK;AACpC,cAAI5Y,IAAI,KAAK,UAAU,KAAK,MAAM4Y,CAAC,CAAC;AAEpC,cADAsE,KAAKld,GACDA,MAAM,GAAI;AAAA,QACpB;AACI,eAAOkd;AAAA,MACR,GAEDlB,EAAG,UAAU,aAAa,WAAuB;AAC/C,eAAO,KAAK,KAAK,KAAK,UAAS,IAAK,CAAC;AAAA,MACtC,GAEDA,EAAG,UAAU,SAAS,SAAiBsD,GAAO;AAC5C,eAAI,KAAK,aAAa,IACb,KAAK,MAAM,MAAMA,CAAK,EAAE,MAAM,CAAC,IAEjC,KAAK,MAAO;AAAA,MACpB,GAEDtD,EAAG,UAAU,WAAW,SAAmBsD,GAAO;AAChD,eAAI,KAAK,MAAMA,IAAQ,CAAC,IACf,KAAK,KAAKA,CAAK,EAAE,MAAM,CAAC,EAAE,KAAM,IAElC,KAAK,MAAO;AAAA,MACpB,GAEDtD,EAAG,UAAU,QAAQ,WAAkB;AACrC,eAAO,KAAK,aAAa;AAAA,MAC1B,GAGDA,EAAG,UAAU,MAAM,WAAgB;AACjC,eAAO,KAAK,MAAO,EAAC,KAAM;AAAA,MAC3B,GAEDA,EAAG,UAAU,OAAO,WAAiB;AACnC,eAAK,KAAK,aACR,KAAK,YAAY,IAGZ;AAAA,MACR,GAGDA,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,SAASA,EAAI;AACvB,eAAK,MAAM,KAAK,QAAQ,IAAI;AAG9B,iBAAS1D,IAAI,GAAGA,IAAI0D,EAAI,QAAQ1D;AAC9B,eAAK,MAAMA,CAAC,IAAI,KAAK,MAAMA,CAAC,IAAI0D,EAAI,MAAM1D,CAAC;AAG7C,eAAO,KAAK,OAAQ;AAAA,MACrB,GAEDoD,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAAZ,GAAQ,KAAK,WAAWY,EAAI,cAAc,CAAC,GACpC,KAAK,KAAKA,CAAG;AAAA,MACrB,GAGDN,EAAG,UAAU,KAAK,SAAaM,GAAK;AAClC,eAAI,KAAK,SAASA,EAAI,SAAe,KAAK,MAAK,EAAG,IAAIA,CAAG,IAClDA,EAAI,QAAQ,IAAI,IAAI;AAAA,MAC5B,GAEDN,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAI,KAAK,SAASA,EAAI,SAAe,KAAK,MAAK,EAAG,KAAKA,CAAG,IACnDA,EAAI,QAAQ,KAAK,IAAI;AAAA,MAC7B,GAGDN,EAAG,UAAU,QAAQ,SAAgBM,GAAK;AAExC,YAAItc;AACJ,QAAI,KAAK,SAASsc,EAAI,SACpBtc,IAAIsc,IAEJtc,IAAI;AAGN,iBAAS4Y,IAAI,GAAGA,IAAI5Y,EAAE,QAAQ4Y;AAC5B,eAAK,MAAMA,CAAC,IAAI,KAAK,MAAMA,CAAC,IAAI0D,EAAI,MAAM1D,CAAC;AAG7C,oBAAK,SAAS5Y,EAAE,QAET,KAAK,OAAQ;AAAA,MACrB,GAEDgc,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAAZ,GAAQ,KAAK,WAAWY,EAAI,cAAc,CAAC,GACpC,KAAK,MAAMA,CAAG;AAAA,MACtB,GAGDN,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAI,KAAK,SAASA,EAAI,SAAe,KAAK,MAAK,EAAG,KAAKA,CAAG,IACnDA,EAAI,QAAQ,KAAK,IAAI;AAAA,MAC7B,GAEDN,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAI,KAAK,SAASA,EAAI,SAAe,KAAK,MAAK,EAAG,MAAMA,CAAG,IACpDA,EAAI,QAAQ,MAAM,IAAI;AAAA,MAC9B,GAGDN,EAAG,UAAU,QAAQ,SAAgBM,GAAK;AAExC,YAAIvc,GACAC;AACJ,QAAI,KAAK,SAASsc,EAAI,UACpBvc,IAAI,MACJC,IAAIsc,MAEJvc,IAAIuc,GACJtc,IAAI;AAGN,iBAAS4Y,IAAI,GAAGA,IAAI5Y,EAAE,QAAQ4Y;AAC5B,eAAK,MAAMA,CAAC,IAAI7Y,EAAE,MAAM6Y,CAAC,IAAI5Y,EAAE,MAAM4Y,CAAC;AAGxC,YAAI,SAAS7Y;AACX,iBAAO6Y,IAAI7Y,EAAE,QAAQ6Y;AACnB,iBAAK,MAAMA,CAAC,IAAI7Y,EAAE,MAAM6Y,CAAC;AAI7B,oBAAK,SAAS7Y,EAAE,QAET,KAAK,OAAQ;AAAA,MACrB,GAEDic,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAAZ,GAAQ,KAAK,WAAWY,EAAI,cAAc,CAAC,GACpC,KAAK,MAAMA,CAAG;AAAA,MACtB,GAGDN,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAI,KAAK,SAASA,EAAI,SAAe,KAAK,MAAK,EAAG,KAAKA,CAAG,IACnDA,EAAI,QAAQ,KAAK,IAAI;AAAA,MAC7B,GAEDN,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAI,KAAK,SAASA,EAAI,SAAe,KAAK,MAAK,EAAG,MAAMA,CAAG,IACpDA,EAAI,QAAQ,MAAM,IAAI;AAAA,MAC9B,GAGDN,EAAG,UAAU,QAAQ,SAAgBsD,GAAO;AAC1C,QAAA5D,EAAO,OAAO4D,KAAU,YAAYA,KAAS,CAAC;AAE9C,YAAIC,IAAc,KAAK,KAAKD,IAAQ,EAAE,IAAI,GACtCE,IAAWF,IAAQ;AAGvB,aAAK,QAAQC,CAAW,GAEpBC,IAAW,KACbD;AAIF,iBAAS3G,IAAI,GAAGA,IAAI2G,GAAa3G;AAC/B,eAAK,MAAMA,CAAC,IAAI,CAAC,KAAK,MAAMA,CAAC,IAAI;AAInC,eAAI4G,IAAW,MACb,KAAK,MAAM5G,CAAC,IAAI,CAAC,KAAK,MAAMA,CAAC,IAAK,YAAc,KAAK4G,IAIhD,KAAK,OAAQ;AAAA,MACrB,GAEDxD,EAAG,UAAU,OAAO,SAAesD,GAAO;AACxC,eAAO,KAAK,QAAQ,MAAMA,CAAK;AAAA,MAChC,GAGDtD,EAAG,UAAU,OAAO,SAAeoD,GAAKpb,GAAK;AAC3C,QAAA0X,EAAO,OAAO0D,KAAQ,YAAYA,KAAO,CAAC;AAE1C,YAAIxC,IAAOwC,IAAM,KAAM,GACnBC,IAAOD,IAAM;AAEjB,oBAAK,QAAQxC,IAAM,CAAC,GAEhB5Y,IACF,KAAK,MAAM4Y,CAAG,IAAI,KAAK,MAAMA,CAAG,IAAK,KAAKyC,IAE1C,KAAK,MAAMzC,CAAG,IAAI,KAAK,MAAMA,CAAG,IAAI,EAAE,KAAKyC,IAGtC,KAAK,OAAQ;AAAA,MACrB,GAGDrD,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,YAAIY;AAGJ,YAAI,KAAK,aAAa,KAAKZ,EAAI,aAAa;AAC1C,sBAAK,WAAW,GAChBY,IAAI,KAAK,KAAKZ,CAAG,GACjB,KAAK,YAAY,GACV,KAAK,UAAW;AAGlB,YAAI,KAAK,aAAa,KAAKA,EAAI,aAAa;AACjD,iBAAAA,EAAI,WAAW,GACfY,IAAI,KAAK,KAAKZ,CAAG,GACjBA,EAAI,WAAW,GACRY,EAAE,UAAW;AAItB,YAAInd,GAAGC;AACP,QAAI,KAAK,SAASsc,EAAI,UACpBvc,IAAI,MACJC,IAAIsc,MAEJvc,IAAIuc,GACJtc,IAAI;AAIN,iBADIqe,IAAQ,GACHzF,IAAI,GAAGA,IAAI5Y,EAAE,QAAQ4Y;AAC5B,UAAAsE,KAAKnd,EAAE,MAAM6Y,CAAC,IAAI,MAAM5Y,EAAE,MAAM4Y,CAAC,IAAI,KAAKyF,GAC1C,KAAK,MAAMzF,CAAC,IAAIsE,IAAI,UACpBmB,IAAQnB,MAAM;AAEhB,eAAOmB,MAAU,KAAKzF,IAAI7Y,EAAE,QAAQ6Y;AAClC,UAAAsE,KAAKnd,EAAE,MAAM6Y,CAAC,IAAI,KAAKyF,GACvB,KAAK,MAAMzF,CAAC,IAAIsE,IAAI,UACpBmB,IAAQnB,MAAM;AAIhB,YADA,KAAK,SAASnd,EAAE,QACZse,MAAU;AACZ,eAAK,MAAM,KAAK,MAAM,IAAIA,GAC1B,KAAK;AAAA,iBAEIte,MAAM;AACf,iBAAO6Y,IAAI7Y,EAAE,QAAQ6Y;AACnB,iBAAK,MAAMA,CAAC,IAAI7Y,EAAE,MAAM6Y,CAAC;AAI7B,eAAO;AAAA,MACR,GAGDoD,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,YAAIuC;AACJ,eAAIvC,EAAI,aAAa,KAAK,KAAK,aAAa,KAC1CA,EAAI,WAAW,GACfuC,IAAM,KAAK,IAAIvC,CAAG,GAClBA,EAAI,YAAY,GACTuC,KACEvC,EAAI,aAAa,KAAK,KAAK,aAAa,KACjD,KAAK,WAAW,GAChBuC,IAAMvC,EAAI,IAAI,IAAI,GAClB,KAAK,WAAW,GACTuC,KAGL,KAAK,SAASvC,EAAI,SAAe,KAAK,MAAK,EAAG,KAAKA,CAAG,IAEnDA,EAAI,QAAQ,KAAK,IAAI;AAAA,MAC7B,GAGDN,EAAG,UAAU,OAAO,SAAeM,GAAK;AAEtC,YAAIA,EAAI,aAAa,GAAG;AACtB,UAAAA,EAAI,WAAW;AACf,cAAIY,IAAI,KAAK,KAAKZ,CAAG;AACrB,iBAAAA,EAAI,WAAW,GACRY,EAAE,UAAW;AAAA,QAG1B,WAAe,KAAK,aAAa;AAC3B,sBAAK,WAAW,GAChB,KAAK,KAAKZ,CAAG,GACb,KAAK,WAAW,GACT,KAAK,UAAW;AAIzB,YAAImD,IAAM,KAAK,IAAInD,CAAG;AAGtB,YAAImD,MAAQ;AACV,sBAAK,WAAW,GAChB,KAAK,SAAS,GACd,KAAK,MAAM,CAAC,IAAI,GACT;AAIT,YAAI1f,GAAG;AACP,QAAI0f,IAAM,KACR1f,IAAI,MACJ,IAAIuc,MAEJvc,IAAIuc,GACJ,IAAI;AAIN,iBADI+B,IAAQ,GACHzF,IAAI,GAAGA,IAAI,EAAE,QAAQA;AAC5B,UAAAsE,KAAKnd,EAAE,MAAM6Y,CAAC,IAAI,MAAM,EAAE,MAAMA,CAAC,IAAI,KAAKyF,GAC1CA,IAAQnB,KAAK,IACb,KAAK,MAAMtE,CAAC,IAAIsE,IAAI;AAEtB,eAAOmB,MAAU,KAAKzF,IAAI7Y,EAAE,QAAQ6Y;AAClC,UAAAsE,KAAKnd,EAAE,MAAM6Y,CAAC,IAAI,KAAKyF,GACvBA,IAAQnB,KAAK,IACb,KAAK,MAAMtE,CAAC,IAAIsE,IAAI;AAItB,YAAImB,MAAU,KAAKzF,IAAI7Y,EAAE,UAAUA,MAAM;AACvC,iBAAO6Y,IAAI7Y,EAAE,QAAQ6Y;AACnB,iBAAK,MAAMA,CAAC,IAAI7Y,EAAE,MAAM6Y,CAAC;AAI7B,oBAAK,SAAS,KAAK,IAAI,KAAK,QAAQA,CAAC,GAEjC7Y,MAAM,SACR,KAAK,WAAW,IAGX,KAAK,OAAQ;AAAA,MACrB,GAGDic,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAO,KAAK,QAAQ,KAAKA,CAAG;AAAA,MAC7B;AAED,eAASoD,EAAYC,GAAMrD,GAAK8B,GAAK;AACnC,QAAAA,EAAI,WAAW9B,EAAI,WAAWqD,EAAK;AACnC,YAAIjlB,IAAOilB,EAAK,SAASrD,EAAI,SAAU;AACvC,QAAA8B,EAAI,SAAS1jB,GACbA,IAAOA,IAAM,IAAK;AAGlB,YAAIqF,IAAI4f,EAAK,MAAM,CAAC,IAAI,GACpB,IAAIrD,EAAI,MAAM,CAAC,IAAI,GACnBY,IAAInd,IAAI,GAER6f,IAAK1C,IAAI,UACTmB,IAASnB,IAAI,WAAa;AAC9B,QAAAkB,EAAI,MAAM,CAAC,IAAIwB;AAEf,iBAASC,IAAI,GAAGA,IAAInlB,GAAKmlB,KAAK;AAM5B,mBAHIC,IAASzB,MAAU,IACnB0B,KAAQ1B,IAAQ,UAChB2B,KAAO,KAAK,IAAIH,GAAGvD,EAAI,SAAS,CAAC,GAC5BI,KAAI,KAAK,IAAI,GAAGmD,IAAIF,EAAK,SAAS,CAAC,GAAGjD,MAAKsD,IAAMtD,MAAK;AAC7D,gBAAI9D,KAAKiH,IAAInD,KAAK;AAClB,YAAA3c,IAAI4f,EAAK,MAAM/G,EAAC,IAAI,GACpB,IAAI0D,EAAI,MAAMI,EAAC,IAAI,GACnBQ,IAAInd,IAAI,IAAIggB,IACZD,KAAW5C,IAAI,WAAa,GAC5B6C,KAAQ7C,IAAI;AAAA,UACpB;AACM,UAAAkB,EAAI,MAAMyB,CAAC,IAAIE,KAAQ,GACvB1B,IAAQyB,IAAS;AAAA,QACvB;AACI,eAAIzB,MAAU,IACZD,EAAI,MAAMyB,CAAC,IAAIxB,IAAQ,IAEvBD,EAAI,UAGCA,EAAI,OAAQ;AAAA,MACvB;AAKE,UAAI6B,IAAc,SAAsBN,GAAMrD,GAAK8B,GAAK;AACtD,YAAIre,IAAI4f,EAAK,OACT,IAAIrD,EAAI,OACR4D,IAAI9B,EAAI,OACRne,IAAI,GACJ2f,GACAO,GACAjB,GACAkB,KAAKrgB,EAAE,CAAC,IAAI,GACZsgB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAKxgB,EAAE,CAAC,IAAI,GACZygB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK3gB,EAAE,CAAC,IAAI,GACZ4gB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK9gB,EAAE,CAAC,IAAI,GACZ+gB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAKjhB,EAAE,CAAC,IAAI,GACZkhB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAKphB,EAAE,CAAC,IAAI,GACZqhB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAKvhB,EAAE,CAAC,IAAI,GACZwhB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK1hB,EAAE,CAAC,IAAI,GACZ2hB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK7hB,EAAE,CAAC,IAAI,GACZ8hB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAKhiB,EAAE,CAAC,IAAI,GACZiiB,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO,IACbG,KAAK,EAAE,CAAC,IAAI,GACZC,KAAMD,KAAK,MACXE,KAAMF,OAAO;AAEjB,QAAAzF,EAAI,WAAWuB,EAAK,WAAWrD,EAAI,UACnC8B,EAAI,SAAS,IAEbwB,IAAK,KAAK,KAAKS,IAAK8B,EAAG,GACvBhC,IAAM,KAAK,KAAKE,IAAK+B,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAKG,IAAK6B,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAKoB,IAAK8B,EAAG;AACvB,YAAI4B,MAAQ/jB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAM6D,OAAO,MAAO,GAChDA,MAAM,UAENpE,IAAK,KAAK,KAAKY,IAAK2B,EAAG,GACvBhC,IAAM,KAAK,KAAKK,IAAK4B,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAKM,IAAK0B,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAKuB,IAAK2B,EAAG,GACvBxC,IAAMA,IAAK,KAAK,KAAKS,IAAKiC,EAAG,IAAK,GAClCnC,IAAOA,IAAM,KAAK,KAAKE,IAAKkC,EAAG,IAAK,GACpCpC,IAAOA,IAAM,KAAK,KAAKG,IAAKgC,EAAG,IAAK,GACpCpD,IAAMA,IAAK,KAAK,KAAKoB,IAAKiC,EAAG,IAAK;AAClC,YAAI0B,MAAQhkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAM8D,OAAO,MAAO,GAChDA,MAAM,UAENrE,IAAK,KAAK,KAAKe,IAAKwB,EAAG,GACvBhC,IAAM,KAAK,KAAKQ,IAAKyB,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAKS,IAAKuB,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAK0B,IAAKwB,EAAG,GACvBxC,IAAMA,IAAK,KAAK,KAAKY,IAAK8B,EAAG,IAAK,GAClCnC,IAAOA,IAAM,KAAK,KAAKK,IAAK+B,EAAG,IAAK,GACpCpC,IAAOA,IAAM,KAAK,KAAKM,IAAK6B,EAAG,IAAK,GACpCpD,IAAMA,IAAK,KAAK,KAAKuB,IAAK8B,EAAG,IAAK,GAClC3C,IAAMA,IAAK,KAAK,KAAKS,IAAKoC,EAAG,IAAK,GAClCtC,IAAOA,IAAM,KAAK,KAAKE,IAAKqC,EAAG,IAAK,GACpCvC,IAAOA,IAAM,KAAK,KAAKG,IAAKmC,EAAG,IAAK,GACpCvD,IAAMA,IAAK,KAAK,KAAKoB,IAAKoC,EAAG,IAAK;AAClC,YAAIwB,MAAQjkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAM+D,OAAO,MAAO,GAChDA,MAAM,UAENtE,IAAK,KAAK,KAAKkB,IAAKqB,EAAG,GACvBhC,IAAM,KAAK,KAAKW,IAAKsB,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAKY,IAAKoB,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAK6B,IAAKqB,EAAG,GACvBxC,IAAMA,IAAK,KAAK,KAAKe,IAAK2B,EAAG,IAAK,GAClCnC,IAAOA,IAAM,KAAK,KAAKQ,IAAK4B,EAAG,IAAK,GACpCpC,IAAOA,IAAM,KAAK,KAAKS,IAAK0B,EAAG,IAAK,GACpCpD,IAAMA,IAAK,KAAK,KAAK0B,IAAK2B,EAAG,IAAK,GAClC3C,IAAMA,IAAK,KAAK,KAAKY,IAAKiC,EAAG,IAAK,GAClCtC,IAAOA,IAAM,KAAK,KAAKK,IAAKkC,EAAG,IAAK,GACpCvC,IAAOA,IAAM,KAAK,KAAKM,IAAKgC,EAAG,IAAK,GACpCvD,IAAMA,IAAK,KAAK,KAAKuB,IAAKiC,EAAG,IAAK,GAClC9C,IAAMA,IAAK,KAAK,KAAKS,IAAKuC,EAAG,IAAK,GAClCzC,IAAOA,IAAM,KAAK,KAAKE,IAAKwC,EAAG,IAAK,GACpC1C,IAAOA,IAAM,KAAK,KAAKG,IAAKsC,EAAG,IAAK,GACpC1D,IAAMA,IAAK,KAAK,KAAKoB,IAAKuC,EAAG,IAAK;AAClC,YAAIsB,MAAQlkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMgE,OAAO,MAAO,GAChDA,MAAM,UAENvE,IAAK,KAAK,KAAKqB,IAAKkB,EAAG,GACvBhC,IAAM,KAAK,KAAKc,IAAKmB,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAKe,IAAKiB,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAKgC,IAAKkB,EAAG,GACvBxC,IAAMA,IAAK,KAAK,KAAKkB,IAAKwB,EAAG,IAAK,GAClCnC,IAAOA,IAAM,KAAK,KAAKW,IAAKyB,EAAG,IAAK,GACpCpC,IAAOA,IAAM,KAAK,KAAKY,IAAKuB,EAAG,IAAK,GACpCpD,IAAMA,IAAK,KAAK,KAAK6B,IAAKwB,EAAG,IAAK,GAClC3C,IAAMA,IAAK,KAAK,KAAKe,IAAK8B,EAAG,IAAK,GAClCtC,IAAOA,IAAM,KAAK,KAAKQ,IAAK+B,EAAG,IAAK,GACpCvC,IAAOA,IAAM,KAAK,KAAKS,IAAK6B,EAAG,IAAK,GACpCvD,IAAMA,IAAK,KAAK,KAAK0B,IAAK8B,EAAG,IAAK,GAClC9C,IAAMA,IAAK,KAAK,KAAKY,IAAKoC,EAAG,IAAK,GAClCzC,IAAOA,IAAM,KAAK,KAAKK,IAAKqC,EAAG,IAAK,GACpC1C,IAAOA,IAAM,KAAK,KAAKM,IAAKmC,EAAG,IAAK,GACpC1D,IAAMA,IAAK,KAAK,KAAKuB,IAAKoC,EAAG,IAAK,GAClCjD,IAAMA,IAAK,KAAK,KAAKS,IAAK0C,EAAG,IAAK,GAClC5C,IAAOA,IAAM,KAAK,KAAKE,IAAK2C,EAAG,IAAK,GACpC7C,IAAOA,IAAM,KAAK,KAAKG,IAAKyC,EAAG,IAAK,GACpC7D,IAAMA,IAAK,KAAK,KAAKoB,IAAK0C,EAAG,IAAK;AAClC,YAAIoB,MAAQnkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMiE,OAAO,MAAO,GAChDA,MAAM,UAENxE,IAAK,KAAK,KAAKwB,IAAKe,EAAG,GACvBhC,IAAM,KAAK,KAAKiB,IAAKgB,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAKkB,IAAKc,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAKmC,IAAKe,EAAG,GACvBxC,IAAMA,IAAK,KAAK,KAAKqB,IAAKqB,EAAG,IAAK,GAClCnC,IAAOA,IAAM,KAAK,KAAKc,IAAKsB,EAAG,IAAK,GACpCpC,IAAOA,IAAM,KAAK,KAAKe,IAAKoB,EAAG,IAAK,GACpCpD,IAAMA,IAAK,KAAK,KAAKgC,IAAKqB,EAAG,IAAK,GAClC3C,IAAMA,IAAK,KAAK,KAAKkB,IAAK2B,EAAG,IAAK,GAClCtC,IAAOA,IAAM,KAAK,KAAKW,IAAK4B,EAAG,IAAK,GACpCvC,IAAOA,IAAM,KAAK,KAAKY,IAAK0B,EAAG,IAAK,GACpCvD,IAAMA,IAAK,KAAK,KAAK6B,IAAK2B,EAAG,IAAK,GAClC9C,IAAMA,IAAK,KAAK,KAAKe,IAAKiC,EAAG,IAAK,GAClCzC,IAAOA,IAAM,KAAK,KAAKQ,IAAKkC,EAAG,IAAK,GACpC1C,IAAOA,IAAM,KAAK,KAAKS,IAAKgC,EAAG,IAAK,GACpC1D,IAAMA,IAAK,KAAK,KAAK0B,IAAKiC,EAAG,IAAK,GAClCjD,IAAMA,IAAK,KAAK,KAAKY,IAAKuC,EAAG,IAAK,GAClC5C,IAAOA,IAAM,KAAK,KAAKK,IAAKwC,EAAG,IAAK,GACpC7C,IAAOA,IAAM,KAAK,KAAKM,IAAKsC,EAAG,IAAK,GACpC7D,IAAMA,IAAK,KAAK,KAAKuB,IAAKuC,EAAG,IAAK,GAClCpD,IAAMA,IAAK,KAAK,KAAKS,IAAK6C,EAAG,IAAK,GAClC/C,IAAOA,IAAM,KAAK,KAAKE,IAAK8C,EAAG,IAAK,GACpChD,IAAOA,IAAM,KAAK,KAAKG,IAAK4C,EAAG,IAAK,GACpChE,IAAMA,IAAK,KAAK,KAAKoB,IAAK6C,EAAG,IAAK;AAClC,YAAIkB,MAAQpkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMkE,OAAO,MAAO,GAChDA,MAAM,UAENzE,IAAK,KAAK,KAAK2B,IAAKY,EAAG,GACvBhC,IAAM,KAAK,KAAKoB,IAAKa,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAKqB,IAAKW,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAKsC,IAAKY,EAAG,GACvBxC,IAAMA,IAAK,KAAK,KAAKwB,IAAKkB,EAAG,IAAK,GAClCnC,IAAOA,IAAM,KAAK,KAAKiB,IAAKmB,EAAG,IAAK,GACpCpC,IAAOA,IAAM,KAAK,KAAKkB,IAAKiB,EAAG,IAAK,GACpCpD,IAAMA,IAAK,KAAK,KAAKmC,IAAKkB,EAAG,IAAK,GAClC3C,IAAMA,IAAK,KAAK,KAAKqB,IAAKwB,EAAG,IAAK,GAClCtC,IAAOA,IAAM,KAAK,KAAKc,IAAKyB,EAAG,IAAK,GACpCvC,IAAOA,IAAM,KAAK,KAAKe,IAAKuB,EAAG,IAAK,GACpCvD,IAAMA,IAAK,KAAK,KAAKgC,IAAKwB,EAAG,IAAK,GAClC9C,IAAMA,IAAK,KAAK,KAAKkB,IAAK8B,EAAG,IAAK,GAClCzC,IAAOA,IAAM,KAAK,KAAKW,IAAK+B,EAAG,IAAK,GACpC1C,IAAOA,IAAM,KAAK,KAAKY,IAAK6B,EAAG,IAAK,GACpC1D,IAAMA,IAAK,KAAK,KAAK6B,IAAK8B,EAAG,IAAK,GAClCjD,IAAMA,IAAK,KAAK,KAAKe,IAAKoC,EAAG,IAAK,GAClC5C,IAAOA,IAAM,KAAK,KAAKQ,IAAKqC,EAAG,IAAK,GACpC7C,IAAOA,IAAM,KAAK,KAAKS,IAAKmC,EAAG,IAAK,GACpC7D,IAAMA,IAAK,KAAK,KAAK0B,IAAKoC,EAAG,IAAK,GAClCpD,IAAMA,IAAK,KAAK,KAAKY,IAAK0C,EAAG,IAAK,GAClC/C,IAAOA,IAAM,KAAK,KAAKK,IAAK2C,EAAG,IAAK,GACpChD,IAAOA,IAAM,KAAK,KAAKM,IAAKyC,EAAG,IAAK,GACpChE,IAAMA,IAAK,KAAK,KAAKuB,IAAK0C,EAAG,IAAK,GAClCvD,IAAMA,IAAK,KAAK,KAAKS,IAAKgD,EAAG,IAAK,GAClClD,IAAOA,IAAM,KAAK,KAAKE,IAAKiD,EAAG,IAAK,GACpCnD,IAAOA,IAAM,KAAK,KAAKG,IAAK+C,EAAG,IAAK,GACpCnE,IAAMA,IAAK,KAAK,KAAKoB,IAAKgD,EAAG,IAAK;AAClC,YAAIgB,MAAQrkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMmE,OAAO,MAAO,GAChDA,MAAM,UAEN1E,IAAK,KAAK,KAAK8B,IAAKS,EAAG,GACvBhC,IAAM,KAAK,KAAKuB,IAAKU,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAKwB,IAAKQ,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAKyC,IAAKS,EAAG,GACvBxC,IAAMA,IAAK,KAAK,KAAK2B,IAAKe,EAAG,IAAK,GAClCnC,IAAOA,IAAM,KAAK,KAAKoB,IAAKgB,EAAG,IAAK,GACpCpC,IAAOA,IAAM,KAAK,KAAKqB,IAAKc,EAAG,IAAK,GACpCpD,IAAMA,IAAK,KAAK,KAAKsC,IAAKe,EAAG,IAAK,GAClC3C,IAAMA,IAAK,KAAK,KAAKwB,IAAKqB,EAAG,IAAK,GAClCtC,IAAOA,IAAM,KAAK,KAAKiB,IAAKsB,EAAG,IAAK,GACpCvC,IAAOA,IAAM,KAAK,KAAKkB,IAAKoB,EAAG,IAAK,GACpCvD,IAAMA,IAAK,KAAK,KAAKmC,IAAKqB,EAAG,IAAK,GAClC9C,IAAMA,IAAK,KAAK,KAAKqB,IAAK2B,EAAG,IAAK,GAClCzC,IAAOA,IAAM,KAAK,KAAKc,IAAK4B,EAAG,IAAK,GACpC1C,IAAOA,IAAM,KAAK,KAAKe,IAAK0B,EAAG,IAAK,GACpC1D,IAAMA,IAAK,KAAK,KAAKgC,IAAK2B,EAAG,IAAK,GAClCjD,IAAMA,IAAK,KAAK,KAAKkB,IAAKiC,EAAG,IAAK,GAClC5C,IAAOA,IAAM,KAAK,KAAKW,IAAKkC,EAAG,IAAK,GACpC7C,IAAOA,IAAM,KAAK,KAAKY,IAAKgC,EAAG,IAAK,GACpC7D,IAAMA,IAAK,KAAK,KAAK6B,IAAKiC,EAAG,IAAK,GAClCpD,IAAMA,IAAK,KAAK,KAAKe,IAAKuC,EAAG,IAAK,GAClC/C,IAAOA,IAAM,KAAK,KAAKQ,IAAKwC,EAAG,IAAK,GACpChD,IAAOA,IAAM,KAAK,KAAKS,IAAKsC,EAAG,IAAK,GACpChE,IAAMA,IAAK,KAAK,KAAK0B,IAAKuC,EAAG,IAAK,GAClCvD,IAAMA,IAAK,KAAK,KAAKY,IAAK6C,EAAG,IAAK,GAClClD,IAAOA,IAAM,KAAK,KAAKK,IAAK8C,EAAG,IAAK,GACpCnD,IAAOA,IAAM,KAAK,KAAKM,IAAK4C,EAAG,IAAK,GACpCnE,IAAMA,IAAK,KAAK,KAAKuB,IAAK6C,EAAG,IAAK,GAClC1D,IAAMA,IAAK,KAAK,KAAKS,IAAKmD,EAAG,IAAK,GAClCrD,IAAOA,IAAM,KAAK,KAAKE,IAAKoD,EAAG,IAAK,GACpCtD,IAAOA,IAAM,KAAK,KAAKG,IAAKkD,EAAG,IAAK,GACpCtE,IAAMA,IAAK,KAAK,KAAKoB,IAAKmD,EAAG,IAAK;AAClC,YAAIc,MAAQtkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMoE,OAAO,MAAO,GAChDA,MAAM,UAEN3E,IAAK,KAAK,KAAKiC,IAAKM,EAAG,GACvBhC,IAAM,KAAK,KAAK0B,IAAKO,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAK2B,IAAKK,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAK4C,IAAKM,EAAG,GACvBxC,IAAMA,IAAK,KAAK,KAAK8B,IAAKY,EAAG,IAAK,GAClCnC,IAAOA,IAAM,KAAK,KAAKuB,IAAKa,EAAG,IAAK,GACpCpC,IAAOA,IAAM,KAAK,KAAKwB,IAAKW,EAAG,IAAK,GACpCpD,IAAMA,IAAK,KAAK,KAAKyC,IAAKY,EAAG,IAAK,GAClC3C,IAAMA,IAAK,KAAK,KAAK2B,IAAKkB,EAAG,IAAK,GAClCtC,IAAOA,IAAM,KAAK,KAAKoB,IAAKmB,EAAG,IAAK,GACpCvC,IAAOA,IAAM,KAAK,KAAKqB,IAAKiB,EAAG,IAAK,GACpCvD,IAAMA,IAAK,KAAK,KAAKsC,IAAKkB,EAAG,IAAK,GAClC9C,IAAMA,IAAK,KAAK,KAAKwB,IAAKwB,EAAG,IAAK,GAClCzC,IAAOA,IAAM,KAAK,KAAKiB,IAAKyB,EAAG,IAAK,GACpC1C,IAAOA,IAAM,KAAK,KAAKkB,IAAKuB,EAAG,IAAK,GACpC1D,IAAMA,IAAK,KAAK,KAAKmC,IAAKwB,EAAG,IAAK,GAClCjD,IAAMA,IAAK,KAAK,KAAKqB,IAAK8B,EAAG,IAAK,GAClC5C,IAAOA,IAAM,KAAK,KAAKc,IAAK+B,EAAG,IAAK,GACpC7C,IAAOA,IAAM,KAAK,KAAKe,IAAK6B,EAAG,IAAK,GACpC7D,IAAMA,IAAK,KAAK,KAAKgC,IAAK8B,EAAG,IAAK,GAClCpD,IAAMA,IAAK,KAAK,KAAKkB,IAAKoC,EAAG,IAAK,GAClC/C,IAAOA,IAAM,KAAK,KAAKW,IAAKqC,EAAG,IAAK,GACpChD,IAAOA,IAAM,KAAK,KAAKY,IAAKmC,EAAG,IAAK,GACpChE,IAAMA,IAAK,KAAK,KAAK6B,IAAKoC,EAAG,IAAK,GAClCvD,IAAMA,IAAK,KAAK,KAAKe,IAAK0C,EAAG,IAAK,GAClClD,IAAOA,IAAM,KAAK,KAAKQ,IAAK2C,EAAG,IAAK,GACpCnD,IAAOA,IAAM,KAAK,KAAKS,IAAKyC,EAAG,IAAK,GACpCnE,IAAMA,IAAK,KAAK,KAAK0B,IAAK0C,EAAG,IAAK,GAClC1D,IAAMA,IAAK,KAAK,KAAKY,IAAKgD,EAAG,IAAK,GAClCrD,IAAOA,IAAM,KAAK,KAAKK,IAAKiD,EAAG,IAAK,GACpCtD,IAAOA,IAAM,KAAK,KAAKM,IAAK+C,EAAG,IAAK,GACpCtE,IAAMA,IAAK,KAAK,KAAKuB,IAAKgD,EAAG,IAAK,GAClC7D,IAAMA,IAAK,KAAK,KAAKS,IAAKsD,EAAG,IAAK,GAClCxD,IAAOA,IAAM,KAAK,KAAKE,IAAKuD,EAAG,IAAK,GACpCzD,IAAOA,IAAM,KAAK,KAAKG,IAAKqD,EAAG,IAAK,GACpCzE,IAAMA,IAAK,KAAK,KAAKoB,IAAKsD,EAAG,IAAK;AAClC,YAAIY,MAAQvkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMqE,OAAO,MAAO,GAChDA,MAAM,UAEN5E,IAAK,KAAK,KAAKoC,IAAKG,EAAG,GACvBhC,IAAM,KAAK,KAAK6B,IAAKI,EAAG,GACxBjC,IAAOA,IAAM,KAAK,KAAK8B,IAAKE,EAAG,IAAK,GACpCjD,IAAK,KAAK,KAAK+C,IAAKG,EAAG,GACvBxC,IAAMA,IAAK,KAAK,KAAKiC,IAAKS,EAAG,IAAK,GAClCnC,IAAOA,IAAM,KAAK,KAAK0B,IAAKU,EAAG,IAAK,GACpCpC,IAAOA,IAAM,KAAK,KAAK2B,IAAKQ,EAAG,IAAK,GACpCpD,IAAMA,IAAK,KAAK,KAAK4C,IAAKS,EAAG,IAAK,GAClC3C,IAAMA,IAAK,KAAK,KAAK8B,IAAKe,EAAG,IAAK,GAClCtC,IAAOA,IAAM,KAAK,KAAKuB,IAAKgB,EAAG,IAAK,GACpCvC,IAAOA,IAAM,KAAK,KAAKwB,IAAKc,EAAG,IAAK,GACpCvD,IAAMA,IAAK,KAAK,KAAKyC,IAAKe,EAAG,IAAK,GAClC9C,IAAMA,IAAK,KAAK,KAAK2B,IAAKqB,EAAG,IAAK,GAClCzC,IAAOA,IAAM,KAAK,KAAKoB,IAAKsB,EAAG,IAAK,GACpC1C,IAAOA,IAAM,KAAK,KAAKqB,IAAKoB,EAAG,IAAK,GACpC1D,IAAMA,IAAK,KAAK,KAAKsC,IAAKqB,EAAG,IAAK,GAClCjD,IAAMA,IAAK,KAAK,KAAKwB,IAAK2B,EAAG,IAAK,GAClC5C,IAAOA,IAAM,KAAK,KAAKiB,IAAK4B,EAAG,IAAK,GACpC7C,IAAOA,IAAM,KAAK,KAAKkB,IAAK0B,EAAG,IAAK,GACpC7D,IAAMA,IAAK,KAAK,KAAKmC,IAAK2B,EAAG,IAAK,GAClCpD,IAAMA,IAAK,KAAK,KAAKqB,IAAKiC,EAAG,IAAK,GAClC/C,IAAOA,IAAM,KAAK,KAAKc,IAAKkC,EAAG,IAAK,GACpChD,IAAOA,IAAM,KAAK,KAAKe,IAAKgC,EAAG,IAAK,GACpChE,IAAMA,IAAK,KAAK,KAAKgC,IAAKiC,EAAG,IAAK,GAClCvD,IAAMA,IAAK,KAAK,KAAKkB,IAAKuC,EAAG,IAAK,GAClClD,IAAOA,IAAM,KAAK,KAAKW,IAAKwC,EAAG,IAAK,GACpCnD,IAAOA,IAAM,KAAK,KAAKY,IAAKsC,EAAG,IAAK,GACpCnE,IAAMA,IAAK,KAAK,KAAK6B,IAAKuC,EAAG,IAAK,GAClC1D,IAAMA,IAAK,KAAK,KAAKe,IAAK6C,EAAG,IAAK,GAClCrD,IAAOA,IAAM,KAAK,KAAKQ,IAAK8C,EAAG,IAAK,GACpCtD,IAAOA,IAAM,KAAK,KAAKS,IAAK4C,EAAG,IAAK,GACpCtE,IAAMA,IAAK,KAAK,KAAK0B,IAAK6C,EAAG,IAAK,GAClC7D,IAAMA,IAAK,KAAK,KAAKY,IAAKmD,EAAG,IAAK,GAClCxD,IAAOA,IAAM,KAAK,KAAKK,IAAKoD,EAAG,IAAK,GACpCzD,IAAOA,IAAM,KAAK,KAAKM,IAAKkD,EAAG,IAAK,GACpCzE,IAAMA,IAAK,KAAK,KAAKuB,IAAKmD,EAAG,IAAK,GAClChE,IAAMA,IAAK,KAAK,KAAKS,IAAKyD,EAAG,IAAK,GAClC3D,IAAOA,IAAM,KAAK,KAAKE,IAAK0D,EAAG,IAAK,GACpC5D,IAAOA,IAAM,KAAK,KAAKG,IAAKwD,EAAG,IAAK,GACpC5E,IAAMA,IAAK,KAAK,KAAKoB,IAAKyD,EAAG,IAAK;AAClC,YAAIU,MAAQxkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACrD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMsE,OAAO,MAAO,GAChDA,MAAM,UAEN7E,IAAK,KAAK,KAAKoC,IAAKM,EAAG,GACvBnC,IAAM,KAAK,KAAK6B,IAAKO,EAAG,GACxBpC,IAAOA,IAAM,KAAK,KAAK8B,IAAKK,EAAG,IAAK,GACpCpD,IAAK,KAAK,KAAK+C,IAAKM,EAAG,GACvB3C,IAAMA,IAAK,KAAK,KAAKiC,IAAKY,EAAG,IAAK,GAClCtC,IAAOA,IAAM,KAAK,KAAK0B,IAAKa,EAAG,IAAK,GACpCvC,IAAOA,IAAM,KAAK,KAAK2B,IAAKW,EAAG,IAAK,GACpCvD,IAAMA,IAAK,KAAK,KAAK4C,IAAKY,EAAG,IAAK,GAClC9C,IAAMA,IAAK,KAAK,KAAK8B,IAAKkB,EAAG,IAAK,GAClCzC,IAAOA,IAAM,KAAK,KAAKuB,IAAKmB,EAAG,IAAK,GACpC1C,IAAOA,IAAM,KAAK,KAAKwB,IAAKiB,EAAG,IAAK,GACpC1D,IAAMA,IAAK,KAAK,KAAKyC,IAAKkB,EAAG,IAAK,GAClCjD,IAAMA,IAAK,KAAK,KAAK2B,IAAKwB,EAAG,IAAK,GAClC5C,IAAOA,IAAM,KAAK,KAAKoB,IAAKyB,EAAG,IAAK,GACpC7C,IAAOA,IAAM,KAAK,KAAKqB,IAAKuB,EAAG,IAAK,GACpC7D,IAAMA,IAAK,KAAK,KAAKsC,IAAKwB,EAAG,IAAK,GAClCpD,IAAMA,IAAK,KAAK,KAAKwB,IAAK8B,EAAG,IAAK,GAClC/C,IAAOA,IAAM,KAAK,KAAKiB,IAAK+B,EAAG,IAAK,GACpChD,IAAOA,IAAM,KAAK,KAAKkB,IAAK6B,EAAG,IAAK,GACpChE,IAAMA,IAAK,KAAK,KAAKmC,IAAK8B,EAAG,IAAK,GAClCvD,IAAMA,IAAK,KAAK,KAAKqB,IAAKoC,EAAG,IAAK,GAClClD,IAAOA,IAAM,KAAK,KAAKc,IAAKqC,EAAG,IAAK,GACpCnD,IAAOA,IAAM,KAAK,KAAKe,IAAKmC,EAAG,IAAK,GACpCnE,IAAMA,IAAK,KAAK,KAAKgC,IAAKoC,EAAG,IAAK,GAClC1D,IAAMA,IAAK,KAAK,KAAKkB,IAAK0C,EAAG,IAAK,GAClCrD,IAAOA,IAAM,KAAK,KAAKW,IAAK2C,EAAG,IAAK,GACpCtD,IAAOA,IAAM,KAAK,KAAKY,IAAKyC,EAAG,IAAK,GACpCtE,IAAMA,IAAK,KAAK,KAAK6B,IAAK0C,EAAG,IAAK,GAClC7D,IAAMA,IAAK,KAAK,KAAKe,IAAKgD,EAAG,IAAK,GAClCxD,IAAOA,IAAM,KAAK,KAAKQ,IAAKiD,EAAG,IAAK,GACpCzD,IAAOA,IAAM,KAAK,KAAKS,IAAK+C,EAAG,IAAK,GACpCzE,IAAMA,IAAK,KAAK,KAAK0B,IAAKgD,EAAG,IAAK,GAClChE,IAAMA,IAAK,KAAK,KAAKY,IAAKsD,EAAG,IAAK,GAClC3D,IAAOA,IAAM,KAAK,KAAKK,IAAKuD,EAAG,IAAK,GACpC5D,IAAOA,IAAM,KAAK,KAAKM,IAAKqD,EAAG,IAAK,GACpC5E,IAAMA,IAAK,KAAK,KAAKuB,IAAKsD,EAAG,IAAK;AAClC,YAAIW,MAASzkB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACtD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMuE,OAAQ,MAAO,GACjDA,MAAO,UAEP9E,IAAK,KAAK,KAAKoC,IAAKS,EAAG,GACvBtC,IAAM,KAAK,KAAK6B,IAAKU,EAAG,GACxBvC,IAAOA,IAAM,KAAK,KAAK8B,IAAKQ,EAAG,IAAK,GACpCvD,IAAK,KAAK,KAAK+C,IAAKS,EAAG,GACvB9C,IAAMA,IAAK,KAAK,KAAKiC,IAAKe,EAAG,IAAK,GAClCzC,IAAOA,IAAM,KAAK,KAAK0B,IAAKgB,EAAG,IAAK,GACpC1C,IAAOA,IAAM,KAAK,KAAK2B,IAAKc,EAAG,IAAK,GACpC1D,IAAMA,IAAK,KAAK,KAAK4C,IAAKe,EAAG,IAAK,GAClCjD,IAAMA,IAAK,KAAK,KAAK8B,IAAKqB,EAAG,IAAK,GAClC5C,IAAOA,IAAM,KAAK,KAAKuB,IAAKsB,EAAG,IAAK,GACpC7C,IAAOA,IAAM,KAAK,KAAKwB,IAAKoB,EAAG,IAAK,GACpC7D,IAAMA,IAAK,KAAK,KAAKyC,IAAKqB,EAAG,IAAK,GAClCpD,IAAMA,IAAK,KAAK,KAAK2B,IAAK2B,EAAG,IAAK,GAClC/C,IAAOA,IAAM,KAAK,KAAKoB,IAAK4B,EAAG,IAAK,GACpChD,IAAOA,IAAM,KAAK,KAAKqB,IAAK0B,EAAG,IAAK,GACpChE,IAAMA,IAAK,KAAK,KAAKsC,IAAK2B,EAAG,IAAK,GAClCvD,IAAMA,IAAK,KAAK,KAAKwB,IAAKiC,EAAG,IAAK,GAClClD,IAAOA,IAAM,KAAK,KAAKiB,IAAKkC,EAAG,IAAK,GACpCnD,IAAOA,IAAM,KAAK,KAAKkB,IAAKgC,EAAG,IAAK,GACpCnE,IAAMA,IAAK,KAAK,KAAKmC,IAAKiC,EAAG,IAAK,GAClC1D,IAAMA,IAAK,KAAK,KAAKqB,IAAKuC,EAAG,IAAK,GAClCrD,IAAOA,IAAM,KAAK,KAAKc,IAAKwC,EAAG,IAAK,GACpCtD,IAAOA,IAAM,KAAK,KAAKe,IAAKsC,EAAG,IAAK,GACpCtE,IAAMA,IAAK,KAAK,KAAKgC,IAAKuC,EAAG,IAAK,GAClC7D,IAAMA,IAAK,KAAK,KAAKkB,IAAK6C,EAAG,IAAK,GAClCxD,IAAOA,IAAM,KAAK,KAAKW,IAAK8C,EAAG,IAAK,GACpCzD,IAAOA,IAAM,KAAK,KAAKY,IAAK4C,EAAG,IAAK,GACpCzE,IAAMA,IAAK,KAAK,KAAK6B,IAAK6C,EAAG,IAAK,GAClChE,IAAMA,IAAK,KAAK,KAAKe,IAAKmD,EAAG,IAAK,GAClC3D,IAAOA,IAAM,KAAK,KAAKQ,IAAKoD,EAAG,IAAK,GACpC5D,IAAOA,IAAM,KAAK,KAAKS,IAAKkD,EAAG,IAAK,GACpC5E,IAAMA,IAAK,KAAK,KAAK0B,IAAKmD,EAAG,IAAK;AAClC,YAAIY,MAAS1kB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACtD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMwE,OAAQ,MAAO,GACjDA,MAAO,UAEP/E,IAAK,KAAK,KAAKoC,IAAKY,EAAG,GACvBzC,IAAM,KAAK,KAAK6B,IAAKa,EAAG,GACxB1C,IAAOA,IAAM,KAAK,KAAK8B,IAAKW,EAAG,IAAK,GACpC1D,IAAK,KAAK,KAAK+C,IAAKY,EAAG,GACvBjD,IAAMA,IAAK,KAAK,KAAKiC,IAAKkB,EAAG,IAAK,GAClC5C,IAAOA,IAAM,KAAK,KAAK0B,IAAKmB,EAAG,IAAK,GACpC7C,IAAOA,IAAM,KAAK,KAAK2B,IAAKiB,EAAG,IAAK,GACpC7D,IAAMA,IAAK,KAAK,KAAK4C,IAAKkB,EAAG,IAAK,GAClCpD,IAAMA,IAAK,KAAK,KAAK8B,IAAKwB,EAAG,IAAK,GAClC/C,IAAOA,IAAM,KAAK,KAAKuB,IAAKyB,EAAG,IAAK,GACpChD,IAAOA,IAAM,KAAK,KAAKwB,IAAKuB,EAAG,IAAK,GACpChE,IAAMA,IAAK,KAAK,KAAKyC,IAAKwB,EAAG,IAAK,GAClCvD,IAAMA,IAAK,KAAK,KAAK2B,IAAK8B,EAAG,IAAK,GAClClD,IAAOA,IAAM,KAAK,KAAKoB,IAAK+B,EAAG,IAAK,GACpCnD,IAAOA,IAAM,KAAK,KAAKqB,IAAK6B,EAAG,IAAK,GACpCnE,IAAMA,IAAK,KAAK,KAAKsC,IAAK8B,EAAG,IAAK,GAClC1D,IAAMA,IAAK,KAAK,KAAKwB,IAAKoC,EAAG,IAAK,GAClCrD,IAAOA,IAAM,KAAK,KAAKiB,IAAKqC,EAAG,IAAK,GACpCtD,IAAOA,IAAM,KAAK,KAAKkB,IAAKmC,EAAG,IAAK,GACpCtE,IAAMA,IAAK,KAAK,KAAKmC,IAAKoC,EAAG,IAAK,GAClC7D,IAAMA,IAAK,KAAK,KAAKqB,IAAK0C,EAAG,IAAK,GAClCxD,IAAOA,IAAM,KAAK,KAAKc,IAAK2C,EAAG,IAAK,GACpCzD,IAAOA,IAAM,KAAK,KAAKe,IAAKyC,EAAG,IAAK,GACpCzE,IAAMA,IAAK,KAAK,KAAKgC,IAAK0C,EAAG,IAAK,GAClChE,IAAMA,IAAK,KAAK,KAAKkB,IAAKgD,EAAG,IAAK,GAClC3D,IAAOA,IAAM,KAAK,KAAKW,IAAKiD,EAAG,IAAK,GACpC5D,IAAOA,IAAM,KAAK,KAAKY,IAAK+C,EAAG,IAAK,GACpC5E,IAAMA,IAAK,KAAK,KAAK6B,IAAKgD,EAAG,IAAK;AAClC,YAAIa,MAAS3kB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACtD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAMyE,OAAQ,MAAO,GACjDA,MAAO,UAEPhF,IAAK,KAAK,KAAKoC,IAAKe,EAAG,GACvB5C,IAAM,KAAK,KAAK6B,IAAKgB,EAAG,GACxB7C,IAAOA,IAAM,KAAK,KAAK8B,IAAKc,EAAG,IAAK,GACpC7D,IAAK,KAAK,KAAK+C,IAAKe,EAAG,GACvBpD,IAAMA,IAAK,KAAK,KAAKiC,IAAKqB,EAAG,IAAK,GAClC/C,IAAOA,IAAM,KAAK,KAAK0B,IAAKsB,EAAG,IAAK,GACpChD,IAAOA,IAAM,KAAK,KAAK2B,IAAKoB,EAAG,IAAK,GACpChE,IAAMA,IAAK,KAAK,KAAK4C,IAAKqB,EAAG,IAAK,GAClCvD,IAAMA,IAAK,KAAK,KAAK8B,IAAK2B,EAAG,IAAK,GAClClD,IAAOA,IAAM,KAAK,KAAKuB,IAAK4B,EAAG,IAAK,GACpCnD,IAAOA,IAAM,KAAK,KAAKwB,IAAK0B,EAAG,IAAK,GACpCnE,IAAMA,IAAK,KAAK,KAAKyC,IAAK2B,EAAG,IAAK,GAClC1D,IAAMA,IAAK,KAAK,KAAK2B,IAAKiC,EAAG,IAAK,GAClCrD,IAAOA,IAAM,KAAK,KAAKoB,IAAKkC,EAAG,IAAK,GACpCtD,IAAOA,IAAM,KAAK,KAAKqB,IAAKgC,EAAG,IAAK,GACpCtE,IAAMA,IAAK,KAAK,KAAKsC,IAAKiC,EAAG,IAAK,GAClC7D,IAAMA,IAAK,KAAK,KAAKwB,IAAKuC,EAAG,IAAK,GAClCxD,IAAOA,IAAM,KAAK,KAAKiB,IAAKwC,EAAG,IAAK,GACpCzD,IAAOA,IAAM,KAAK,KAAKkB,IAAKsC,EAAG,IAAK,GACpCzE,IAAMA,IAAK,KAAK,KAAKmC,IAAKuC,EAAG,IAAK,GAClChE,IAAMA,IAAK,KAAK,KAAKqB,IAAK6C,EAAG,IAAK,GAClC3D,IAAOA,IAAM,KAAK,KAAKc,IAAK8C,EAAG,IAAK,GACpC5D,IAAOA,IAAM,KAAK,KAAKe,IAAK4C,EAAG,IAAK,GACpC5E,IAAMA,IAAK,KAAK,KAAKgC,IAAK6C,EAAG,IAAK;AAClC,YAAIc,MAAS5kB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACtD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAM0E,OAAQ,MAAO,GACjDA,MAAO,UAEPjF,IAAK,KAAK,KAAKoC,IAAKkB,EAAG,GACvB/C,IAAM,KAAK,KAAK6B,IAAKmB,EAAG,GACxBhD,IAAOA,IAAM,KAAK,KAAK8B,IAAKiB,EAAG,IAAK,GACpChE,IAAK,KAAK,KAAK+C,IAAKkB,EAAG,GACvBvD,IAAMA,IAAK,KAAK,KAAKiC,IAAKwB,EAAG,IAAK,GAClClD,IAAOA,IAAM,KAAK,KAAK0B,IAAKyB,EAAG,IAAK,GACpCnD,IAAOA,IAAM,KAAK,KAAK2B,IAAKuB,EAAG,IAAK,GACpCnE,IAAMA,IAAK,KAAK,KAAK4C,IAAKwB,EAAG,IAAK,GAClC1D,IAAMA,IAAK,KAAK,KAAK8B,IAAK8B,EAAG,IAAK,GAClCrD,IAAOA,IAAM,KAAK,KAAKuB,IAAK+B,EAAG,IAAK,GACpCtD,IAAOA,IAAM,KAAK,KAAKwB,IAAK6B,EAAG,IAAK,GACpCtE,IAAMA,IAAK,KAAK,KAAKyC,IAAK8B,EAAG,IAAK,GAClC7D,IAAMA,IAAK,KAAK,KAAK2B,IAAKoC,EAAG,IAAK,GAClCxD,IAAOA,IAAM,KAAK,KAAKoB,IAAKqC,EAAG,IAAK,GACpCzD,IAAOA,IAAM,KAAK,KAAKqB,IAAKmC,EAAG,IAAK,GACpCzE,IAAMA,IAAK,KAAK,KAAKsC,IAAKoC,EAAG,IAAK,GAClChE,IAAMA,IAAK,KAAK,KAAKwB,IAAK0C,EAAG,IAAK,GAClC3D,IAAOA,IAAM,KAAK,KAAKiB,IAAK2C,EAAG,IAAK,GACpC5D,IAAOA,IAAM,KAAK,KAAKkB,IAAKyC,EAAG,IAAK,GACpC5E,IAAMA,IAAK,KAAK,KAAKmC,IAAK0C,EAAG,IAAK;AAClC,YAAIe,MAAS7kB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACtD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAM2E,OAAQ,MAAO,GACjDA,MAAO,UAEPlF,IAAK,KAAK,KAAKoC,IAAKqB,EAAG,GACvBlD,IAAM,KAAK,KAAK6B,IAAKsB,EAAG,GACxBnD,IAAOA,IAAM,KAAK,KAAK8B,IAAKoB,EAAG,IAAK,GACpCnE,IAAK,KAAK,KAAK+C,IAAKqB,EAAG,GACvB1D,IAAMA,IAAK,KAAK,KAAKiC,IAAK2B,EAAG,IAAK,GAClCrD,IAAOA,IAAM,KAAK,KAAK0B,IAAK4B,EAAG,IAAK,GACpCtD,IAAOA,IAAM,KAAK,KAAK2B,IAAK0B,EAAG,IAAK,GACpCtE,IAAMA,IAAK,KAAK,KAAK4C,IAAK2B,EAAG,IAAK,GAClC7D,IAAMA,IAAK,KAAK,KAAK8B,IAAKiC,EAAG,IAAK,GAClCxD,IAAOA,IAAM,KAAK,KAAKuB,IAAKkC,EAAG,IAAK,GACpCzD,IAAOA,IAAM,KAAK,KAAKwB,IAAKgC,EAAG,IAAK,GACpCzE,IAAMA,IAAK,KAAK,KAAKyC,IAAKiC,EAAG,IAAK,GAClChE,IAAMA,IAAK,KAAK,KAAK2B,IAAKuC,EAAG,IAAK,GAClC3D,IAAOA,IAAM,KAAK,KAAKoB,IAAKwC,EAAG,IAAK,GACpC5D,IAAOA,IAAM,KAAK,KAAKqB,IAAKsC,EAAG,IAAK,GACpC5E,IAAMA,IAAK,KAAK,KAAKsC,IAAKuC,EAAG,IAAK;AAClC,YAAIgB,MAAS9kB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACtD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAM4E,OAAQ,MAAO,GACjDA,MAAO,UAEPnF,IAAK,KAAK,KAAKoC,IAAKwB,EAAG,GACvBrD,IAAM,KAAK,KAAK6B,IAAKyB,EAAG,GACxBtD,IAAOA,IAAM,KAAK,KAAK8B,IAAKuB,EAAG,IAAK,GACpCtE,IAAK,KAAK,KAAK+C,IAAKwB,EAAG,GACvB7D,IAAMA,IAAK,KAAK,KAAKiC,IAAK8B,EAAG,IAAK,GAClCxD,IAAOA,IAAM,KAAK,KAAK0B,IAAK+B,EAAG,IAAK,GACpCzD,IAAOA,IAAM,KAAK,KAAK2B,IAAK6B,EAAG,IAAK,GACpCzE,IAAMA,IAAK,KAAK,KAAK4C,IAAK8B,EAAG,IAAK,GAClChE,IAAMA,IAAK,KAAK,KAAK8B,IAAKoC,EAAG,IAAK,GAClC3D,IAAOA,IAAM,KAAK,KAAKuB,IAAKqC,EAAG,IAAK,GACpC5D,IAAOA,IAAM,KAAK,KAAKwB,IAAKmC,EAAG,IAAK,GACpC5E,IAAMA,IAAK,KAAK,KAAKyC,IAAKoC,EAAG,IAAK;AAClC,YAAIiB,MAAS/kB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACtD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAM6E,OAAQ,MAAO,GACjDA,MAAO,UAEPpF,IAAK,KAAK,KAAKoC,IAAK2B,EAAG,GACvBxD,IAAM,KAAK,KAAK6B,IAAK4B,EAAG,GACxBzD,IAAOA,IAAM,KAAK,KAAK8B,IAAK0B,EAAG,IAAK,GACpCzE,IAAK,KAAK,KAAK+C,IAAK2B,EAAG,GACvBhE,IAAMA,IAAK,KAAK,KAAKiC,IAAKiC,EAAG,IAAK,GAClC3D,IAAOA,IAAM,KAAK,KAAK0B,IAAKkC,EAAG,IAAK,GACpC5D,IAAOA,IAAM,KAAK,KAAK2B,IAAKgC,EAAG,IAAK,GACpC5E,IAAMA,IAAK,KAAK,KAAK4C,IAAKiC,EAAG,IAAK;AAClC,YAAIkB,MAAShlB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACtD,QAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAM8E,OAAQ,MAAO,GACjDA,MAAO,UAEPrF,IAAK,KAAK,KAAKoC,IAAK8B,EAAG,GACvB3D,IAAM,KAAK,KAAK6B,IAAK+B,EAAG,GACxB5D,IAAOA,IAAM,KAAK,KAAK8B,IAAK6B,EAAG,IAAK,GACpC5E,IAAK,KAAK,KAAK+C,IAAK8B,EAAG;AACvB,YAAImB,MAASjlB,IAAI2f,IAAM,OAAOO,IAAM,SAAW,MAAO;AACtD,eAAAlgB,KAAOif,KAAMiB,MAAQ,MAAO,MAAM+E,OAAQ,MAAO,GACjDA,MAAO,UACPhF,EAAE,CAAC,IAAI8D,IACP9D,EAAE,CAAC,IAAI+D,IACP/D,EAAE,CAAC,IAAIgE,IACPhE,EAAE,CAAC,IAAIiE,IACPjE,EAAE,CAAC,IAAIkE,IACPlE,EAAE,CAAC,IAAImE,IACPnE,EAAE,CAAC,IAAIoE,IACPpE,EAAE,CAAC,IAAIqE,IACPrE,EAAE,CAAC,IAAIsE,IACPtE,EAAE,CAAC,IAAIuE,IACPvE,EAAE,EAAE,IAAIwE,IACRxE,EAAE,EAAE,IAAIyE,IACRzE,EAAE,EAAE,IAAI0E,IACR1E,EAAE,EAAE,IAAI2E,IACR3E,EAAE,EAAE,IAAI4E,IACR5E,EAAE,EAAE,IAAI6E,IACR7E,EAAE,EAAE,IAAI8E,IACR9E,EAAE,EAAE,IAAI+E,IACR/E,EAAE,EAAE,IAAIgF,IACJjlB,MAAM,MACRigB,EAAE,EAAE,IAAIjgB,GACRme,EAAI,WAECA;AAAA,MACR;AAGD,MAAK,KAAK,SACR6B,IAAcP;AAGhB,eAASyF,EAAUxF,GAAMrD,GAAK8B,GAAK;AACjC,QAAAA,EAAI,WAAW9B,EAAI,WAAWqD,EAAK,UACnCvB,EAAI,SAASuB,EAAK,SAASrD,EAAI;AAI/B,iBAFI+B,IAAQ,GACR+G,IAAU,GACLvF,IAAI,GAAGA,IAAIzB,EAAI,SAAS,GAAGyB,KAAK;AAGvC,cAAIC,IAASsF;AACb,UAAAA,IAAU;AAGV,mBAFIrF,IAAQ1B,IAAQ,UAChB2B,IAAO,KAAK,IAAIH,GAAGvD,EAAI,SAAS,CAAC,GAC5BI,IAAI,KAAK,IAAI,GAAGmD,IAAIF,EAAK,SAAS,CAAC,GAAGjD,KAAKsD,GAAMtD,KAAK;AAC7D,gBAAI9D,IAAIiH,IAAInD,GACR3c,KAAI4f,EAAK,MAAM/G,CAAC,IAAI,GACpB5Y,KAAIsc,EAAI,MAAMI,CAAC,IAAI,GACnBQ,KAAInd,KAAIC,IAER4f,KAAK1C,KAAI;AACb,YAAA4C,IAAUA,KAAW5C,KAAI,WAAa,KAAM,GAC5C0C,KAAMA,KAAKG,IAAS,GACpBA,IAAQH,KAAK,UACbE,IAAUA,KAAUF,OAAO,MAAO,GAElCwF,KAAWtF,MAAW,IACtBA,KAAU;AAAA,UAClB;AACM,UAAA1B,EAAI,MAAMyB,CAAC,IAAIE,GACf1B,IAAQyB,GACRA,IAASsF;AAAA,QACf;AACI,eAAI/G,MAAU,IACZD,EAAI,MAAMyB,CAAC,IAAIxB,IAEfD,EAAI,UAGCA,EAAI,OAAQ;AAAA,MACvB;AAEE,eAASiH,EAAY1F,GAAMrD,GAAK8B,GAAK;AAInC,eAAO+G,EAASxF,GAAMrD,GAAK8B,CAAG;AAAA,MAClC;AAEE,MAAApC,EAAG,UAAU,QAAQ,SAAgBM,GAAK8B,GAAK;AAC7C,YAAIS,GACAnkB,IAAM,KAAK,SAAS4hB,EAAI;AAC5B,eAAI,KAAK,WAAW,MAAMA,EAAI,WAAW,KACvCuC,IAAMoB,EAAY,MAAM3D,GAAK8B,CAAG,IACvB1jB,IAAM,KACfmkB,IAAMa,EAAW,MAAMpD,GAAK8B,CAAG,IACtB1jB,IAAM,OACfmkB,IAAMsG,EAAS,MAAM7I,GAAK8B,CAAG,IAE7BS,IAAMwG,EAAW,MAAM/I,GAAK8B,CAAG,GAG1BS;AAAA,MACR,GAuMD7C,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,YAAI8B,IAAM,IAAIpC,EAAG,IAAI;AACrB,eAAAoC,EAAI,QAAQ,IAAI,MAAM,KAAK,SAAS9B,EAAI,MAAM,GACvC,KAAK,MAAMA,GAAK8B,CAAG;AAAA,MAC3B,GAGDpC,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,YAAI8B,IAAM,IAAIpC,EAAG,IAAI;AACrB,eAAAoC,EAAI,QAAQ,IAAI,MAAM,KAAK,SAAS9B,EAAI,MAAM,GACvC+I,EAAW,MAAM/I,GAAK8B,CAAG;AAAA,MACjC,GAGDpC,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,MAAK,EAAG,MAAMA,GAAK,IAAI;AAAA,MACpC,GAEDN,EAAG,UAAU,QAAQ,SAAgBM,GAAK;AACxC,YAAIgJ,IAAWhJ,IAAM;AACrB,QAAIgJ,MAAUhJ,IAAM,CAACA,IAErBZ,EAAO,OAAOY,KAAQ,QAAQ,GAC9BZ,EAAOY,IAAM,QAAS;AAItB,iBADI+B,IAAQ,GACHzF,IAAI,GAAGA,IAAI,KAAK,QAAQA,KAAK;AACpC,cAAI+D,KAAK,KAAK,MAAM/D,CAAC,IAAI,KAAK0D,GAC1BsD,KAAMjD,IAAI,aAAc0B,IAAQ;AACpC,UAAAA,MAAU,IACVA,KAAU1B,IAAI,WAAa,GAE3B0B,KAASuB,MAAO,IAChB,KAAK,MAAMhH,CAAC,IAAIgH,IAAK;AAAA,QAC3B;AAEI,eAAIvB,MAAU,MACZ,KAAK,MAAMzF,CAAC,IAAIyF,GAChB,KAAK,WAGAiH,IAAW,KAAK,KAAI,IAAK;AAAA,MACjC,GAEDtJ,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,QAAQ,MAAMA,CAAG;AAAA,MAC9B,GAGDN,EAAG,UAAU,MAAM,WAAgB;AACjC,eAAO,KAAK,IAAI,IAAI;AAAA,MACrB,GAGDA,EAAG,UAAU,OAAO,WAAiB;AACnC,eAAO,KAAK,KAAK,KAAK,MAAK,CAAE;AAAA,MAC9B,GAGDA,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,YAAIK,IAAIwC,EAAW7C,CAAG;AACtB,YAAIK,EAAE,WAAW,EAAG,QAAO,IAAIX,EAAG,CAAC;AAInC,iBADI6C,IAAM,MACDjG,IAAI,GAAGA,IAAI+D,EAAE,UAChBA,EAAE/D,CAAC,MAAM,GADeA,KAAKiG,IAAMA,EAAI,IAAG;AAC9C;AAGF,YAAI,EAAEjG,IAAI+D,EAAE;AACV,mBAAS4I,IAAI1G,EAAI,IAAG,GAAIjG,IAAI+D,EAAE,QAAQ/D,KAAK2M,IAAIA,EAAE,IAAG;AAClD,YAAI5I,EAAE/D,CAAC,MAAM,MAEbiG,IAAMA,EAAI,IAAI0G,CAAC;AAInB,eAAO1G;AAAA,MACR,GAGD7C,EAAG,UAAU,SAAS,SAAiBnR,GAAM;AAC3C,QAAA6Q,EAAO,OAAO7Q,KAAS,YAAYA,KAAQ,CAAC;AAC5C,YAAIqS,IAAIrS,IAAO,IACX2a,KAAK3a,IAAOqS,KAAK,IACjBuI,IAAa,aAAe,KAAKvI,KAAQ,KAAKA,GAC9CtE;AAEJ,YAAIsE,MAAM,GAAG;AACX,cAAImB,IAAQ;AAEZ,eAAKzF,IAAI,GAAGA,IAAI,KAAK,QAAQA,KAAK;AAChC,gBAAI8M,IAAW,KAAK,MAAM9M,CAAC,IAAI6M,GAC3BxlB,KAAM,KAAK,MAAM2Y,CAAC,IAAI,KAAK8M,KAAaxI;AAC5C,iBAAK,MAAMtE,CAAC,IAAI3Y,IAAIoe,GACpBA,IAAQqH,MAAc,KAAKxI;AAAA,UACnC;AAEM,UAAImB,MACF,KAAK,MAAMzF,CAAC,IAAIyF,GAChB,KAAK;AAAA,QAEb;AAEI,YAAImH,MAAM,GAAG;AACX,eAAK5M,IAAI,KAAK,SAAS,GAAGA,KAAK,GAAGA;AAChC,iBAAK,MAAMA,IAAI4M,CAAC,IAAI,KAAK,MAAM5M,CAAC;AAGlC,eAAKA,IAAI,GAAGA,IAAI4M,GAAG5M;AACjB,iBAAK,MAAMA,CAAC,IAAI;AAGlB,eAAK,UAAU4M;AAAA,QACrB;AAEI,eAAO,KAAK,OAAQ;AAAA,MACrB,GAEDxJ,EAAG,UAAU,QAAQ,SAAgBnR,GAAM;AAEzC,eAAA6Q,EAAO,KAAK,aAAa,CAAC,GACnB,KAAK,OAAO7Q,CAAI;AAAA,MACxB,GAKDmR,EAAG,UAAU,SAAS,SAAiBnR,GAAM8a,GAAMC,GAAU;AAC3D,QAAAlK,EAAO,OAAO7Q,KAAS,YAAYA,KAAQ,CAAC;AAC5C,YAAIgb;AACJ,QAAIF,IACFE,KAAKF,IAAQA,IAAO,MAAO,KAE3BE,IAAI;AAGN,YAAI3I,IAAIrS,IAAO,IACX2a,IAAI,KAAK,KAAK3a,IAAOqS,KAAK,IAAI,KAAK,MAAM,GACzC4I,IAAO,WAAc,aAAc5I,KAAMA,GACzC6I,IAAcH;AAMlB,YAJAC,KAAKL,GACLK,IAAI,KAAK,IAAI,GAAGA,CAAC,GAGbE,GAAa;AACf,mBAASnN,IAAI,GAAGA,IAAI4M,GAAG5M;AACrB,YAAAmN,EAAY,MAAMnN,CAAC,IAAI,KAAK,MAAMA,CAAC;AAErC,UAAAmN,EAAY,SAASP;AAAA,QAC3B;AAEI,YAAIA,MAAM,EAEH,KAAI,KAAK,SAASA;AAEvB,eADA,KAAK,UAAUA,GACV5M,IAAI,GAAGA,IAAI,KAAK,QAAQA;AAC3B,iBAAK,MAAMA,CAAC,IAAI,KAAK,MAAMA,IAAI4M,CAAC;AAAA;AAGlC,eAAK,MAAM,CAAC,IAAI,GAChB,KAAK,SAAS;AAGhB,YAAInH,IAAQ;AACZ,aAAKzF,IAAI,KAAK,SAAS,GAAGA,KAAK,MAAMyF,MAAU,KAAKzF,KAAKiN,IAAIjN,KAAK;AAChE,cAAI8E,KAAO,KAAK,MAAM9E,CAAC,IAAI;AAC3B,eAAK,MAAMA,CAAC,IAAKyF,KAAU,KAAKnB,IAAOQ,OAASR,GAChDmB,IAAQX,KAAOoI;AAAA,QACrB;AAGI,eAAIC,KAAe1H,MAAU,MAC3B0H,EAAY,MAAMA,EAAY,QAAQ,IAAI1H,IAGxC,KAAK,WAAW,MAClB,KAAK,MAAM,CAAC,IAAI,GAChB,KAAK,SAAS,IAGT,KAAK,OAAQ;AAAA,MACrB,GAEDrC,EAAG,UAAU,QAAQ,SAAgBnR,GAAM8a,GAAMC,GAAU;AAEzD,eAAAlK,EAAO,KAAK,aAAa,CAAC,GACnB,KAAK,OAAO7Q,GAAM8a,GAAMC,CAAQ;AAAA,MACxC,GAGD5J,EAAG,UAAU,OAAO,SAAenR,GAAM;AACvC,eAAO,KAAK,QAAQ,MAAMA,CAAI;AAAA,MAC/B,GAEDmR,EAAG,UAAU,QAAQ,SAAgBnR,GAAM;AACzC,eAAO,KAAK,QAAQ,OAAOA,CAAI;AAAA,MAChC,GAGDmR,EAAG,UAAU,OAAO,SAAenR,GAAM;AACvC,eAAO,KAAK,QAAQ,MAAMA,CAAI;AAAA,MAC/B,GAEDmR,EAAG,UAAU,QAAQ,SAAgBnR,GAAM;AACzC,eAAO,KAAK,QAAQ,OAAOA,CAAI;AAAA,MAChC,GAGDmR,EAAG,UAAU,QAAQ,SAAgBoD,GAAK;AACxC,QAAA1D,EAAO,OAAO0D,KAAQ,YAAYA,KAAO,CAAC;AAC1C,YAAIlC,IAAIkC,IAAM,IACVoG,KAAKpG,IAAMlC,KAAK,IAChBqI,IAAI,KAAKrI;AAGb,YAAI,KAAK,UAAUsI,EAAG,QAAO;AAG7B,YAAI7I,IAAI,KAAK,MAAM6I,CAAC;AAEpB,eAAO,CAAC,EAAE7I,IAAI4I;AAAA,MACf,GAGDvJ,EAAG,UAAU,SAAS,SAAiBnR,GAAM;AAC3C,QAAA6Q,EAAO,OAAO7Q,KAAS,YAAYA,KAAQ,CAAC;AAC5C,YAAIqS,IAAIrS,IAAO,IACX2a,KAAK3a,IAAOqS,KAAK;AAIrB,YAFAxB,EAAO,KAAK,aAAa,GAAG,yCAAyC,GAEjE,KAAK,UAAU8J;AACjB,iBAAO;AAQT,YALItI,MAAM,KACRsI,KAEF,KAAK,SAAS,KAAK,IAAIA,GAAG,KAAK,MAAM,GAEjCtI,MAAM,GAAG;AACX,cAAI4I,IAAO,WAAc,aAAc5I,KAAMA;AAC7C,eAAK,MAAM,KAAK,SAAS,CAAC,KAAK4I;AAAA,QACrC;AAEI,eAAO,KAAK,OAAQ;AAAA,MACrB,GAGD9J,EAAG,UAAU,QAAQ,SAAgBnR,GAAM;AACzC,eAAO,KAAK,QAAQ,OAAOA,CAAI;AAAA,MAChC,GAGDmR,EAAG,UAAU,QAAQ,SAAgBM,GAAK;AAGxC,eAFAZ,EAAO,OAAOY,KAAQ,QAAQ,GAC9BZ,EAAOY,IAAM,QAAS,GAClBA,IAAM,IAAU,KAAK,MAAM,CAACA,CAAG,IAG/B,KAAK,aAAa,IAChB,KAAK,WAAW,MAAM,KAAK,MAAM,CAAC,IAAI,MAAMA,KAC9C,KAAK,MAAM,CAAC,IAAIA,KAAO,KAAK,MAAM,CAAC,IAAI,IACvC,KAAK,WAAW,GACT,SAGT,KAAK,WAAW,GAChB,KAAK,MAAMA,CAAG,GACd,KAAK,WAAW,GACT,QAIF,KAAK,OAAOA,CAAG;AAAA,MACvB,GAEDN,EAAG,UAAU,SAAS,SAAiBM,GAAK;AAC1C,aAAK,MAAM,CAAC,KAAKA;AAGjB,iBAAS1D,IAAI,GAAGA,IAAI,KAAK,UAAU,KAAK,MAAMA,CAAC,KAAK,UAAWA;AAC7D,eAAK,MAAMA,CAAC,KAAK,UACbA,MAAM,KAAK,SAAS,IACtB,KAAK,MAAMA,IAAI,CAAC,IAAI,IAEpB,KAAK,MAAMA,IAAI,CAAC;AAGpB,oBAAK,SAAS,KAAK,IAAI,KAAK,QAAQA,IAAI,CAAC,GAElC;AAAA,MACR,GAGDoD,EAAG,UAAU,QAAQ,SAAgBM,GAAK;AAGxC,YAFAZ,EAAO,OAAOY,KAAQ,QAAQ,GAC9BZ,EAAOY,IAAM,QAAS,GAClBA,IAAM,EAAG,QAAO,KAAK,MAAM,CAACA,CAAG;AAEnC,YAAI,KAAK,aAAa;AACpB,sBAAK,WAAW,GAChB,KAAK,MAAMA,CAAG,GACd,KAAK,WAAW,GACT;AAKT,YAFA,KAAK,MAAM,CAAC,KAAKA,GAEb,KAAK,WAAW,KAAK,KAAK,MAAM,CAAC,IAAI;AACvC,eAAK,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAC7B,KAAK,WAAW;AAAA;AAGhB,mBAAS1D,IAAI,GAAGA,IAAI,KAAK,UAAU,KAAK,MAAMA,CAAC,IAAI,GAAGA;AACpD,iBAAK,MAAMA,CAAC,KAAK,UACjB,KAAK,MAAMA,IAAI,CAAC,KAAK;AAIzB,eAAO,KAAK,OAAQ;AAAA,MACrB,GAEDoD,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,QAAQ,MAAMA,CAAG;AAAA,MAC9B,GAEDN,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,QAAQ,MAAMA,CAAG;AAAA,MAC9B,GAEDN,EAAG,UAAU,OAAO,WAAiB;AACnC,oBAAK,WAAW,GAET;AAAA,MACR,GAEDA,EAAG,UAAU,MAAM,WAAgB;AACjC,eAAO,KAAK,MAAO,EAAC,KAAM;AAAA,MAC3B,GAEDA,EAAG,UAAU,eAAe,SAAuBM,GAAKpf,GAAK8hB,GAAO;AAClE,YAAItkB,IAAM4hB,EAAI,SAAS0C,GACnBpG;AAEJ,aAAK,QAAQle,CAAG;AAEhB,YAAIiiB,GACA0B,IAAQ;AACZ,aAAKzF,IAAI,GAAGA,IAAI0D,EAAI,QAAQ1D,KAAK;AAC/B,UAAA+D,KAAK,KAAK,MAAM/D,IAAIoG,CAAK,IAAI,KAAKX;AAClC,cAAI7B,KAASF,EAAI,MAAM1D,CAAC,IAAI,KAAK1b;AACjC,UAAAyf,KAAKH,IAAQ,UACb6B,KAAS1B,KAAK,OAAQH,IAAQ,WAAa,IAC3C,KAAK,MAAM5D,IAAIoG,CAAK,IAAIrC,IAAI;AAAA,QAClC;AACI,eAAO/D,IAAI,KAAK,SAASoG,GAAOpG;AAC9B,UAAA+D,KAAK,KAAK,MAAM/D,IAAIoG,CAAK,IAAI,KAAKX,GAClCA,IAAQ1B,KAAK,IACb,KAAK,MAAM/D,IAAIoG,CAAK,IAAIrC,IAAI;AAG9B,YAAI0B,MAAU,EAAG,QAAO,KAAK,OAAQ;AAKrC,aAFA3C,EAAO2C,MAAU,EAAE,GACnBA,IAAQ,GACHzF,IAAI,GAAGA,IAAI,KAAK,QAAQA;AAC3B,UAAA+D,IAAI,EAAE,KAAK,MAAM/D,CAAC,IAAI,KAAKyF,GAC3BA,IAAQ1B,KAAK,IACb,KAAK,MAAM/D,CAAC,IAAI+D,IAAI;AAEtB,oBAAK,WAAW,GAET,KAAK,OAAQ;AAAA,MACrB,GAEDX,EAAG,UAAU,WAAW,SAAmBM,GAAKzc,GAAM;AACpD,YAAImf,IAAQ,KAAK,SAAS1C,EAAI,QAE1Bvc,IAAI,KAAK,MAAO,GAChB,IAAIuc,GAGJ0J,IAAM,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,GAC9BC,IAAU,KAAK,WAAWD,CAAG;AACjC,QAAAhH,IAAQ,KAAKiH,GACTjH,MAAU,MACZ,IAAI,EAAE,MAAMA,CAAK,GACjBjf,EAAE,OAAOif,CAAK,GACdgH,IAAM,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI;AAIhC,YAAIE,IAAInmB,EAAE,SAAS,EAAE,QACjBwlB;AAEJ,YAAI1lB,MAAS,OAAO;AAClB,UAAA0lB,IAAI,IAAIvJ,EAAG,IAAI,GACfuJ,EAAE,SAASW,IAAI,GACfX,EAAE,QAAQ,IAAI,MAAMA,EAAE,MAAM;AAC5B,mBAAS3M,IAAI,GAAGA,IAAI2M,EAAE,QAAQ3M;AAC5B,YAAA2M,EAAE,MAAM3M,CAAC,IAAI;AAAA,QAErB;AAEI,YAAIuN,KAAOpmB,EAAE,MAAK,EAAG,aAAa,GAAG,GAAGmmB,CAAC;AACzC,QAAIC,GAAK,aAAa,MACpBpmB,IAAIomB,IACAZ,MACFA,EAAE,MAAMW,CAAC,IAAI;AAIjB,iBAASxJ,KAAIwJ,IAAI,GAAGxJ,MAAK,GAAGA,MAAK;AAC/B,cAAI0J,MAAMrmB,EAAE,MAAM,EAAE,SAAS2c,EAAC,IAAI,KAAK,YACpC3c,EAAE,MAAM,EAAE,SAAS2c,KAAI,CAAC,IAAI;AAO/B,eAHA0J,KAAK,KAAK,IAAKA,KAAKJ,IAAO,GAAG,QAAS,GAEvCjmB,EAAE,aAAa,GAAGqmB,IAAI1J,EAAC,GAChB3c,EAAE,aAAa;AACpB,YAAAqmB,MACArmB,EAAE,WAAW,GACbA,EAAE,aAAa,GAAG,GAAG2c,EAAC,GACjB3c,EAAE,aACLA,EAAE,YAAY;AAGlB,UAAIwlB,MACFA,EAAE,MAAM7I,EAAC,IAAI0J;AAAA,QAErB;AACI,eAAIb,KACFA,EAAE,OAAQ,GAEZxlB,EAAE,OAAQ,GAGNF,MAAS,SAASmf,MAAU,KAC9Bjf,EAAE,OAAOif,CAAK,GAGT;AAAA,UACL,KAAKuG,KAAK;AAAA,UACV,KAAKxlB;AAAA,QACN;AAAA,MACF,GAMDic,EAAG,UAAU,SAAS,SAAiBM,GAAKzc,GAAMwmB,GAAU;AAG1D,YAFA3K,EAAO,CAACY,EAAI,QAAQ,GAEhB,KAAK;AACP,iBAAO;AAAA,YACL,KAAK,IAAIN,EAAG,CAAC;AAAA,YACb,KAAK,IAAIA,EAAG,CAAC;AAAA,UACd;AAGH,YAAIxf,GAAKqc,GAAKgG;AACd,eAAI,KAAK,aAAa,KAAKvC,EAAI,aAAa,KAC1CuC,IAAM,KAAK,IAAG,EAAG,OAAOvC,GAAKzc,CAAI,GAE7BA,MAAS,UACXrD,IAAMqiB,EAAI,IAAI,IAAK,IAGjBhf,MAAS,UACXgZ,IAAMgG,EAAI,IAAI,IAAK,GACfwH,KAAYxN,EAAI,aAAa,KAC/BA,EAAI,KAAKyD,CAAG,IAIT;AAAA,UACL,KAAK9f;AAAA,UACL,KAAKqc;AAAA,QACN,KAGC,KAAK,aAAa,KAAKyD,EAAI,aAAa,KAC1CuC,IAAM,KAAK,OAAOvC,EAAI,IAAG,GAAIzc,CAAI,GAE7BA,MAAS,UACXrD,IAAMqiB,EAAI,IAAI,IAAK,IAGd;AAAA,UACL,KAAKriB;AAAA,UACL,KAAKqiB,EAAI;AAAA,QACV,KAGE,KAAK,WAAWvC,EAAI,YACvBuC,IAAM,KAAK,IAAK,EAAC,OAAOvC,EAAI,IAAK,GAAEzc,CAAI,GAEnCA,MAAS,UACXgZ,IAAMgG,EAAI,IAAI,IAAK,GACfwH,KAAYxN,EAAI,aAAa,KAC/BA,EAAI,KAAKyD,CAAG,IAIT;AAAA,UACL,KAAKuC,EAAI;AAAA,UACT,KAAKhG;AAAA,QACN,KAMCyD,EAAI,SAAS,KAAK,UAAU,KAAK,IAAIA,CAAG,IAAI,IACvC;AAAA,UACL,KAAK,IAAIN,EAAG,CAAC;AAAA,UACb,KAAK;AAAA,QACN,IAICM,EAAI,WAAW,IACbzc,MAAS,QACJ;AAAA,UACL,KAAK,KAAK,KAAKyc,EAAI,MAAM,CAAC,CAAC;AAAA,UAC3B,KAAK;AAAA,QACN,IAGCzc,MAAS,QACJ;AAAA,UACL,KAAK;AAAA,UACL,KAAK,IAAImc,EAAG,KAAK,MAAMM,EAAI,MAAM,CAAC,CAAC,CAAC;AAAA,QACrC,IAGI;AAAA,UACL,KAAK,KAAK,KAAKA,EAAI,MAAM,CAAC,CAAC;AAAA,UAC3B,KAAK,IAAIN,EAAG,KAAK,MAAMM,EAAI,MAAM,CAAC,CAAC,CAAC;AAAA,QACrC,IAGI,KAAK,SAASA,GAAKzc,CAAI;AAAA,MAC/B,GAGDmc,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAO,KAAK,OAAOA,GAAK,OAAO,EAAK,EAAE;AAAA,MACvC,GAGDN,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAO,KAAK,OAAOA,GAAK,OAAO,EAAK,EAAE;AAAA,MACvC,GAEDN,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,OAAOA,GAAK,OAAO,EAAI,EAAE;AAAA,MACtC,GAGDN,EAAG,UAAU,WAAW,SAAmBM,GAAK;AAC9C,YAAIgK,IAAK,KAAK,OAAOhK,CAAG;AAGxB,YAAIgK,EAAG,IAAI,OAAM,EAAI,QAAOA,EAAG;AAE/B,YAAIzN,IAAMyN,EAAG,IAAI,aAAa,IAAIA,EAAG,IAAI,KAAKhK,CAAG,IAAIgK,EAAG,KAEpDC,IAAOjK,EAAI,MAAM,CAAC,GAClBkK,IAAKlK,EAAI,MAAM,CAAC,GAChBmD,IAAM5G,EAAI,IAAI0N,CAAI;AAGtB,eAAI9G,IAAM,KAAM+G,MAAO,KAAK/G,MAAQ,IAAW6G,EAAG,MAG3CA,EAAG,IAAI,aAAa,IAAIA,EAAG,IAAI,MAAM,CAAC,IAAIA,EAAG,IAAI,MAAM,CAAC;AAAA,MAChE,GAEDtK,EAAG,UAAU,QAAQ,SAAgBM,GAAK;AACxC,YAAIgJ,IAAWhJ,IAAM;AACrB,QAAIgJ,MAAUhJ,IAAM,CAACA,IAErBZ,EAAOY,KAAO,QAAS;AAIvB,iBAHI,KAAK,KAAK,MAAMA,GAEhBmK,IAAM,GACD7N,IAAI,KAAK,SAAS,GAAGA,KAAK,GAAGA;AACpC,UAAA6N,KAAO,IAAIA,KAAO,KAAK,MAAM7N,CAAC,IAAI,MAAM0D;AAG1C,eAAOgJ,IAAW,CAACmB,IAAMA;AAAA,MAC1B,GAGDzK,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,MAAMA,CAAG;AAAA,MACtB,GAGDN,EAAG,UAAU,QAAQ,SAAgBM,GAAK;AACxC,YAAIgJ,IAAWhJ,IAAM;AACrB,QAAIgJ,MAAUhJ,IAAM,CAACA,IAErBZ,EAAOY,KAAO,QAAS;AAGvB,iBADI+B,IAAQ,GACHzF,IAAI,KAAK,SAAS,GAAGA,KAAK,GAAGA,KAAK;AACzC,cAAI+D,KAAK,KAAK,MAAM/D,CAAC,IAAI,KAAKyF,IAAQ;AACtC,eAAK,MAAMzF,CAAC,IAAK+D,IAAIL,IAAO,GAC5B+B,IAAQ1B,IAAIL;AAAA,QAClB;AAEI,oBAAK,OAAQ,GACNgJ,IAAW,KAAK,KAAI,IAAK;AAAA,MACjC,GAEDtJ,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,QAAQ,MAAMA,CAAG;AAAA,MAC9B,GAEDN,EAAG,UAAU,OAAO,SAAe0K,GAAG;AACpC,QAAAhL,EAAOgL,EAAE,aAAa,CAAC,GACvBhL,EAAO,CAACgL,EAAE,QAAQ;AAElB,YAAIC,IAAI,MACJC,IAAIF,EAAE,MAAO;AAEjB,QAAIC,EAAE,aAAa,IACjBA,IAAIA,EAAE,KAAKD,CAAC,IAEZC,IAAIA,EAAE,MAAO;AAaf,iBATIE,IAAI,IAAI7K,EAAG,CAAC,GACZ8K,IAAI,IAAI9K,EAAG,CAAC,GAGZ+K,IAAI,IAAI/K,EAAG,CAAC,GACZgL,IAAI,IAAIhL,EAAG,CAAC,GAEZiL,IAAI,GAEDN,EAAE,OAAM,KAAMC,EAAE,OAAM;AAC3B,UAAAD,EAAE,OAAO,CAAC,GACVC,EAAE,OAAO,CAAC,GACV,EAAEK;AAMJ,iBAHIC,IAAKN,EAAE,MAAO,GACdO,IAAKR,EAAE,MAAO,GAEX,CAACA,EAAE,YAAU;AAClB,mBAAS/N,KAAI,GAAGwO,KAAK,GAAI,EAAAT,EAAE,MAAM,CAAC,IAAIS,OAAaxO,KAAI,IAAI,EAAEA,IAAGwO,OAAO,EAAE;AACzE,cAAIxO,KAAI;AAEN,iBADA+N,EAAE,OAAO/N,EAAC,GACHA,OAAM;AACX,eAAIiO,EAAE,MAAK,KAAMC,EAAE,MAAK,OACtBD,EAAE,KAAKK,CAAE,GACTJ,EAAE,KAAKK,CAAE,IAGXN,EAAE,OAAO,CAAC,GACVC,EAAE,OAAO,CAAC;AAId,mBAASpK,KAAI,GAAG2K,KAAK,GAAI,EAAAT,EAAE,MAAM,CAAC,IAAIS,OAAa3K,KAAI,IAAI,EAAEA,IAAG2K,OAAO,EAAE;AACzE,cAAI3K,KAAI;AAEN,iBADAkK,EAAE,OAAOlK,EAAC,GACHA,OAAM;AACX,eAAIqK,EAAE,MAAK,KAAMC,EAAE,MAAK,OACtBD,EAAE,KAAKG,CAAE,GACTF,EAAE,KAAKG,CAAE,IAGXJ,EAAE,OAAO,CAAC,GACVC,EAAE,OAAO,CAAC;AAId,UAAIL,EAAE,IAAIC,CAAC,KAAK,KACdD,EAAE,KAAKC,CAAC,GACRC,EAAE,KAAKE,CAAC,GACRD,EAAE,KAAKE,CAAC,MAERJ,EAAE,KAAKD,CAAC,GACRI,EAAE,KAAKF,CAAC,GACRG,EAAE,KAAKF,CAAC;AAAA,QAEhB;AAEI,eAAO;AAAA,UACL,GAAGC;AAAA,UACH,GAAGC;AAAA,UACH,KAAKJ,EAAE,OAAOK,CAAC;AAAA,QAChB;AAAA,MACF,GAKDjL,EAAG,UAAU,SAAS,SAAiB0K,GAAG;AACxC,QAAAhL,EAAOgL,EAAE,aAAa,CAAC,GACvBhL,EAAO,CAACgL,EAAE,QAAQ;AAElB,YAAI3mB,IAAI,MACJC,IAAI0mB,EAAE,MAAO;AAEjB,QAAI3mB,EAAE,aAAa,IACjBA,IAAIA,EAAE,KAAK2mB,CAAC,IAEZ3mB,IAAIA,EAAE,MAAO;AAQf,iBALIunB,IAAK,IAAItL,EAAG,CAAC,GACbuL,IAAK,IAAIvL,EAAG,CAAC,GAEbwL,IAAQxnB,EAAE,MAAO,GAEdD,EAAE,KAAK,CAAC,IAAI,KAAKC,EAAE,KAAK,CAAC,IAAI,KAAG;AACrC,mBAAS4Y,IAAI,GAAGwO,IAAK,GAAI,EAAArnB,EAAE,MAAM,CAAC,IAAIqnB,MAAaxO,IAAI,IAAI,EAAEA,GAAGwO,MAAO,EAAE;AACzE,cAAIxO,IAAI;AAEN,iBADA7Y,EAAE,OAAO6Y,CAAC,GACHA,MAAM;AACX,cAAI0O,EAAG,WACLA,EAAG,KAAKE,CAAK,GAGfF,EAAG,OAAO,CAAC;AAIf,mBAAS5K,IAAI,GAAG2K,IAAK,GAAI,EAAArnB,EAAE,MAAM,CAAC,IAAIqnB,MAAa3K,IAAI,IAAI,EAAEA,GAAG2K,MAAO,EAAE;AACzE,cAAI3K,IAAI;AAEN,iBADA1c,EAAE,OAAO0c,CAAC,GACHA,MAAM;AACX,cAAI6K,EAAG,WACLA,EAAG,KAAKC,CAAK,GAGfD,EAAG,OAAO,CAAC;AAIf,UAAIxnB,EAAE,IAAIC,CAAC,KAAK,KACdD,EAAE,KAAKC,CAAC,GACRsnB,EAAG,KAAKC,CAAE,MAEVvnB,EAAE,KAAKD,CAAC,GACRwnB,EAAG,KAAKD,CAAE;AAAA,QAElB;AAEI,YAAIzI;AACJ,eAAI9e,EAAE,KAAK,CAAC,MAAM,IAChB8e,KAAMyI,IAENzI,KAAM0I,GAGJ1I,GAAI,KAAK,CAAC,IAAI,KAChBA,GAAI,KAAK6H,CAAC,GAGL7H;AAAA,MACR,GAED7C,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,YAAI,KAAK,OAAM,EAAI,QAAOA,EAAI,IAAK;AACnC,YAAIA,EAAI,OAAM,EAAI,QAAO,KAAK,IAAK;AAEnC,YAAIvc,IAAI,KAAK,MAAO,GAChBC,IAAIsc,EAAI,MAAO;AACnB,QAAAvc,EAAE,WAAW,GACbC,EAAE,WAAW;AAGb,iBAASgf,IAAQ,GAAGjf,EAAE,OAAQ,KAAIC,EAAE,UAAUgf;AAC5C,UAAAjf,EAAE,OAAO,CAAC,GACVC,EAAE,OAAO,CAAC;AAGZ,WAAG;AACD,iBAAOD,EAAE;AACP,YAAAA,EAAE,OAAO,CAAC;AAEZ,iBAAOC,EAAE;AACP,YAAAA,EAAE,OAAO,CAAC;AAGZ,cAAIkd,IAAInd,EAAE,IAAIC,CAAC;AACf,cAAIkd,IAAI,GAAG;AAET,gBAAI+B,IAAIlf;AACR,YAAAA,IAAIC,GACJA,IAAIif;AAAA,UACZ,WAAiB/B,MAAM,KAAKld,EAAE,KAAK,CAAC,MAAM;AAClC;AAGF,UAAAD,EAAE,KAAKC,CAAC;AAAA,QACd,SAAa;AAET,eAAOA,EAAE,OAAOgf,CAAK;AAAA,MACtB,GAGDhD,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,KAAKA,CAAG,EAAE,EAAE,KAAKA,CAAG;AAAA,MACjC,GAEDN,EAAG,UAAU,SAAS,WAAmB;AACvC,gBAAQ,KAAK,MAAM,CAAC,IAAI,OAAO;AAAA,MAChC,GAEDA,EAAG,UAAU,QAAQ,WAAkB;AACrC,gBAAQ,KAAK,MAAM,CAAC,IAAI,OAAO;AAAA,MAChC,GAGDA,EAAG,UAAU,QAAQ,SAAgBM,GAAK;AACxC,eAAO,KAAK,MAAM,CAAC,IAAIA;AAAA,MACxB,GAGDN,EAAG,UAAU,QAAQ,SAAgBoD,GAAK;AACxC,QAAA1D,EAAO,OAAO0D,KAAQ,QAAQ;AAC9B,YAAIlC,IAAIkC,IAAM,IACVoG,KAAKpG,IAAMlC,KAAK,IAChBqI,IAAI,KAAKrI;AAGb,YAAI,KAAK,UAAUsI;AACjB,sBAAK,QAAQA,IAAI,CAAC,GAClB,KAAK,MAAMA,CAAC,KAAKD,GACV;AAKT,iBADIlH,IAAQkH,GACH3M,IAAI4M,GAAGnH,MAAU,KAAKzF,IAAI,KAAK,QAAQA,KAAK;AACnD,cAAI+D,IAAI,KAAK,MAAM/D,CAAC,IAAI;AACxB,UAAA+D,KAAK0B,GACLA,IAAQ1B,MAAM,IACdA,KAAK,UACL,KAAK,MAAM/D,CAAC,IAAI+D;AAAA,QACtB;AACI,eAAI0B,MAAU,MACZ,KAAK,MAAMzF,CAAC,IAAIyF,GAChB,KAAK,WAEA;AAAA,MACR,GAEDrC,EAAG,UAAU,SAAS,WAAmB;AACvC,eAAO,KAAK,WAAW,KAAK,KAAK,MAAM,CAAC,MAAM;AAAA,MAC/C,GAEDA,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,YAAImL,IAAWnL,IAAM;AAErB,YAAI,KAAK,aAAa,KAAK,CAACmL,EAAU,QAAO;AAC7C,YAAI,KAAK,aAAa,KAAKA,EAAU,QAAO;AAE5C,aAAK,OAAQ;AAEb,YAAI5I;AACJ,YAAI,KAAK,SAAS;AAChB,UAAAA,IAAM;AAAA,aACD;AACL,UAAI4I,MACFnL,IAAM,CAACA,IAGTZ,EAAOY,KAAO,UAAW,mBAAmB;AAE5C,cAAIK,IAAI,KAAK,MAAM,CAAC,IAAI;AACxB,UAAAkC,IAAMlC,MAAML,IAAM,IAAIK,IAAIL,IAAM,KAAK;AAAA,QAC3C;AACI,eAAI,KAAK,aAAa,IAAU,CAACuC,IAAM,IAChCA;AAAA,MACR,GAMD7C,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,YAAI,KAAK,aAAa,KAAKA,EAAI,aAAa,EAAG,QAAO;AACtD,YAAI,KAAK,aAAa,KAAKA,EAAI,aAAa,EAAG,QAAO;AAEtD,YAAIuC,IAAM,KAAK,KAAKvC,CAAG;AACvB,eAAI,KAAK,aAAa,IAAU,CAACuC,IAAM,IAChCA;AAAA,MACR,GAGD7C,EAAG,UAAU,OAAO,SAAeM,GAAK;AAEtC,YAAI,KAAK,SAASA,EAAI,OAAQ,QAAO;AACrC,YAAI,KAAK,SAASA,EAAI,OAAQ,QAAO;AAGrC,iBADIuC,IAAM,GACDjG,IAAI,KAAK,SAAS,GAAGA,KAAK,GAAGA,KAAK;AACzC,cAAI7Y,IAAI,KAAK,MAAM6Y,CAAC,IAAI,GACpB,IAAI0D,EAAI,MAAM1D,CAAC,IAAI;AAEvB,cAAI7Y,MAAM,GACV;AAAA,YAAIA,IAAI,IACN8e,IAAM,KACG9e,IAAI,MACb8e,IAAM;AAER;AAAA;AAAA,QACN;AACI,eAAOA;AAAA,MACR,GAED7C,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAO,KAAK,KAAKA,CAAG,MAAM;AAAA,MAC3B,GAEDN,EAAG,UAAU,KAAK,SAAaM,GAAK;AAClC,eAAO,KAAK,IAAIA,CAAG,MAAM;AAAA,MAC1B,GAEDN,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,KAAKA,CAAG,KAAK;AAAA,MAC1B,GAEDN,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAO,KAAK,IAAIA,CAAG,KAAK;AAAA,MACzB,GAEDN,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAO,KAAK,KAAKA,CAAG,MAAM;AAAA,MAC3B,GAEDN,EAAG,UAAU,KAAK,SAAaM,GAAK;AAClC,eAAO,KAAK,IAAIA,CAAG,MAAM;AAAA,MAC1B,GAEDN,EAAG,UAAU,OAAO,SAAeM,GAAK;AACtC,eAAO,KAAK,KAAKA,CAAG,KAAK;AAAA,MAC1B,GAEDN,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAO,KAAK,IAAIA,CAAG,KAAK;AAAA,MACzB,GAEDN,EAAG,UAAU,MAAM,SAAcM,GAAK;AACpC,eAAO,KAAK,KAAKA,CAAG,MAAM;AAAA,MAC3B,GAEDN,EAAG,UAAU,KAAK,SAAaM,GAAK;AAClC,eAAO,KAAK,IAAIA,CAAG,MAAM;AAAA,MAC1B,GAMDN,EAAG,MAAM,SAAcM,GAAK;AAC1B,eAAO,IAAIoL,EAAIpL,CAAG;AAAA,MACnB,GAEDN,EAAG,UAAU,QAAQ,SAAgB2L,GAAK;AACxC,eAAAjM,EAAO,CAAC,KAAK,KAAK,uCAAuC,GACzDA,EAAO,KAAK,aAAa,GAAG,+BAA+B,GACpDiM,EAAI,UAAU,IAAI,EAAE,UAAUA,CAAG;AAAA,MACzC,GAED3L,EAAG,UAAU,UAAU,WAAoB;AACzC,eAAAN,EAAO,KAAK,KAAK,sDAAsD,GAChE,KAAK,IAAI,YAAY,IAAI;AAAA,MACjC,GAEDM,EAAG,UAAU,YAAY,SAAoB2L,GAAK;AAChD,oBAAK,MAAMA,GACJ;AAAA,MACR,GAED3L,EAAG,UAAU,WAAW,SAAmB2L,GAAK;AAC9C,eAAAjM,EAAO,CAAC,KAAK,KAAK,uCAAuC,GAClD,KAAK,UAAUiM,CAAG;AAAA,MAC1B,GAED3L,EAAG,UAAU,SAAS,SAAiBM,GAAK;AAC1C,eAAAZ,EAAO,KAAK,KAAK,oCAAoC,GAC9C,KAAK,IAAI,IAAI,MAAMY,CAAG;AAAA,MAC9B,GAEDN,EAAG,UAAU,UAAU,SAAkBM,GAAK;AAC5C,eAAAZ,EAAO,KAAK,KAAK,qCAAqC,GAC/C,KAAK,IAAI,KAAK,MAAMY,CAAG;AAAA,MAC/B,GAEDN,EAAG,UAAU,SAAS,SAAiBM,GAAK;AAC1C,eAAAZ,EAAO,KAAK,KAAK,oCAAoC,GAC9C,KAAK,IAAI,IAAI,MAAMY,CAAG;AAAA,MAC9B,GAEDN,EAAG,UAAU,UAAU,SAAkBM,GAAK;AAC5C,eAAAZ,EAAO,KAAK,KAAK,qCAAqC,GAC/C,KAAK,IAAI,KAAK,MAAMY,CAAG;AAAA,MAC/B,GAEDN,EAAG,UAAU,SAAS,SAAiBM,GAAK;AAC1C,eAAAZ,EAAO,KAAK,KAAK,oCAAoC,GAC9C,KAAK,IAAI,IAAI,MAAMY,CAAG;AAAA,MAC9B,GAEDN,EAAG,UAAU,SAAS,SAAiBM,GAAK;AAC1C,eAAAZ,EAAO,KAAK,KAAK,oCAAoC,GACrD,KAAK,IAAI,SAAS,MAAMY,CAAG,GACpB,KAAK,IAAI,IAAI,MAAMA,CAAG;AAAA,MAC9B,GAEDN,EAAG,UAAU,UAAU,SAAkBM,GAAK;AAC5C,eAAAZ,EAAO,KAAK,KAAK,oCAAoC,GACrD,KAAK,IAAI,SAAS,MAAMY,CAAG,GACpB,KAAK,IAAI,KAAK,MAAMA,CAAG;AAAA,MAC/B,GAEDN,EAAG,UAAU,SAAS,WAAmB;AACvC,eAAAN,EAAO,KAAK,KAAK,oCAAoC,GACrD,KAAK,IAAI,SAAS,IAAI,GACf,KAAK,IAAI,IAAI,IAAI;AAAA,MACzB,GAEDM,EAAG,UAAU,UAAU,WAAoB;AACzC,eAAAN,EAAO,KAAK,KAAK,qCAAqC,GACtD,KAAK,IAAI,SAAS,IAAI,GACf,KAAK,IAAI,KAAK,IAAI;AAAA,MAC1B,GAGDM,EAAG,UAAU,UAAU,WAAoB;AACzC,eAAAN,EAAO,KAAK,KAAK,qCAAqC,GACtD,KAAK,IAAI,SAAS,IAAI,GACf,KAAK,IAAI,KAAK,IAAI;AAAA,MAC1B,GAEDM,EAAG,UAAU,UAAU,WAAoB;AACzC,eAAAN,EAAO,KAAK,KAAK,qCAAqC,GACtD,KAAK,IAAI,SAAS,IAAI,GACf,KAAK,IAAI,KAAK,IAAI;AAAA,MAC1B,GAGDM,EAAG,UAAU,SAAS,WAAmB;AACvC,eAAAN,EAAO,KAAK,KAAK,oCAAoC,GACrD,KAAK,IAAI,SAAS,IAAI,GACf,KAAK,IAAI,IAAI,IAAI;AAAA,MACzB,GAEDM,EAAG,UAAU,SAAS,SAAiBM,GAAK;AAC1C,eAAAZ,EAAO,KAAK,OAAO,CAACY,EAAI,KAAK,mBAAmB,GAChD,KAAK,IAAI,SAAS,IAAI,GACf,KAAK,IAAI,IAAI,MAAMA,CAAG;AAAA,MAC9B;AAGD,UAAIsL,IAAS;AAAA,QACX,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,MACT;AAGD,eAASC,EAAQvM,GAAMoL,GAAG;AAExB,aAAK,OAAOpL,GACZ,KAAK,IAAI,IAAIU,EAAG0K,GAAG,EAAE,GACrB,KAAK,IAAI,KAAK,EAAE,UAAW,GAC3B,KAAK,IAAI,IAAI1K,EAAG,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,GAE7C,KAAK,MAAM,KAAK,KAAM;AAAA,MAC1B;AAEE,MAAA6L,EAAO,UAAU,OAAO,WAAiB;AACvC,YAAIC,IAAM,IAAI9L,EAAG,IAAI;AACrB,eAAA8L,EAAI,QAAQ,IAAI,MAAM,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,GACrCA;AAAA,MACR,GAEDD,EAAO,UAAU,UAAU,SAAkBvL,GAAK;AAGhD,YAAIY,IAAIZ,GACJyL;AAEJ;AACE,eAAK,MAAM7K,GAAG,KAAK,GAAG,GACtBA,IAAI,KAAK,MAAMA,CAAC,GAChBA,IAAIA,EAAE,KAAK,KAAK,GAAG,GACnB6K,IAAO7K,EAAE,UAAW;AAAA,eACb6K,IAAO,KAAK;AAErB,YAAItI,IAAMsI,IAAO,KAAK,IAAI,KAAK7K,EAAE,KAAK,KAAK,CAAC;AAC5C,eAAIuC,MAAQ,KACVvC,EAAE,MAAM,CAAC,IAAI,GACbA,EAAE,SAAS,KACFuC,IAAM,IACfvC,EAAE,KAAK,KAAK,CAAC,IAETA,EAAE,UAAU,SAEdA,EAAE,MAAO,IAGTA,EAAE,OAAQ,GAIPA;AAAA,MACR,GAED2K,EAAO,UAAU,QAAQ,SAAgBG,GAAO5J,GAAK;AACnD,QAAA4J,EAAM,OAAO,KAAK,GAAG,GAAG5J,CAAG;AAAA,MAC5B,GAEDyJ,EAAO,UAAU,QAAQ,SAAgBvL,GAAK;AAC5C,eAAOA,EAAI,KAAK,KAAK,CAAC;AAAA,MACvB;AAED,eAASxN,IAAQ;AACf,QAAA+Y,EAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAyE;AAAA,MAC/E;AACE,MAAAjM,EAAS9M,GAAM+Y,CAAM,GAErB/Y,EAAK,UAAU,QAAQ,SAAgBkZ,GAAOC,GAAQ;AAKpD,iBAHInC,IAAO,SAEPoC,IAAS,KAAK,IAAIF,EAAM,QAAQ,CAAC,GAC5BpP,IAAI,GAAGA,IAAIsP,GAAQtP;AAC1B,UAAAqP,EAAO,MAAMrP,CAAC,IAAIoP,EAAM,MAAMpP,CAAC;AAIjC,YAFAqP,EAAO,SAASC,GAEZF,EAAM,UAAU,GAAG;AACrB,UAAAA,EAAM,MAAM,CAAC,IAAI,GACjBA,EAAM,SAAS;AACf;AAAA,QACN;AAGI,YAAIG,IAAOH,EAAM,MAAM,CAAC;AAGxB,aAFAC,EAAO,MAAMA,EAAO,QAAQ,IAAIE,IAAOrC,GAElClN,IAAI,IAAIA,IAAIoP,EAAM,QAAQpP,KAAK;AAClC,cAAIwP,IAAOJ,EAAM,MAAMpP,CAAC,IAAI;AAC5B,UAAAoP,EAAM,MAAMpP,IAAI,EAAE,KAAMwP,IAAOtC,MAAS,IAAMqC,MAAS,IACvDA,IAAOC;AAAA,QACb;AACI,QAAAD,OAAU,IACVH,EAAM,MAAMpP,IAAI,EAAE,IAAIuP,GAClBA,MAAS,KAAKH,EAAM,SAAS,KAC/BA,EAAM,UAAU,KAEhBA,EAAM,UAAU;AAAA,MAEnB,GAEDlZ,EAAK,UAAU,QAAQ,SAAgBwN,GAAK;AAE1C,QAAAA,EAAI,MAAMA,EAAI,MAAM,IAAI,GACxBA,EAAI,MAAMA,EAAI,SAAS,CAAC,IAAI,GAC5BA,EAAI,UAAU;AAId,iBADIsD,IAAK,GACAhH,IAAI,GAAGA,IAAI0D,EAAI,QAAQ1D,KAAK;AACnC,cAAI+D,IAAIL,EAAI,MAAM1D,CAAC,IAAI;AACvB,UAAAgH,KAAMjD,IAAI,KACVL,EAAI,MAAM1D,CAAC,IAAIgH,IAAK,UACpBA,IAAKjD,IAAI,MAASiD,IAAK,WAAa;AAAA,QAC1C;AAGI,eAAItD,EAAI,MAAMA,EAAI,SAAS,CAAC,MAAM,MAChCA,EAAI,UACAA,EAAI,MAAMA,EAAI,SAAS,CAAC,MAAM,KAChCA,EAAI,WAGDA;AAAA,MACR;AAED,eAAS+L,IAAQ;AACf,QAAAR,EAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAgE;AAAA,MACtE;AACE,MAAAjM,EAASyM,GAAMR,CAAM;AAErB,eAASS,IAAQ;AACf,QAAAT,EAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAuD;AAAA,MAC7D;AACE,MAAAjM,EAAS0M,GAAMT,CAAM;AAErB,eAASU,IAAU;AAEjB,QAAAV,EAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAqE;AAAA,MAC3E;AACE,MAAAjM,EAAS2M,GAAQV,CAAM,GAEvBU,EAAO,UAAU,QAAQ,SAAgBjM,GAAK;AAG5C,iBADI+B,IAAQ,GACHzF,IAAI,GAAGA,IAAI0D,EAAI,QAAQ1D,KAAK;AACnC,cAAIsG,KAAM5C,EAAI,MAAM1D,CAAC,IAAI,KAAK,KAAOyF,GACjCuB,IAAKV,IAAK;AACd,UAAAA,OAAQ,IAER5C,EAAI,MAAM1D,CAAC,IAAIgH,GACfvB,IAAQa;AAAA,QACd;AACI,eAAIb,MAAU,MACZ/B,EAAI,MAAMA,EAAI,QAAQ,IAAI+B,IAErB/B;AAAA,MACR,GAGDN,EAAG,SAAS,SAAgBV,GAAM;AAEhC,YAAIsM,EAAOtM,CAAI,EAAG,QAAOsM,EAAOtM,CAAI;AAEpC,YAAIkN;AACJ,YAAIlN,MAAS;AACX,UAAAkN,IAAQ,IAAI1Z,EAAM;AAAA,iBACTwM,MAAS;AAClB,UAAAkN,IAAQ,IAAIH,EAAM;AAAA,iBACT/M,MAAS;AAClB,UAAAkN,IAAQ,IAAIF,EAAM;AAAA,iBACThN,MAAS;AAClB,UAAAkN,IAAQ,IAAID,EAAQ;AAAA;AAEpB,gBAAM,IAAI,MAAM,mBAAmBjN,CAAI;AAEzC,eAAAsM,EAAOtM,CAAI,IAAIkN,GAERA;AAAA,MACR;AAKD,eAASd,EAAKxB,GAAG;AACf,YAAI,OAAOA,KAAM,UAAU;AACzB,cAAIsC,IAAQxM,EAAG,OAAOkK,CAAC;AACvB,eAAK,IAAIsC,EAAM,GACf,KAAK,QAAQA;AAAA,QACnB;AACM,UAAA9M,EAAOwK,EAAE,IAAI,CAAC,GAAG,gCAAgC,GACjD,KAAK,IAAIA,GACT,KAAK,QAAQ;AAAA,MAEnB;AAEE,MAAAwB,EAAI,UAAU,WAAW,SAAmB3nB,GAAG;AAC7C,QAAA2b,EAAO3b,EAAE,aAAa,GAAG,+BAA+B,GACxD2b,EAAO3b,EAAE,KAAK,iCAAiC;AAAA,MAChD,GAED2nB,EAAI,UAAU,WAAW,SAAmB3nB,GAAGC,GAAG;AAChD,QAAA0b,GAAQ3b,EAAE,WAAWC,EAAE,cAAc,GAAG,+BAA+B,GACvE0b;AAAA,UAAO3b,EAAE,OAAOA,EAAE,QAAQC,EAAE;AAAA,UAC1B;AAAA,QAAiC;AAAA,MACpC,GAED0nB,EAAI,UAAU,OAAO,SAAe3nB,GAAG;AACrC,eAAI,KAAK,QAAc,KAAK,MAAM,QAAQA,CAAC,EAAE,UAAU,IAAI,KAE3D8d,EAAK9d,GAAGA,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,IAAI,CAAC,GAC/BA;AAAA,MACR,GAED2nB,EAAI,UAAU,MAAM,SAAc3nB,GAAG;AACnC,eAAIA,EAAE,WACGA,EAAE,MAAO,IAGX,KAAK,EAAE,IAAIA,CAAC,EAAE,UAAU,IAAI;AAAA,MACpC,GAED2nB,EAAI,UAAU,MAAM,SAAc3nB,GAAGC,GAAG;AACtC,aAAK,SAASD,GAAGC,CAAC;AAElB,YAAI6e,IAAM9e,EAAE,IAAIC,CAAC;AACjB,eAAI6e,EAAI,IAAI,KAAK,CAAC,KAAK,KACrBA,EAAI,KAAK,KAAK,CAAC,GAEVA,EAAI,UAAU,IAAI;AAAA,MAC1B,GAED6I,EAAI,UAAU,OAAO,SAAe3nB,GAAGC,GAAG;AACxC,aAAK,SAASD,GAAGC,CAAC;AAElB,YAAI6e,IAAM9e,EAAE,KAAKC,CAAC;AAClB,eAAI6e,EAAI,IAAI,KAAK,CAAC,KAAK,KACrBA,EAAI,KAAK,KAAK,CAAC,GAEVA;AAAA,MACR,GAED6I,EAAI,UAAU,MAAM,SAAc3nB,GAAGC,GAAG;AACtC,aAAK,SAASD,GAAGC,CAAC;AAElB,YAAI6e,IAAM9e,EAAE,IAAIC,CAAC;AACjB,eAAI6e,EAAI,KAAK,CAAC,IAAI,KAChBA,EAAI,KAAK,KAAK,CAAC,GAEVA,EAAI,UAAU,IAAI;AAAA,MAC1B,GAED6I,EAAI,UAAU,OAAO,SAAe3nB,GAAGC,GAAG;AACxC,aAAK,SAASD,GAAGC,CAAC;AAElB,YAAI6e,IAAM9e,EAAE,KAAKC,CAAC;AAClB,eAAI6e,EAAI,KAAK,CAAC,IAAI,KAChBA,EAAI,KAAK,KAAK,CAAC,GAEVA;AAAA,MACR,GAED6I,EAAI,UAAU,MAAM,SAAc3nB,GAAGuc,GAAK;AACxC,oBAAK,SAASvc,CAAC,GACR,KAAK,KAAKA,EAAE,MAAMuc,CAAG,CAAC;AAAA,MAC9B,GAEDoL,EAAI,UAAU,OAAO,SAAe3nB,GAAGC,GAAG;AACxC,oBAAK,SAASD,GAAGC,CAAC,GACX,KAAK,KAAKD,EAAE,KAAKC,CAAC,CAAC;AAAA,MAC3B,GAED0nB,EAAI,UAAU,MAAM,SAAc3nB,GAAGC,GAAG;AACtC,oBAAK,SAASD,GAAGC,CAAC,GACX,KAAK,KAAKD,EAAE,IAAIC,CAAC,CAAC;AAAA,MAC1B,GAED0nB,EAAI,UAAU,OAAO,SAAe3nB,GAAG;AACrC,eAAO,KAAK,KAAKA,GAAGA,EAAE,MAAK,CAAE;AAAA,MAC9B,GAED2nB,EAAI,UAAU,MAAM,SAAc3nB,GAAG;AACnC,eAAO,KAAK,IAAIA,GAAGA,CAAC;AAAA,MACrB,GAED2nB,EAAI,UAAU,OAAO,SAAe3nB,GAAG;AACrC,YAAIA,EAAE,OAAM,EAAI,QAAOA,EAAE,MAAO;AAEhC,YAAI0oB,IAAO,KAAK,EAAE,MAAM,CAAC;AAIzB,YAHA/M,EAAO+M,IAAO,MAAM,CAAC,GAGjBA,MAAS,GAAG;AACd,cAAI9K,IAAM,KAAK,EAAE,IAAI,IAAI3B,EAAG,CAAC,CAAC,EAAE,OAAO,CAAC;AACxC,iBAAO,KAAK,IAAIjc,GAAG4d,CAAG;AAAA,QAC5B;AAOI,iBAFI4H,IAAI,KAAK,EAAE,KAAK,CAAC,GACjBC,IAAI,GACD,CAACD,EAAE,OAAQ,KAAIA,EAAE,MAAM,CAAC,MAAM;AACnC,UAAAC,KACAD,EAAE,OAAO,CAAC;AAEZ,QAAA7J,EAAO,CAAC6J,EAAE,QAAQ;AAElB,YAAImD,IAAM,IAAI1M,EAAG,CAAC,EAAE,MAAM,IAAI,GAC1B2M,IAAOD,EAAI,OAAQ,GAInBE,IAAO,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,GAC9BC,IAAI,KAAK,EAAE,UAAW;AAG1B,aAFAA,IAAI,IAAI7M,EAAG,IAAI6M,IAAIA,CAAC,EAAE,MAAM,IAAI,GAEzB,KAAK,IAAIA,GAAGD,CAAI,EAAE,IAAID,CAAI,MAAM;AACrC,UAAAE,EAAE,QAAQF,CAAI;AAOhB,iBAJI1oB,IAAI,KAAK,IAAI4oB,GAAGtD,CAAC,GACjBrI,KAAI,KAAK,IAAInd,GAAGwlB,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,GACnCtG,KAAI,KAAK,IAAIlf,GAAGwlB,CAAC,GACjBW,KAAIV,GACDvG,GAAE,IAAIyJ,CAAG,MAAM,KAAG;AAEvB,mBADIZ,KAAM7I,IACDrG,KAAI,GAAGkP,GAAI,IAAIY,CAAG,MAAM,GAAG9P;AAClC,YAAAkP,KAAMA,GAAI,OAAQ;AAEpB,UAAApM,EAAO9C,KAAIsN,EAAC;AACZ,cAAIlmB,KAAI,KAAK,IAAIC,GAAG,IAAI+b,EAAG,CAAC,EAAE,OAAOkK,KAAItN,KAAI,CAAC,CAAC;AAE/C,UAAAsE,KAAIA,GAAE,OAAOld,EAAC,GACdC,IAAID,GAAE,OAAQ,GACdif,KAAIA,GAAE,OAAOhf,CAAC,GACdimB,KAAItN;AAAA,QACV;AAEI,eAAOsE;AAAA,MACR,GAEDwK,EAAI,UAAU,OAAO,SAAe3nB,GAAG;AACrC,YAAI+oB,IAAM/oB,EAAE,OAAO,KAAK,CAAC;AACzB,eAAI+oB,EAAI,aAAa,KACnBA,EAAI,WAAW,GACR,KAAK,KAAKA,CAAG,EAAE,OAAQ,KAEvB,KAAK,KAAKA,CAAG;AAAA,MAEvB,GAEDpB,EAAI,UAAU,MAAM,SAAc3nB,GAAGuc,GAAK;AACxC,YAAIA,EAAI,OAAM,EAAI,QAAO,IAAIN,EAAG,CAAC,EAAE,MAAM,IAAI;AAC7C,YAAIM,EAAI,KAAK,CAAC,MAAM,EAAG,QAAOvc,EAAE,MAAO;AAEvC,YAAIgpB,IAAa,GACbC,IAAM,IAAI,MAAM,KAAKD,CAAU;AACnC,QAAAC,EAAI,CAAC,IAAI,IAAIhN,EAAG,CAAC,EAAE,MAAM,IAAI,GAC7BgN,EAAI,CAAC,IAAIjpB;AACT,iBAAS6Y,IAAI,GAAGA,IAAIoQ,EAAI,QAAQpQ;AAC9B,UAAAoQ,EAAIpQ,CAAC,IAAI,KAAK,IAAIoQ,EAAIpQ,IAAI,CAAC,GAAG7Y,CAAC;AAGjC,YAAI8e,IAAMmK,EAAI,CAAC,GACXC,IAAU,GACVC,IAAa,GACbzM,IAAQH,EAAI,UAAS,IAAK;AAK9B,aAJIG,MAAU,MACZA,IAAQ,KAGL7D,IAAI0D,EAAI,SAAS,GAAG1D,KAAK,GAAGA,KAAK;AAEpC,mBADI8E,IAAOpB,EAAI,MAAM1D,CAAC,GACb8D,KAAID,IAAQ,GAAGC,MAAK,GAAGA,MAAK;AACnC,gBAAI0C,KAAO1B,KAAQhB,KAAK;AAKxB,gBAJImC,MAAQmK,EAAI,CAAC,MACfnK,IAAM,KAAK,IAAIA,CAAG,IAGhBO,OAAQ,KAAK6J,MAAY,GAAG;AAC9B,cAAAC,IAAa;AACb;AAAA,YACV;AAKQ,YAHAD,MAAY,GACZA,KAAW7J,IACX8J,KACI,EAAAA,MAAeH,MAAenQ,MAAM,KAAK8D,OAAM,QAEnDmC,IAAM,KAAK,IAAIA,GAAKmK,EAAIC,CAAO,CAAC,GAChCC,IAAa,GACbD,IAAU;AAAA,UAClB;AACM,UAAAxM,IAAQ;AAAA,QACd;AAEI,eAAOoC;AAAA,MACR,GAED6I,EAAI,UAAU,YAAY,SAAoBpL,GAAK;AACjD,YAAIY,IAAIZ,EAAI,KAAK,KAAK,CAAC;AAEvB,eAAOY,MAAMZ,IAAMY,EAAE,MAAO,IAAGA;AAAA,MAChC,GAEDwK,EAAI,UAAU,cAAc,SAAsBpL,GAAK;AACrD,YAAIuC,IAAMvC,EAAI,MAAO;AACrB,eAAAuC,EAAI,MAAM,MACHA;AAAA,MACR,GAMD7C,EAAG,OAAO,SAAeM,GAAK;AAC5B,eAAO,IAAI6M,EAAK7M,CAAG;AAAA,MACpB;AAED,eAAS6M,EAAMjD,GAAG;AAChB,QAAAwB,EAAI,KAAK,MAAMxB,CAAC,GAEhB,KAAK,QAAQ,KAAK,EAAE,UAAW,GAC3B,KAAK,QAAQ,OAAO,MACtB,KAAK,SAAS,KAAM,KAAK,QAAQ,KAGnC,KAAK,IAAI,IAAIlK,EAAG,CAAC,EAAE,OAAO,KAAK,KAAK,GACpC,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAChC,KAAK,OAAO,KAAK,EAAE,OAAO,KAAK,CAAC,GAEhC,KAAK,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,GACrD,KAAK,OAAO,KAAK,KAAK,KAAK,KAAK,CAAC,GACjC,KAAK,OAAO,KAAK,EAAE,IAAI,KAAK,IAAI;AAAA,MACpC;AACE,MAAAJ,EAASuN,GAAMzB,CAAG,GAElByB,EAAK,UAAU,YAAY,SAAoB7M,GAAK;AAClD,eAAO,KAAK,KAAKA,EAAI,MAAM,KAAK,KAAK,CAAC;AAAA,MACvC,GAED6M,EAAK,UAAU,cAAc,SAAsB7M,GAAK;AACtD,YAAIY,IAAI,KAAK,KAAKZ,EAAI,IAAI,KAAK,IAAI,CAAC;AACpC,eAAAY,EAAE,MAAM,MACDA;AAAA,MACR,GAEDiM,EAAK,UAAU,OAAO,SAAeppB,GAAGC,GAAG;AACzC,YAAID,EAAE,OAAM,KAAMC,EAAE,OAAM;AACxB,iBAAAD,EAAE,MAAM,CAAC,IAAI,GACbA,EAAE,SAAS,GACJA;AAGT,YAAIkf,IAAIlf,EAAE,KAAKC,CAAC,GACZC,IAAIgf,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,GACpE3L,IAAI2L,EAAE,KAAKhf,CAAC,EAAE,OAAO,KAAK,KAAK,GAC/B4e,IAAMvL;AAEV,eAAIA,EAAE,IAAI,KAAK,CAAC,KAAK,IACnBuL,IAAMvL,EAAE,KAAK,KAAK,CAAC,IACVA,EAAE,KAAK,CAAC,IAAI,MACrBuL,IAAMvL,EAAE,KAAK,KAAK,CAAC,IAGduL,EAAI,UAAU,IAAI;AAAA,MAC1B,GAEDsK,EAAK,UAAU,MAAM,SAAcppB,GAAGC,GAAG;AACvC,YAAID,EAAE,YAAYC,EAAE,OAAM,EAAI,QAAO,IAAIgc,EAAG,CAAC,EAAE,UAAU,IAAI;AAE7D,YAAIiD,IAAIlf,EAAE,IAAIC,CAAC,GACXC,IAAIgf,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,GACpE3L,IAAI2L,EAAE,KAAKhf,CAAC,EAAE,OAAO,KAAK,KAAK,GAC/B4e,IAAMvL;AACV,eAAIA,EAAE,IAAI,KAAK,CAAC,KAAK,IACnBuL,IAAMvL,EAAE,KAAK,KAAK,CAAC,IACVA,EAAE,KAAK,CAAC,IAAI,MACrBuL,IAAMvL,EAAE,KAAK,KAAK,CAAC,IAGduL,EAAI,UAAU,IAAI;AAAA,MAC1B,GAEDsK,EAAK,UAAU,OAAO,SAAeppB,GAAG;AAEtC,YAAI8e,IAAM,KAAK,KAAK9e,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;AACjD,eAAO8e,EAAI,UAAU,IAAI;AAAA,MAC1B;AAAA,OACiCjH,GAAQwR,EAAI;AAAA;;;;AC19GhD,IAAIjQ,KAAY,OAAO,gBACnBC,KAAS,CAACC,GAAQvb,MAAUqb,GAAUE,GAAQ,QAAQ,EAAE,OAAAvb,GAAO,cAAc,IAAM,GAOnFurB,KAAoB,GACpBC,KAAwB,GACxBC,KAAwB,OAGxBvN,MAAKlB,KAAA,cAAkB0O,GAAK;AAAA,EAK9B,YAAY1rB,GAAOoe,GAAMC,GAAQ;AAC/B,QAAIsN,IAAU3rB,GACV4rB,IAASxN;AAOb,QANIpB,GAAI,KAAKhd,CAAK,IAChB2rB,IAAU3rB,EAAM,QAAS,IAChB,OAAOA,KAAU,YAAYA,EAAM,MAAM,GAAG,CAAC,MAAM,SAC5D2rB,IAAU3rB,EAAM,UAAU,CAAC,GAC3B4rB,IAASxN,KAAQ,QAEf,OAAOuN,KAAY,YAAYA,IAAU,OAAO;AAClD,YAAM,IAAI5O;AAAA,QACRF,EAAU;AAAA,QACV,SAAS8O,CAAO;AAAA,MACjB;AAEH,UAAMA,KAAkB,GAAaC,GAAQvN,CAAM;AAhBrD,IAAAhB,EAAA,iBAAU;AAAA,EAiBZ;AAAA;AAAA;AAAA,EAGE,SAASe,GAAMsC,GAAQ;AACrB,UAAMyJ,IAAS,MAAM,SAAS/L,GAAMsC,CAAM;AAC1C,WAAItC,MAAS,MAAMA,MAAS,QACnB,KAAK+L,CAAM,KAEbA;AAAA,EACX;AAAA,EACE,MAAM0B,GAAc;AAElB,UAAMC,KADQD,KAAgB,KACF;AAC5B,QAAI,KAAK;AACP,YAAM,IAAI9O,EAAUF,EAAU,mBAAmB,uCAAuC;AAE1F,QAAIgP,KAAgB,KAAK,WAAU,IAAKA;AACtC,YAAM,IAAI9O;AAAA,QACRF,EAAU;AAAA,QACV,kBAAkB,IAAI,uCAAuCgP,CAAY;AAAA,MAC1E;AAEH,WAAO,KAAK,SAAS,IAAIC,CAAW;AAAA,EACxC;AAAA,EACE,QAAQD,GAAc;AACpB,QAAI,KAAK;AACP,YAAM,IAAI9O,EAAUF,EAAU,mBAAmB,yCAAyC;AAE5F,WAAO,WAAW,KAAK,KAAK,QAAQ,QAAQgP,CAAY,CAAC;AAAA,EAC7D;AAAA,EACE,SAAS;AACP,WAAO,KAAK,SAAS,EAAE;AAAA,EAC3B;AAAA,EACE,UAAU;AACR,WAAO,KAAK,SAAU;AAAA,EAC1B;AAAA,EACE,OAAOE,GAAS;AACd,UAAM;AAAA,MACJ,OAAAC,IAAQP;AAAAA,MACR,WAAWQ,IAAmBV;AAAAA,MAC9B,cAAcW,IAAsBV;AAAAA,IACrC,IAAGO,KAAW,CAAE;AACjB,QAAIC,MAAU;AACZ,aAAO,KAAK,SAAQ,EAAG,QAAQ,yBAAyB,GAAG;AAE7D,UAAMG,IAAeD,IAAsBD,IAAmBA,IAAmBC,GAC3EE,IAAYH,IAAmBC,IAAsBD,IAAmBC,GACxEG,IAAiB,KAAK,YAAYL,CAAK,GACvC,CAACM,GAAaC,IAAiB,EAAE,IAAIF,EAAe,MAAM,GAAG,GAC7DG,IAAmBF,EAAY,QAAQ,yBAAyB,GAAG;AACzE,QAAIF,MAAc;AAChB,aAAOI;AAET,QAAIC,IAAsBF,EAAe,QAAQ,OAAO,EAAE;AAC1D,QAAIE,EAAoB,SAASL;AAC/B,UAAIE,MAAgB,KAAK;AACvB,cAAMI,IAAoBD,EAAoB,OAAO,OAAO;AAC5D,QAAIC,KAAqB,KAAKA,IAAoBN,IAChDK,IAAsBA,EAAoB,MAAM,GAAGL,CAAS,IAE5DK,IAAsBA,EAAoB,MAAM,GAAGC,IAAoB,CAAC;AAAA,MAElF;AACQ,QAAAD,IAAsBA,EAAoB,MAAM,GAAGL,CAAS;AAAA;AAG9D,MAAAK,IAAsBA,EAAoB,MAAM,GAAGL,CAAS;AAK9D,WAHIK,EAAoB,SAASN,MAC/BM,IAAsBA,EAAoB,OAAON,GAAc,GAAG,IAEhEM,MAAwB,MAAMN,MAAiB,IAC1CK,IAEFC,IAAsB,GAAGD,CAAgB,IAAIC,CAAmB,KAAKD;AAAA,EAChF;AAAA,EACE,YAAYR,IAAQP,IAAuB;AACzC,UAAMkB,IAAc,KAAK,SAAU,GAC7BC,IAAcD,EAAY;AAChC,QAAIC,KAAeZ;AAEjB,aAAO,KADa,IAAI,OAAOA,IAAQY,CAAW,CAC3B,GAAGD,CAAW;AAEvC,UAAML,IAAcK,EAAY,MAAM,GAAGC,IAAcZ,CAAK,GACtDO,IAAiBI,EAAY,MAAMC,IAAcZ,CAAK;AAC5D,WAAO,GAAGM,CAAW,IAAIC,CAAc;AAAA,EAC3C;AAAA;AAAA;AAAA,EAGE,IAAIzQ,GAAG;AACL,WAAO,KAAK,OAAOA,GAAG,KAAK;AAAA,EAC/B;AAAA,EACE,IAAIA,GAAG;AACL,WAAO,KAAK,OAAOA,GAAG,KAAK;AAAA,EAC/B;AAAA,EACE,IAAIA,GAAG;AACL,WAAO,KAAK,OAAOA,GAAG,KAAK;AAAA,EAC/B;AAAA,EACE,IAAIA,GAAG;AACL,WAAO,KAAK,OAAOA,GAAG,KAAK;AAAA,EAC/B;AAAA,EACE,IAAIA,GAAG;AACL,WAAO,KAAK,OAAOA,GAAG,KAAK;AAAA,EAC/B;AAAA,EACE,IAAIA,GAAG;AACL,WAAO,KAAK,OAAOA,GAAG,KAAK;AAAA,EAC/B;AAAA,EACE,SAASA,GAAG;AACV,WAAO,KAAK,OAAOA,GAAG,UAAU;AAAA,EACpC;AAAA,EACE,GAAGA,GAAG;AACJ,WAAO,KAAK,OAAOA,GAAG,IAAI;AAAA,EAC9B;AAAA,EACE,IAAIA,GAAG;AACL,WAAO,KAAK,OAAOA,GAAG,KAAK;AAAA,EAC/B;AAAA,EACE,GAAGA,GAAG;AACJ,WAAO,KAAK,OAAOA,GAAG,IAAI;AAAA,EAC9B;AAAA,EACE,IAAIA,GAAG;AACL,WAAO,KAAK,OAAOA,GAAG,KAAK;AAAA,EAC/B;AAAA,EACE,GAAGA,GAAG;AACJ,WAAO,KAAK,OAAOA,GAAG,IAAI;AAAA,EAC9B;AAAA,EACE,IAAIA,GAAG;AACL,WAAO,KAAK,OAAOA,GAAG,KAAK;AAAA,EAC/B;AAAA;AAAA;AAAA,EAGE,MAAM;AACJ,WAAO,IAAIkB,GAAI,MAAM,IAAK,EAAC,QAAO,CAAE;AAAA,EACxC;AAAA,EACE,MAAM;AACJ,WAAO,IAAIA,GAAI,MAAM,IAAK,EAAC,QAAO,CAAE;AAAA,EACxC;AAAA,EACE,MAAM;AACJ,WAAO,IAAIA,GAAI,MAAM,IAAK,EAAC,QAAO,CAAE;AAAA,EACxC;AAAA,EACE,OAAOwE,GAAO;AACZ,WAAO,IAAIxE,GAAI,MAAM,OAAOwE,CAAK,EAAE,SAAS;AAAA,EAChD;AAAA,EACE,SAASA,GAAO;AACd,WAAO,IAAIxE,GAAI,MAAM,SAASwE,CAAK,EAAE,SAAS;AAAA,EAClD;AAAA;AAAA;AAAA,EAGE,OAAO1F,GAAG+Q,GAAY;AACpB,UAAM1C,IAAS,MAAM0C,CAAU,EAAE,IAAI7P,GAAIlB,CAAC,CAAC;AAC3C,WAAIkB,GAAI,KAAKmN,CAAM,IACV,IAAInN,GAAImN,EAAO,SAAS,IAGxBA;AAAA,EAGb;AAAA,EACE,QAAQ;AACN,WAAO,IAAInN,GAAI,KAAK,SAAS;AAAA,EACjC;AAAA,EACE,MAAMwB,GAAK8B,GAAK;AACd,UAAM6J,IAAS,IAAIuB,GAAK,KAAK,QAAO,CAAE,EAAE,MAAMlN,GAAK8B,CAAG;AACtD,WAAO,IAAItD,GAAImN,EAAO,SAAS;AAAA,EACnC;AAAA,EACE,KAAKvB,GAAG;AACN,UAAM,EAAE,GAAA3mB,GAAG,GAAAC,GAAG,KAAA4qB,MAAQ,IAAIpB,GAAK,KAAK,QAAO,CAAE,EAAE,KAAK9C,CAAC;AACrD,WAAO;AAAA,MACL,GAAG,IAAI5L,GAAI/a,EAAE,QAAO,CAAE;AAAA,MACtB,GAAG,IAAI+a,GAAI9a,EAAE,QAAO,CAAE;AAAA,MACtB,KAAK,IAAI8a,GAAI8P,EAAI,QAAS,CAAA;AAAA,IAC3B;AAAA,EACL;AAAA,EACE,OAAOtO,GAAKzc,GAAMwmB,GAAU;AAC1B,UAAM,EAAE,KAAA7pB,GAAK,KAAAqc,EAAK,IAAG,IAAI2Q,GAAK,KAAK,QAAS,CAAA,EAAE,OAAO,IAAI1O,GAAIwB,CAAG,GAAGzc,GAAMwmB,CAAQ;AACjF,WAAO;AAAA,MACL,KAAK,IAAIvL,GAAIte,KAAA,gBAAAA,EAAK,SAAS;AAAA,MAC3B,KAAK,IAAIse,GAAIjC,KAAA,gBAAAA,EAAK,SAAS;AAAA,IAC5B;AAAA,EACL;AAAA,EACE,SAAS;AACP,WAAO,KAAK,IAAI,KAAK,OAAO,IAAI,IAAIiC,GAAI,KAAK,OAAO,IAAI;AAAA,EAC5D;AAAA,EACE,IAAIwB,GAAK;AACP,WAAO,KAAK,IAAIA,CAAG,IAAI,IAAIxB,GAAIwB,CAAG,IAAI;AAAA,EAC1C;AAAA,EACE,qBAAqB;AACnB,WAAO,KAAK,OAAQ,IAAG,IAAIxB,GAAI,CAAC,IAAI;AAAA,EACxC;AAAA;AAEA,GAhNI1B,GAAO0B,IAAM,IAAI,GAFZA,KAmNL+P,IAAqBzR,gBAAAA,GAAO,CAACtb,GAAOoe,GAAMC,MAAW,IAAIH,GAAGle,GAAOoe,GAAMC,CAAM,GAAG,IAAI;AAC1F0O,EAAG,aAAa,CAAC/sB,GAAOgsB,IAAQP,OAA0B;AACxD,QAAMuB,IAAehtB,MAAU,MAAM,OAAOA,GACtC,CAACitB,IAAa,KAAKC,IAAgB,GAAG,IAAIF,EAAa,MAAM,GAAG,GAChEtM,IAASwM,EAAc;AAC7B,MAAIlB,MAAU,GAAG;AACf,UAAMmB,IAAuBH,EAAa,QAAQ,KAAK,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC;AACvE,WAAOD,EAAGI,CAAoB;AAAA,EAClC;AACE,MAAIzM,IAASsL;AACX,UAAM,IAAIjP;AAAA,MACRF,EAAU;AAAA,MACV,gCAAgCmP,CAAK;AAAA,IACtC;AAEH,QAAMoB,IAAW,MAAM,KAAK,EAAE,QAAQpB,EAAO,CAAA,EAAE,KAAK,GAAG;AACvD,EAAAoB,EAAS,OAAO,GAAG1M,GAAQwM,CAAa;AACxC,QAAMjsB,IAAS,GAAGgsB,EAAW,WAAW,KAAK,EAAE,CAAC,GAAGG,EAAS,KAAK,EAAE,CAAC;AACpE,SAAOL,EAAG9rB,CAAM;AAClB;AAGA,SAASosB,GAAQrtB,GAAO+rB,GAAS;AAC/B,QAAM,EAAE,WAAAK,IAAYb,IAAmB,cAAAY,IAAeX,GAAqB,IAAKO,KAAW,CAAE,GACvF,CAACkB,IAAa,KAAKC,IAAgB,GAAG,IAAI,OAAOltB,KAAS,KAAK,EAAE,MAAM,GAAG,GAC1EstB,IAAa,uBACbtB,IAAQiB,EAAW,QAAQK,GAAY,KAAK;AAClD,MAAIF,IAAWF,EAAc,MAAM,GAAGd,CAAS;AAC/C,MAAID,IAAeC,GAAW;AAC5B,UAAMmB,IAAiBH,EAAS,MAAM,YAAY,GAC5CI,KAAmBD,KAAA,gBAAAA,EAAiB,GAAG,WAAU,GACjDE,IAAY,KAAK,IAAItB,GAAcqB,CAAgB;AACzD,IAAAJ,IAAWA,EAAS,MAAM,GAAGK,CAAS;AAAA,EAC1C;AACE,QAAMC,IAAiBN,IAAW,IAAIA,CAAQ,KAAK;AACnD,SAAO,GAAGpB,CAAK,GAAG0B,CAAc;AAClC;AACApS,GAAO+R,IAAS,SAAS;AAGzB,SAASM,GAAS3tB,GAAO;AACvB,SAAO+sB,EAAG/sB,CAAK,EAAE,SAAU;AAC7B;AACAsb,GAAOqS,IAAU,UAAU;AAC3B,SAASC,GAAM5tB,GAAO6rB,GAAc;AAClC,SAAOkB,EAAG/sB,CAAK,EAAE,MAAM6rB,CAAY;AACrC;AACAvQ,GAAOsS,IAAO,OAAO;AACrB,SAASC,GAAQ7tB,GAAO6rB,GAAc;AACpC,SAAOkB,EAAG/sB,CAAK,EAAE,QAAQ6rB,CAAY;AACvC;AACAvQ,GAAOuS,IAAS,SAAS;AACzB,SAASC,GAAY9tB,GAAOgsB,GAAO;AACjC,SAAOe,EAAG/sB,CAAK,EAAE,YAAYgsB,CAAK;AACpC;AACA1Q,GAAOwS,IAAa,aAAa;AACjC,SAASC,GAAO/tB,GAAO+rB,GAAS;AAC9B,SAAOgB,EAAG/sB,CAAK,EAAE,OAAO+rB,CAAO;AACjC;AACAzQ,GAAOyS,IAAQ,QAAQ;AAGvB,SAASC,MAAOC,GAAS;AACvB,SAAOA,EAAQ,OAAO,CAAC5D,GAAM6D,MAAQnB,EAAGmB,CAAG,EAAE,GAAG7D,CAAI,IAAI0C,EAAGmB,CAAG,IAAI7D,GAAM0C,EAAG,CAAC,CAAC;AAC/E;AACAzR,GAAO0S,IAAK,KAAK;AACjB,SAASG,MAAYF,GAAS;AAC5B,SAAOlB,EAAG,KAAK,KAAKkB,EAAQ,OAAO,CAAChsB,GAAGC,MAAM6qB,EAAG9qB,CAAC,EAAE,IAAIC,CAAC,GAAG6qB,EAAG,CAAC,CAAC,EAAE,SAAQ,CAAE,CAAC;AAC/E;AACAzR,GAAO6S,IAAU,UAAU;ACvQ3B,IAAIC,KAAK,YAAYC,KAAM,aAAaC,KAAM,YAE1CC,KAAO,IAAIH,GAAG;AAAA,EAAC;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA;AAAA,EAAgB;AAAA,EAAG;AAAA;AAAA,EAAoB;AAAC,CAAC,GAE5II,KAAO,IAAIJ,GAAG;AAAA,EAAC;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA;AAAA,EAAiB;AAAA,EAAG;AAAC,CAAC,GAEnIK,KAAO,IAAIL,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAEhFM,KAAO,SAAUC,GAAIhQ,GAAO;AAE5B,WADIzc,IAAI,IAAImsB,GAAI,EAAE,GACTvT,IAAI,GAAGA,IAAI,IAAI,EAAEA;AACtB,IAAA5Y,EAAE4Y,CAAC,IAAI6D,KAAS,KAAKgQ,EAAG7T,IAAI,CAAC;AAIjC,WADIsE,IAAI,IAAIkP,GAAIpsB,EAAE,EAAE,CAAC,GACZ4Y,IAAI,GAAGA,IAAI,IAAI,EAAEA;AACtB,aAAS8D,IAAI1c,EAAE4Y,CAAC,GAAG8D,IAAI1c,EAAE4Y,IAAI,CAAC,GAAG,EAAE8D;AAC/B,MAAAQ,EAAER,CAAC,IAAMA,IAAI1c,EAAE4Y,CAAC,KAAM,IAAKA;AAGnC,SAAO,EAAE,GAAG5Y,GAAG,GAAGkd,EAAG;AACzB,GACIpC,KAAK0R,GAAKH,IAAM,CAAC,GAAGK,KAAK5R,GAAG,GAAG6R,KAAQ7R,GAAG;AAE9C4R,GAAG,EAAE,IAAI,KAAKC,GAAM,GAAG,IAAI;AAC3B,IAAIC,KAAKJ,GAAKF,IAAM,CAAC,GAAGO,KAAKD,GAAG,GAAGE,KAAQF,GAAG,GAE1CG,KAAM,IAAIZ,GAAI,KAAK;AACvB,SAASvT,KAAI,GAAGA,KAAI,OAAO,EAAEA,IAAG;AAE5B,MAAI+N,MAAM/N,KAAI,UAAW,KAAOA,KAAI,UAAW;AAC/C,EAAA+N,MAAMA,KAAI,UAAW,KAAOA,KAAI,UAAW,GAC3CA,MAAMA,KAAI,UAAW,KAAOA,KAAI,SAAW,GAC3CoG,GAAInU,EAAC,MAAO+N,KAAI,UAAW,KAAOA,KAAI,QAAW,MAAO;AAC5D;AAIA,IAAIqG,KAAQ,SAAUC,GAAIC,GAAIhQ,GAAG;AAO7B,WANIsI,IAAIyH,EAAG,QAEPrU,IAAI,GAEJuU,IAAI,IAAIhB,GAAIe,CAAE,GAEXtU,IAAI4M,GAAG,EAAE5M;AACZ,IAAIqU,EAAGrU,CAAC,KACJ,EAAEuU,EAAEF,EAAGrU,CAAC,IAAI,CAAC;AAGrB,MAAIwU,IAAK,IAAIjB,GAAIe,CAAE;AACnB,OAAKtU,IAAI,GAAGA,IAAIsU,GAAI,EAAEtU;AAClB,IAAAwU,EAAGxU,CAAC,IAAKwU,EAAGxU,IAAI,CAAC,IAAIuU,EAAEvU,IAAI,CAAC,KAAM;AAEtC,MAAIyU;AACJ,MAAInQ,GAAG;AAEH,IAAAmQ,IAAK,IAAIlB,GAAI,KAAKe,CAAE;AAEpB,QAAII,IAAM,KAAKJ;AACf,SAAKtU,IAAI,GAAGA,IAAI4M,GAAG,EAAE5M;AAEjB,UAAIqU,EAAGrU,CAAC;AAQJ,iBANI2U,IAAM3U,KAAK,IAAKqU,EAAGrU,CAAC,GAEpB4U,IAAMN,IAAKD,EAAGrU,CAAC,GAEfgB,IAAIwT,EAAGH,EAAGrU,CAAC,IAAI,CAAC,OAAO4U,GAElBtH,IAAItM,KAAM,KAAK4T,KAAO,GAAI5T,KAAKsM,GAAG,EAAEtM;AAEzC,UAAAyT,EAAGN,GAAInT,CAAC,KAAK0T,CAAG,IAAIC;AAAA,EAIxC;AAGQ,SADAF,IAAK,IAAIlB,GAAI3G,CAAC,GACT5M,IAAI,GAAGA,IAAI4M,GAAG,EAAE5M;AACjB,MAAIqU,EAAGrU,CAAC,MACJyU,EAAGzU,CAAC,IAAImU,GAAIK,EAAGH,EAAGrU,CAAC,IAAI,CAAC,GAAG,KAAM,KAAKqU,EAAGrU,CAAC;AAItD,SAAOyU;AACX,GAEII,KAAM,IAAIvB,GAAG,GAAG;AACpB,SAAStT,KAAI,GAAGA,KAAI,KAAK,EAAEA;AACvB,EAAA6U,GAAI7U,EAAC,IAAI;AACb,SAASA,KAAI,KAAKA,KAAI,KAAK,EAAEA;AACzB,EAAA6U,GAAI7U,EAAC,IAAI;AACb,SAASA,KAAI,KAAKA,KAAI,KAAK,EAAEA;AACzB,EAAA6U,GAAI7U,EAAC,IAAI;AACb,SAASA,KAAI,KAAKA,KAAI,KAAK,EAAEA;AACzB,EAAA6U,GAAI7U,EAAC,IAAI;AAEb,IAAI8U,KAAM,IAAIxB,GAAG,EAAE;AACnB,SAAStT,KAAI,GAAGA,KAAI,IAAI,EAAEA;AACtB,EAAA8U,GAAI9U,EAAC,IAAI;AAEb,IAAI+U,KAAoB,gBAAAX,GAAKS,IAAK,GAAG,CAAC,GAAGG,KAAqB,gBAAAZ,GAAKS,IAAK,GAAG,CAAC,GAExEI,KAAoB,gBAAAb,GAAKU,IAAK,GAAG,CAAC,GAAGI,KAAqB,gBAAAd,GAAKU,IAAK,GAAG,CAAC,GAExE5B,KAAM,SAAU/rB,GAAG;AAEnB,WADImmB,IAAInmB,EAAE,CAAC,GACF6Y,IAAI,GAAGA,IAAI7Y,EAAE,QAAQ,EAAE6Y;AAC5B,IAAI7Y,EAAE6Y,CAAC,IAAIsN,MACPA,IAAInmB,EAAE6Y,CAAC;AAEf,SAAOsN;AACX,GAEIrb,KAAO,SAAU3K,GAAGwmB,GAAGR,GAAG;AAC1B,MAAIhG,IAAKwG,IAAI,IAAK;AAClB,UAASxmB,EAAEggB,CAAC,IAAKhgB,EAAEggB,IAAI,CAAC,KAAK,OAAQwG,IAAI,KAAMR;AACnD,GAEI6H,KAAS,SAAU7tB,GAAGwmB,GAAG;AACzB,MAAIxG,IAAKwG,IAAI,IAAK;AAClB,UAASxmB,EAAEggB,CAAC,IAAKhgB,EAAEggB,IAAI,CAAC,KAAK,IAAMhgB,EAAEggB,IAAI,CAAC,KAAK,QAASwG,IAAI;AAChE,GAEIsH,KAAO,SAAUtH,GAAG;AAAE,UAASA,IAAI,KAAK,IAAK;AAAI,GAGjDuH,KAAM,SAAUrU,GAAG4L,GAAG,GAAG;AAGzB,UAAI,KAAK,QAAQ,IAAI5L,EAAE,YACnB,IAAIA,EAAE,SAEH,IAAIsS,GAAGtS,EAAE,SAAS4L,GAAG,CAAC,CAAC;AAClC,GAsBI0I,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACJ;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAEJ,GAEIC,KAAM,SAAUC,GAAKzS,GAAK0S,GAAI;AAC9B,MAAIvW,IAAI,IAAI,MAAM6D,KAAOuS,GAAGE,CAAG,CAAC;AAIhC,MAHAtW,EAAE,OAAOsW,GACL,MAAM,qBACN,MAAM,kBAAkBtW,GAAGqW,EAAG,GAC9B,CAACE;AACD,UAAMvW;AACV,SAAOA;AACX,GAEIwW,KAAQ,SAAUC,GAAKC,GAAIhW,GAAKiW,GAAM;AAEtC,MAAIC,IAAKH,EAAI,QAAQI,IAA0B;AAC/C,MAAI,CAACD,KAAMF,EAAG,KAAK,CAACA,EAAG;AACnB,WAAOhW,KAAO,IAAI0T,GAAG,CAAC;AAC1B,MAAI0C,IAAQ,CAACpW,GAETqW,IAASD,KAASJ,EAAG,KAAK,GAE1BM,IAAON,EAAG;AAEd,EAAII,MACApW,IAAM,IAAI0T,GAAGwC,IAAK,CAAC;AAEvB,MAAIK,IAAO,SAAU5B,IAAG;AACpB,QAAI6B,KAAKxW,EAAI;AAEb,QAAI2U,KAAI6B,IAAI;AAER,UAAIC,KAAO,IAAI/C,GAAG,KAAK,IAAI8C,KAAK,GAAG7B,EAAC,CAAC;AACrC,MAAA8B,GAAK,IAAIzW,CAAG,GACZA,IAAMyW;AAAA,IAClB;AAAA,EACK,GAEGC,IAAQV,EAAG,KAAK,GAAGW,IAAMX,EAAG,KAAK,GAAGY,IAAKZ,EAAG,KAAK,GAAGa,IAAKb,EAAG,GAAGlI,IAAKkI,EAAG,GAAGc,IAAMd,EAAG,GAAGe,IAAMf,EAAG,GAE/FgB,IAAOd,IAAK;AAChB,KAAG;AACC,QAAI,CAACW,GAAI;AAEL,MAAAH,IAAQrkB,GAAK0jB,GAAKY,GAAK,CAAC;AAExB,UAAIM,IAAO5kB,GAAK0jB,GAAKY,IAAM,GAAG,CAAC;AAE/B,UADAA,KAAO,GACFM;AAiBA,YAAIA,KAAQ;AACb,UAAAJ,IAAKzB,IAAMtH,IAAKwH,IAAMwB,IAAM,GAAGC,IAAM;AAAA,iBAChCE,KAAQ,GAAG;AAEhB,cAAIC,IAAO7kB,GAAK0jB,GAAKY,GAAK,EAAE,IAAI,KAAKQ,IAAQ9kB,GAAK0jB,GAAKY,IAAM,IAAI,EAAE,IAAI,GACnES,IAAKF,IAAO7kB,GAAK0jB,GAAKY,IAAM,GAAG,EAAE,IAAI;AACzC,UAAAA,KAAO;AAKP,mBAHIU,IAAM,IAAI3D,GAAG0D,CAAE,GAEfE,IAAM,IAAI5D,GAAG,EAAE,GACVtT,IAAI,GAAGA,IAAI+W,GAAO,EAAE/W;AAEzB,YAAAkX,EAAIvD,GAAK3T,CAAC,CAAC,IAAI/N,GAAK0jB,GAAKY,IAAMvW,IAAI,GAAG,CAAC;AAE3C,UAAAuW,KAAOQ,IAAQ;AAKf,mBAHII,IAAMjE,GAAIgE,CAAG,GAAGE,KAAU,KAAKD,KAAO,GAEtCE,IAAMjD,GAAK8C,GAAKC,GAAK,CAAC,GACjBnX,IAAI,GAAGA,IAAIgX,KAAK;AACrB,gBAAI1S,IAAI+S,EAAIplB,GAAK0jB,GAAKY,GAAKa,CAAM,CAAC;AAElC,YAAAb,KAAOjS,IAAI;AAEX,gBAAIsI,IAAItI,KAAK;AAEb,gBAAIsI,IAAI;AACJ,cAAAqK,EAAIjX,GAAG,IAAI4M;AAAA,iBAEV;AAED,kBAAIvlB,IAAI,GAAGiwB,IAAI;AAOf,mBANI1K,KAAK,MACL0K,IAAI,IAAIrlB,GAAK0jB,GAAKY,GAAK,CAAC,GAAGA,KAAO,GAAGlvB,IAAI4vB,EAAIjX,IAAI,CAAC,KAC7C4M,KAAK,MACV0K,IAAI,IAAIrlB,GAAK0jB,GAAKY,GAAK,CAAC,GAAGA,KAAO,KAC7B3J,KAAK,OACV0K,IAAI,KAAKrlB,GAAK0jB,GAAKY,GAAK,GAAG,GAAGA,KAAO,IAClCe;AACH,gBAAAL,EAAIjX,GAAG,IAAI3Y;AAAA,YACvC;AAAA,UACA;AAEgB,cAAIrD,IAAKizB,EAAI,SAAS,GAAGH,CAAI,GAAGS,IAAKN,EAAI,SAASH,CAAI;AAEtD,UAAAJ,IAAMxD,GAAIlvB,CAAE,GAEZ2yB,IAAMzD,GAAIqE,CAAE,GACZd,IAAKrC,GAAKpwB,GAAI0yB,GAAK,CAAC,GACpBhJ,IAAK0G,GAAKmD,GAAIZ,GAAK,CAAC;AAAA,QACpC;AAEgB,UAAApB,GAAI,CAAC;AAAA,WAtEE;AAEP,YAAI3I,IAAIwI,GAAKmB,CAAG,IAAI,GAAGhC,IAAIoB,EAAI/I,IAAI,CAAC,IAAK+I,EAAI/I,IAAI,CAAC,KAAK,GAAIvG,IAAIuG,IAAI2H;AACnE,YAAIlO,IAAIyP,GAAI;AACR,UAAII,KACAX,GAAI,CAAC;AACT;AAAA,QACpB;AAEgB,QAAIU,KACAE,EAAKK,IAAKjC,CAAC,GAEf3U,EAAI,IAAI+V,EAAI,SAAS/I,GAAGvG,CAAC,GAAGmQ,CAAE,GAE9BZ,EAAG,IAAIY,KAAMjC,GAAGqB,EAAG,IAAIW,IAAMlQ,IAAI,GAAGuP,EAAG,IAAIU;AAC3C;AAAA,MAChB;AAuDY,UAAIC,IAAMK,GAAM;AACZ,QAAIV,KACAX,GAAI,CAAC;AACT;AAAA,MAChB;AAAA,IACA;AAGQ,IAAIU,KACAE,EAAKK,IAAK,MAAM;AAGpB,aAFIgB,KAAO,KAAKd,KAAO,GAAGe,KAAO,KAAKd,KAAO,GACzCe,IAAOnB,KACHmB,IAAOnB,GAAK;AAEhB,UAAIlvB,IAAIovB,EAAGtB,GAAOQ,GAAKY,CAAG,IAAIiB,CAAG,GAAGG,IAAMtwB,KAAK;AAE/C,UADAkvB,KAAOlvB,IAAI,IACPkvB,IAAMK,GAAM;AACZ,QAAIV,KACAX,GAAI,CAAC;AACT;AAAA,MAChB;AAGY,UAFKluB,KACDkuB,GAAI,CAAC,GACLoC,IAAM;AACN,QAAA/X,EAAI4W,GAAI,IAAImB;AAAA,eACPA,KAAO,KAAK;AACjB,QAAAD,IAAOnB,GAAKE,IAAK;AACjB;AAAA,MAChB,OACiB;AACD,YAAIlzB,KAAMo0B,IAAM;AAEhB,YAAIA,IAAM,KAAK;AAEX,cAAI3X,IAAI2X,IAAM,KAAKvwB,KAAIqsB,GAAKzT,CAAC;AAC7B,UAAAzc,KAAM0O,GAAK0jB,GAAKY,IAAM,KAAKnvB,MAAK,CAAC,IAAI0sB,GAAG9T,CAAC,GACzCuW,KAAOnvB;AAAA,QAC3B;AAEgB,YAAIE,KAAIomB,EAAGyH,GAAOQ,GAAKY,CAAG,IAAIkB,CAAG,GAAGG,KAAOtwB,MAAK;AAChD,QAAKA,MACDiuB,GAAI,CAAC,GACTgB,KAAOjvB,KAAI;AACX,YAAIiwB,IAAKtD,GAAG2D,EAAI;AAChB,YAAIA,KAAO,GAAG;AACV,cAAIxwB,KAAIssB,GAAKkE,EAAI;AACjB,UAAAL,KAAMpC,GAAOQ,GAAKY,CAAG,KAAK,KAAKnvB,MAAK,GAAGmvB,KAAOnvB;AAAA,QAClE;AACgB,YAAImvB,IAAMK,GAAM;AACZ,UAAIV,KACAX,GAAI,CAAC;AACT;AAAA,QACpB;AACgB,QAAIU,KACAE,EAAKK,IAAK,MAAM;AACpB,YAAI9R,KAAM8R,IAAKjzB;AACf,YAAIizB,IAAKe,GAAI;AACT,cAAInR,KAAQ2P,IAAKwB,GAAIM,KAAO,KAAK,IAAIN,GAAI7S,EAAG;AAG5C,eAFI0B,KAAQoQ,IAAK,KACbjB,GAAI,CAAC,GACFiB,IAAKqB,IAAM,EAAErB;AAChB,YAAA5W,EAAI4W,CAAE,IAAIX,EAAKzP,KAAQoQ,CAAE;AAAA,QACjD;AACgB,eAAOA,IAAK9R,IAAK,EAAE8R;AACf,UAAA5W,EAAI4W,CAAE,IAAI5W,EAAI4W,IAAKe,CAAE;AAAA,MACzC;AAAA,IACA;AACQ,IAAA3B,EAAG,IAAIa,GAAIb,EAAG,IAAI8B,GAAM9B,EAAG,IAAIY,GAAIZ,EAAG,IAAIU,GACtCG,MACAH,IAAQ,GAAGV,EAAG,IAAIc,GAAKd,EAAG,IAAIlI,GAAIkI,EAAG,IAAIe;AAAA,EAChD,SAAQ,CAACL;AAEV,SAAOE,KAAM5W,EAAI,UAAUoW,IAAQX,GAAIzV,GAAK,GAAG4W,CAAE,IAAI5W,EAAI,SAAS,GAAG4W,CAAE;AAC3E,GAEIsB,KAAQ,SAAUxwB,GAAGwmB,GAAG9M,GAAG;AAC3B,EAAAA,MAAM8M,IAAI;AACV,MAAIxG,IAAKwG,IAAI,IAAK;AAClB,EAAAxmB,EAAEggB,CAAC,KAAKtG,GACR1Z,EAAEggB,IAAI,CAAC,KAAKtG,KAAK;AACrB,GAEI+W,KAAU,SAAUzwB,GAAGwmB,GAAG9M,GAAG;AAC7B,EAAAA,MAAM8M,IAAI;AACV,MAAIxG,IAAKwG,IAAI,IAAK;AAClB,EAAAxmB,EAAEggB,CAAC,KAAKtG,GACR1Z,EAAEggB,IAAI,CAAC,KAAKtG,KAAK,GACjB1Z,EAAEggB,IAAI,CAAC,KAAKtG,KAAK;AACrB,GAEIgX,KAAQ,SAAU1wB,GAAGgtB,GAAI;AAGzB,WADIjO,IAAI,CAAE,GACDrG,IAAI,GAAGA,IAAI1Y,EAAE,QAAQ,EAAE0Y;AAC5B,IAAI1Y,EAAE0Y,CAAC,KACHqG,EAAE,KAAK,EAAE,GAAGrG,GAAG,GAAG1Y,EAAE0Y,CAAC,GAAG;AAEhC,MAAI,IAAIqG,EAAE,QACN4R,IAAK5R,EAAE,MAAO;AAClB,MAAI,CAAC;AACD,WAAO,EAAE,GAAG6R,IAAI,GAAG,EAAG;AAC1B,MAAI,KAAK,GAAG;AACR,QAAIlX,IAAI,IAAIsS,GAAGjN,EAAE,CAAC,EAAE,IAAI,CAAC;AACzB,WAAArF,EAAEqF,EAAE,CAAC,EAAE,CAAC,IAAI,GACL,EAAE,GAAGrF,GAAG,GAAG,EAAG;AAAA,EAC7B;AACI,EAAAqF,EAAE,KAAK,SAAUlf,GAAGC,GAAG;AAAE,WAAOD,EAAE,IAAIC,EAAE;AAAA,GAAI,GAG5Cif,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,OAAO;AAC1B,MAAIkO,IAAIlO,EAAE,CAAC,GAAG/B,IAAI+B,EAAE,CAAC,GAAG8R,IAAK,GAAGC,IAAK,GAAGC,IAAK;AAO7C,OANAhS,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,GAAGkO,EAAE,IAAIjQ,EAAE,GAAG,GAAGiQ,GAAG,GAAGjQ,EAAG,GAMnC8T,KAAM,IAAI;AACb,IAAA7D,IAAIlO,EAAEA,EAAE8R,CAAE,EAAE,IAAI9R,EAAEgS,CAAE,EAAE,IAAIF,MAAOE,GAAI,GACrC/T,IAAI+B,EAAE8R,KAAMC,KAAM/R,EAAE8R,CAAE,EAAE,IAAI9R,EAAEgS,CAAE,EAAE,IAAIF,MAAOE,GAAI,GACjDhS,EAAE+R,GAAI,IAAI,EAAE,GAAG,IAAI,GAAG7D,EAAE,IAAIjQ,EAAE,GAAG,GAAGiQ,GAAG,GAAGjQ,EAAG;AAGjD,WADIgU,IAASL,EAAG,CAAC,EAAE,GACVjY,IAAI,GAAGA,IAAI,GAAG,EAAEA;AACrB,IAAIiY,EAAGjY,CAAC,EAAE,IAAIsY,MACVA,IAASL,EAAGjY,CAAC,EAAE;AAGvB,MAAI9X,IAAK,IAAIqrB,GAAI+E,IAAS,CAAC,GAEvBC,IAAMC,GAAGnS,EAAE+R,IAAK,CAAC,GAAGlwB,GAAI,CAAC;AAC7B,MAAIqwB,IAAMjE,GAAI;AAIV,QAAItU,IAAI,GAAGuX,IAAK,GAEZkB,IAAMF,IAAMjE,GAAIoE,IAAM,KAAKD;AAE/B,SADAR,EAAG,KAAK,SAAU9wB,GAAGC,GAAG;AAAE,aAAOc,EAAGd,EAAE,CAAC,IAAIc,EAAGf,EAAE,CAAC,KAAKA,EAAE,IAAIC,EAAE;AAAA,KAAI,GAC3D4Y,IAAI,GAAG,EAAEA,GAAG;AACf,UAAI2Y,IAAOV,EAAGjY,CAAC,EAAE;AACjB,UAAI9X,EAAGywB,CAAI,IAAIrE;AACX,QAAAiD,KAAMmB,KAAO,KAAMH,IAAMrwB,EAAGywB,CAAI,IAChCzwB,EAAGywB,CAAI,IAAIrE;AAAA;AAGX;AAAA,IAChB;AAEQ,SADAiD,MAAOkB,GACAlB,IAAK,KAAG;AACX,UAAIqB,IAAOX,EAAGjY,CAAC,EAAE;AACjB,MAAI9X,EAAG0wB,CAAI,IAAItE,IACXiD,KAAM,KAAMjD,IAAKpsB,EAAG0wB,CAAI,MAAM,IAE9B,EAAE5Y;AAAA,IAClB;AACQ,WAAOA,KAAK,KAAKuX,GAAI,EAAEvX,GAAG;AACtB,UAAI6Y,IAAOZ,EAAGjY,CAAC,EAAE;AACjB,MAAI9X,EAAG2wB,CAAI,KAAKvE,MACZ,EAAEpsB,EAAG2wB,CAAI,GACT,EAAEtB;AAAA,IAElB;AACQ,IAAAgB,IAAMjE;AAAA,EACd;AACI,SAAO,EAAE,GAAG,IAAIhB,GAAGprB,CAAE,GAAG,GAAGqwB,EAAK;AACpC,GAEIC,KAAK,SAAUlB,GAAG/C,GAAGjtB,GAAG;AACxB,SAAOgwB,EAAE,KAAK,KACR,KAAK,IAAIkB,GAAGlB,EAAE,GAAG/C,GAAGjtB,IAAI,CAAC,GAAGkxB,GAAGlB,EAAE,GAAG/C,GAAGjtB,IAAI,CAAC,CAAC,IAC5CitB,EAAE+C,EAAE,CAAC,IAAIhwB;AACpB,GAEIwxB,KAAK,SAAUzxB,GAAG;AAGlB,WAFIulB,IAAIvlB,EAAE,QAEHulB,KAAK,CAACvlB,EAAE,EAAEulB,CAAC;AACd;AAKJ,WAJImM,IAAK,IAAIxF,GAAI,EAAE3G,CAAC,GAEhBoM,IAAM,GAAGC,IAAM5xB,EAAE,CAAC,GAAG6xB,IAAM,GAC3BnV,IAAI,SAAU/C,GAAG;AAAE,IAAA+X,EAAGC,GAAK,IAAIhY;AAAA,EAAI,GAC9BhB,IAAI,GAAGA,KAAK4M,GAAG,EAAE5M;AACtB,QAAI3Y,EAAE2Y,CAAC,KAAKiZ,KAAOjZ,KAAK4M;AACpB,QAAEsM;AAAA,SACD;AACD,UAAI,CAACD,KAAOC,IAAM,GAAG;AACjB,eAAOA,IAAM,KAAKA,KAAO;AACrB,UAAAnV,EAAE,KAAK;AACX,QAAImV,IAAM,MACNnV,EAAEmV,IAAM,KAAOA,IAAM,MAAO,IAAK,QAAUA,IAAM,KAAM,IAAK,KAAK,GACjEA,IAAM;AAAA,MAE1B,WACqBA,IAAM,GAAG;AAEd,aADAnV,EAAEkV,CAAG,GAAG,EAAEC,GACHA,IAAM,GAAGA,KAAO;AACnB,UAAAnV,EAAE,IAAI;AACV,QAAImV,IAAM,MACNnV,EAAImV,IAAM,KAAM,IAAK,IAAI,GAAGA,IAAM;AAAA,MACtD;AACY,aAAOA;AACH,QAAAnV,EAAEkV,CAAG;AACT,MAAAC,IAAM,GACND,IAAM5xB,EAAE2Y,CAAC;AAAA,IACrB;AAEI,SAAO,EAAE,GAAG+Y,EAAG,SAAS,GAAGC,CAAG,GAAG,GAAGpM,EAAG;AAC3C,GAEIuM,KAAO,SAAUC,GAAIL,GAAI;AAEzB,WADIxE,IAAI,GACCvU,IAAI,GAAGA,IAAI+Y,EAAG,QAAQ,EAAE/Y;AAC7B,IAAAuU,KAAK6E,EAAGpZ,CAAC,IAAI+Y,EAAG/Y,CAAC;AACrB,SAAOuU;AACX,GAGI8E,KAAQ,SAAU7T,GAAK+Q,GAAKZ,GAAK;AAEjC,MAAI/I,IAAI+I,EAAI,QACRrO,IAAI8N,GAAKmB,IAAM,CAAC;AACpB,EAAA/Q,EAAI8B,CAAC,IAAIsF,IAAI,KACbpH,EAAI8B,IAAI,CAAC,IAAIsF,KAAK,GAClBpH,EAAI8B,IAAI,CAAC,IAAI9B,EAAI8B,CAAC,IAAI,KACtB9B,EAAI8B,IAAI,CAAC,IAAI9B,EAAI8B,IAAI,CAAC,IAAI;AAC1B,WAAS,IAAI,GAAG,IAAIsF,GAAG,EAAE;AACrB,IAAApH,EAAI8B,IAAI,IAAI,CAAC,IAAIqO,EAAI,CAAC;AAC1B,UAAQrO,IAAI,IAAIsF,KAAK;AACzB,GAEI0M,KAAO,SAAU3D,GAAKnQ,GAAK8Q,GAAOiD,GAAMC,GAAIC,GAAI5F,GAAI6F,GAAIC,GAAIvD,GAAItI,GAAG;AACnE,EAAAgK,GAAMtS,GAAKsI,KAAKwI,CAAK,GACrB,EAAEkD,EAAG,GAAG;AAMR,WALItX,IAAK8V,GAAMwB,GAAI,EAAE,GAAGI,IAAM1X,EAAG,GAAG2X,IAAM3X,EAAG,GACzC8R,IAAKgE,GAAMyB,GAAI,EAAE,GAAGK,IAAM9F,EAAG,GAAG+F,IAAM/F,EAAG,GACzCgG,IAAKlB,GAAGc,CAAG,GAAGK,IAAOD,EAAG,GAAGE,IAAMF,EAAG,GACpCG,IAAKrB,GAAGgB,CAAG,GAAGM,IAAOD,EAAG,GAAGE,IAAMF,EAAG,GACpCG,IAAS,IAAI/G,GAAI,EAAE,GACdvT,IAAI,GAAGA,IAAIia,EAAK,QAAQ,EAAEja;AAC/B,MAAEsa,EAAOL,EAAKja,CAAC,IAAI,EAAE;AACzB,WAASA,IAAI,GAAGA,IAAIoa,EAAK,QAAQ,EAAEpa;AAC/B,MAAEsa,EAAOF,EAAKpa,CAAC,IAAI,EAAE;AAGzB,WAFIua,IAAKvC,GAAMsC,GAAQ,CAAC,GAAGE,IAAMD,EAAG,GAAGE,IAAOF,EAAG,GAC7CG,IAAO,IACJA,IAAO,KAAK,CAACF,EAAI7G,GAAK+G,IAAO,CAAC,CAAC,GAAG,EAAEA;AACvC;AACJ,MAAIC,IAAQvE,IAAK,KAAM,GACnBwE,IAAQzB,GAAKK,GAAI3E,EAAG,IAAIsE,GAAKM,GAAI3E,EAAG,IAAIjB,GACxCgH,IAAQ1B,GAAKK,GAAII,CAAG,IAAIT,GAAKM,GAAIK,CAAG,IAAIjG,IAAK,KAAK,IAAI6G,IAAOvB,GAAKmB,GAAQE,CAAG,IAAI,IAAIF,EAAO,EAAE,IAAI,IAAIA,EAAO,EAAE,IAAI,IAAIA,EAAO,EAAE;AACpI,MAAIX,KAAM,KAAKgB,KAAQC,KAASD,KAAQE;AACpC,WAAOxB,GAAM7T,GAAKsI,GAAG6H,EAAI,SAASgE,GAAIA,IAAKvD,CAAE,CAAC;AAClD,MAAIK,GAAIqE,GAAIpN,GAAIqI;AAEhB,MADA+B,GAAMtS,GAAKsI,GAAG,KAAK+M,IAAQD,EAAM,GAAG9M,KAAK,GACrC+M,IAAQD,GAAO;AACf,IAAAnE,IAAKrC,GAAKwF,GAAKC,GAAK,CAAC,GAAGiB,IAAKlB,GAAKlM,IAAK0G,GAAK0F,GAAKC,GAAK,CAAC,GAAGhE,IAAK+D;AAC/D,QAAIiB,IAAM3G,GAAKoG,GAAKC,GAAM,CAAC;AAC3B,IAAA3C,GAAMtS,GAAKsI,GAAGoM,IAAM,GAAG,GACvBpC,GAAMtS,GAAKsI,IAAI,GAAGuM,IAAM,CAAC,GACzBvC,GAAMtS,GAAKsI,IAAI,IAAI4M,IAAO,CAAC,GAC3B5M,KAAK;AACL,aAAS9N,IAAI,GAAGA,IAAI0a,GAAM,EAAE1a;AACxB,MAAA8X,GAAMtS,GAAKsI,IAAI,IAAI9N,GAAGwa,EAAI7G,GAAK3T,CAAC,CAAC,CAAC;AACtC,IAAA8N,KAAK,IAAI4M;AAET,aADIM,IAAO,CAACf,GAAMG,CAAI,GACba,IAAK,GAAGA,IAAK,GAAG,EAAEA;AAEvB,eADIC,IAAOF,EAAKC,CAAE,GACTjb,IAAI,GAAGA,IAAIkb,EAAK,QAAQ,EAAElb,GAAG;AAClC,YAAIle,KAAMo5B,EAAKlb,CAAC,IAAI;AACpB,QAAA8X,GAAMtS,GAAKsI,GAAGiN,EAAIj5B,EAAG,CAAC,GAAGgsB,KAAK0M,EAAI14B,EAAG,GACjCA,KAAM,OACNg2B,GAAMtS,GAAKsI,GAAIoN,EAAKlb,CAAC,KAAK,IAAK,GAAG,GAAG8N,KAAKoN,EAAKlb,CAAC,KAAK;AAAA,MACzE;AAAA,EAEA;AAEQ,IAAAyW,IAAK1B,IAAK+F,IAAKjG,IAAKnH,IAAKuH,IAAKc,IAAKjB;AAEvC,WAAS9U,IAAI,GAAGA,IAAI0Z,GAAI,EAAE1Z,GAAG;AACzB,QAAI2X,KAAM4B,EAAKvZ,CAAC;AAChB,QAAI2X,KAAM,KAAK;AACX,UAAI71B,KAAO61B,MAAO,KAAM;AACxB,MAAAI,GAAQvS,GAAKsI,GAAG2I,EAAG30B,KAAM,GAAG,CAAC,GAAGgsB,KAAKgN,EAAGh5B,KAAM,GAAG,GAC7CA,KAAM,MACNg2B,GAAMtS,GAAKsI,GAAI6J,MAAO,KAAM,EAAE,GAAG7J,KAAK2F,GAAK3xB,EAAG;AAClD,UAAI0B,KAAMm0B,KAAM;AAChB,MAAAI,GAAQvS,GAAKsI,GAAGJ,EAAGlqB,EAAG,CAAC,GAAGsqB,KAAKiI,EAAGvyB,EAAG,GACjCA,KAAM,MACNu0B,GAAQvS,GAAKsI,GAAI6J,MAAO,IAAK,IAAI,GAAG7J,KAAK4F,GAAKlwB,EAAG;AAAA,IACjE;AAEY,MAAAu0B,GAAQvS,GAAKsI,GAAG2I,EAAGkB,EAAG,CAAC,GAAG7J,KAAKgN,EAAGnD,EAAG;AAAA,EAEjD;AACI,SAAAI,GAAQvS,GAAKsI,GAAG2I,EAAG,GAAG,CAAC,GAChB3I,IAAIgN,EAAG,GAAG;AACrB,GAEIK,KAAoB,oBAAI3H,GAAI,CAAC,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,OAAO,CAAC,GAEvG0E,KAAmB,oBAAI5E,GAAG,CAAC,GAE3B8H,KAAO,SAAUzF,GAAK0F,GAAKC,GAAMC,GAAKC,GAAM5F,GAAI;AAChD,MAAIhJ,IAAIgJ,EAAG,KAAKD,EAAI,QAChB,IAAI,IAAIrC,GAAGiI,IAAM3O,IAAI,KAAK,IAAI,KAAK,KAAKA,IAAI,GAAI,KAAK4O,CAAI,GAEzDzX,IAAI,EAAE,SAASwX,GAAK,EAAE,SAASC,CAAI,GACnCC,IAAM7F,EAAG,GACTW,KAAOX,EAAG,KAAK,KAAK;AACxB,MAAIyF,GAAK;AACL,IAAI9E,MACAxS,EAAE,CAAC,IAAI6R,EAAG,KAAK;AAenB,aAdI8F,IAAMP,GAAIE,IAAM,CAAC,GACjB/D,IAAIoE,KAAO,IAAIr0B,IAAIq0B,IAAM,MACzBC,KAAS,KAAKL,KAAQ,GAEtB/L,IAAOqG,EAAG,KAAK,IAAIrC,GAAI,KAAK,GAAGqI,IAAOhG,EAAG,KAAK,IAAIrC,GAAIoI,IAAQ,CAAC,GAC/DE,IAAQ,KAAK,KAAKP,IAAO,CAAC,GAAGQ,IAAQ,IAAID,GACzCE,IAAM,SAAU/b,IAAG;AAAE,cAAQ2V,EAAI3V,EAAC,IAAK2V,EAAI3V,KAAI,CAAC,KAAK6b,IAAUlG,EAAI3V,KAAI,CAAC,KAAK8b,KAAUH;AAAA,IAAQ,GAG/FpC,IAAO,IAAI/F,GAAI,IAAK,GAEpBgG,IAAK,IAAIjG,GAAI,GAAG,GAAGkG,IAAK,IAAIlG,GAAI,EAAE,GAElCyI,IAAO,GAAGnI,IAAK,GAAG7T,IAAI4V,EAAG,KAAK,GAAG8D,IAAK,GAAGuC,IAAKrG,EAAG,KAAK,GAAG+D,IAAK,GAC3D3Z,IAAI,IAAI4M,GAAG,EAAE5M,GAAG;AAEnB,UAAIkc,IAAKH,EAAI/b,CAAC,GAEVmc,IAAOnc,IAAI,OAAOoc,IAAQR,EAAKM,CAAE;AAKrC,UAJA3M,EAAK4M,CAAI,IAAIC,GACbR,EAAKM,CAAE,IAAIC,GAGPF,KAAMjc,GAAG;AAET,YAAIqc,IAAMzP,IAAI5M;AACd,aAAKgc,IAAO,OAAQtC,IAAK,WAAW2C,IAAM,OAAO,CAACZ,IAAM;AACpD,UAAAlF,IAAM+C,GAAK3D,GAAK5R,GAAG,GAAGwV,GAAMC,GAAIC,GAAI5F,GAAI6F,GAAIC,GAAI3Z,IAAI2Z,GAAIpD,CAAG,GAC3DmD,IAAKsC,IAAOnI,IAAK,GAAG8F,IAAK3Z;AACzB,mBAAS8D,IAAI,GAAGA,IAAI,KAAK,EAAEA;AACvB,YAAA0V,EAAG1V,CAAC,IAAI;AACZ,mBAASA,IAAI,GAAGA,IAAI,IAAI,EAAEA;AACtB,YAAA2V,EAAG3V,CAAC,IAAI;AAAA,QAChC;AAEgB,YAAIyQ,IAAI,GAAGjtB,IAAI,GAAGg1B,IAAOj1B,GAAGk1B,IAAMJ,IAAOC,IAAQ;AACjD,YAAIC,IAAM,KAAKH,KAAMH,EAAI/b,IAAIuc,CAAG;AAM5B,mBALIC,IAAO,KAAK,IAAIlF,GAAG+E,CAAG,IAAI,GAC1BI,IAAO,KAAK,IAAI,OAAOzc,CAAC,GAGxB0c,KAAK,KAAK,IAAI,KAAKL,CAAG,GACnBE,KAAOE,KAAQ,EAAEH,KAAQH,KAAQC,KAAO;AAC3C,gBAAIzG,EAAI3V,IAAIuU,CAAC,KAAKoB,EAAI3V,IAAIuU,IAAIgI,CAAG,GAAG;AAEhC,uBADII,KAAK,GACFA,KAAKD,MAAM/G,EAAI3V,IAAI2c,EAAE,KAAKhH,EAAI3V,IAAI2c,KAAKJ,CAAG,GAAG,EAAEI;AAClD;AACJ,kBAAIA,KAAKpI,GAAG;AAGR,oBAFAA,IAAIoI,IAAIr1B,IAAIi1B,GAERI,KAAKH;AACL;AAMJ,yBAFII,KAAM,KAAK,IAAIL,GAAKI,KAAK,CAAC,GAC1BE,KAAK,GACA/Y,IAAI,GAAGA,IAAI8Y,IAAK,EAAE9Y,GAAG;AAC1B,sBAAIgZ,KAAK9c,IAAIuc,IAAMzY,IAAI,OACnBiZ,KAAMxN,EAAKuN,EAAE,GACbzI,KAAKyI,KAAKC,KAAM;AACpB,kBAAI1I,KAAKwI,OACLA,KAAKxI,IAAI+H,IAAQU;AAAA,gBACzD;AAAA,cACA;AAAA,YACA;AAEwB,YAAAX,IAAOC,GAAOA,IAAQ7M,EAAK4M,CAAI,GAC/BI,KAAOJ,IAAOC,IAAQ;AAAA,UAC9C;AAGgB,YAAI90B,GAAG;AAGH,UAAAiyB,EAAKG,GAAI,IAAI,YAAa3F,GAAMQ,CAAC,KAAK,KAAML,GAAM5sB,CAAC;AACnD,cAAI01B,KAAMjJ,GAAMQ,CAAC,IAAI,IAAI0I,KAAM/I,GAAM5sB,CAAC,IAAI;AAC1C,UAAAusB,KAAMJ,GAAKuJ,EAAG,IAAItJ,GAAKuJ,EAAG,GAC1B,EAAEzD,EAAG,MAAMwD,EAAG,GACd,EAAEvD,EAAGwD,EAAG,GACRhB,IAAKjc,IAAIuU,GACT,EAAEyH;AAAA,QACtB;AAEoB,UAAAzC,EAAKG,GAAI,IAAI/D,EAAI3V,CAAC,GAClB,EAAEwZ,EAAG7D,EAAI3V,CAAC,CAAC;AAAA,MAE/B;AAAA,IACA;AACQ,SAAKA,IAAI,KAAK,IAAIA,GAAGic,CAAE,GAAGjc,IAAI4M,GAAG,EAAE5M;AAC/B,MAAAuZ,EAAKG,GAAI,IAAI/D,EAAI3V,CAAC,GAClB,EAAEwZ,EAAG7D,EAAI3V,CAAC,CAAC;AAEf,IAAAuW,IAAM+C,GAAK3D,GAAK5R,GAAG0X,GAAKlC,GAAMC,GAAIC,GAAI5F,GAAI6F,GAAIC,GAAI3Z,IAAI2Z,GAAIpD,CAAG,GACxDkF,MACD7F,EAAG,IAAKW,IAAM,IAAKxS,EAAGwS,IAAM,IAAK,CAAC,KAAK,GAEvCA,KAAO,GACPX,EAAG,IAAIgG,GAAMhG,EAAG,IAAIrG,GAAMqG,EAAG,IAAI5V,GAAG4V,EAAG,IAAIqG;AAAA,EAEvD,OACS;AACD,aAASjc,IAAI4V,EAAG,KAAK,GAAG5V,IAAI4M,IAAI6O,GAAKzb,KAAK,OAAO;AAE7C,UAAId,KAAIc,IAAI;AACZ,MAAId,MAAK0N,MAEL7I,EAAGwS,IAAM,IAAK,CAAC,IAAIkF,GACnBvc,KAAI0N,IAER2J,IAAM8C,GAAMtV,GAAGwS,IAAM,GAAGZ,EAAI,SAAS3V,GAAGd,EAAC,CAAC;AAAA,IACtD;AACQ,IAAA0W,EAAG,IAAIhJ;AAAA,EACf;AACI,SAAOyI,GAAI,GAAG,GAAGkG,IAAMnG,GAAKmB,CAAG,IAAIiF,CAAI;AAC3C,GAEI0B,KAAsB,2BAAY;AAElC,WADI7W,IAAI,IAAI,WAAW,GAAG,GACjBrG,IAAI,GAAGA,IAAI,KAAK,EAAEA,GAAG;AAE1B,aADI3Y,IAAI2Y,GAAGiH,IAAI,GACR,EAAEA;AACL,MAAA5f,KAAMA,IAAI,KAAM,cAAeA,MAAM;AACzC,IAAAgf,EAAErG,CAAC,IAAI3Y;AAAA,EACf;AACI,SAAOgf;AACX,EAAI,GAEA8W,KAAM,WAAY;AAClB,MAAI91B,IAAI;AACR,SAAO;AAAA,IACH,GAAG,SAAUC,GAAG;AAGZ,eADI81B,IAAK/1B,GACA2Y,IAAI,GAAGA,IAAI1Y,EAAE,QAAQ,EAAE0Y;AAC5B,QAAAod,IAAKF,GAAME,IAAK,MAAO91B,EAAE0Y,CAAC,CAAC,IAAKod,MAAO;AAC3C,MAAA/1B,IAAI+1B;AAAA,IACP;AAAA,IACD,GAAG,WAAY;AAAE,aAAO,CAAC/1B;AAAA,IAAE;AAAA,EAC9B;AACL,GAyBIg2B,KAAO,SAAU1H,GAAK+F,GAAKH,GAAKC,GAAM5F,GAAI;AAC1C,MAAI,CAACA,MACDA,IAAK,EAAE,GAAG,EAAG,GACT8F,EAAI,aAAY;AAChB,QAAI7F,IAAO6F,EAAI,WAAW,SAAS,MAAM,GACrC4B,IAAS,IAAIhK,GAAGuC,EAAK,SAASF,EAAI,MAAM;AAC5C,IAAA2H,EAAO,IAAIzH,CAAI,GACfyH,EAAO,IAAI3H,GAAKE,EAAK,MAAM,GAC3BF,IAAM2H,GACN1H,EAAG,IAAIC,EAAK;AAAA,EACxB;AAEI,SAAOuF,GAAKzF,GAAK+F,EAAI,SAAS,OAAO,IAAIA,EAAI,OAAOA,EAAI,OAAO,OAAQ9F,EAAG,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,IAAID,EAAI,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,KAAO,KAAK+F,EAAI,KAAMH,GAAKC,GAAM5F,CAAE;AACxL,GAmJI2H,KAAS,SAAUj2B,GAAGF,GAAG4Z,GAAG;AAC5B,SAAOA,GAAG,EAAE5Z;AACR,IAAAE,EAAEF,CAAC,IAAI4Z,GAAGA,OAAO;AACzB,GAEIwc,KAAM,SAAUn2B,GAAGigB,GAAG;AACtB,MAAImW,IAAKnW,EAAE;AAIX,MAHAjgB,EAAE,CAAC,IAAI,IAAIA,EAAE,CAAC,IAAI,KAAKA,EAAE,CAAC,IAAI,GAAGA,EAAE,CAAC,IAAIigB,EAAE,QAAQ,IAAI,IAAIA,EAAE,SAAS,IAAI,IAAI,GAAGjgB,EAAE,CAAC,IAAI,GACnFigB,EAAE,SAAS,KACXiW,GAAOl2B,GAAG,GAAG,KAAK,MAAM,IAAI,KAAKigB,EAAE,SAAS,KAAK,IAAG,CAAE,IAAI,GAAI,CAAC,GAC/DmW,GAAI;AACJ,IAAAp2B,EAAE,CAAC,IAAI;AACP,aAAS2Y,IAAI,GAAGA,KAAKyd,EAAG,QAAQ,EAAEzd;AAC9B,MAAA3Y,EAAE2Y,IAAI,EAAE,IAAIyd,EAAG,WAAWzd,CAAC;AAAA,EACvC;AACA,GAGI0d,KAAM,SAAUp2B,GAAG;AACnB,GAAIA,EAAE,CAAC,KAAK,MAAMA,EAAE,CAAC,KAAK,OAAOA,EAAE,CAAC,KAAK,MACrCiuB,GAAI,GAAG,mBAAmB;AAC9B,MAAIoI,IAAMr2B,EAAE,CAAC,GACTsuB,IAAK;AACT,EAAI+H,IAAM,MACN/H,MAAOtuB,EAAE,EAAE,IAAIA,EAAE,EAAE,KAAK,KAAK;AACjC,WAASs2B,KAAMD,KAAO,IAAI,MAAMA,KAAO,IAAI,IAAIC,IAAK,GAAGA,KAAM,CAACt2B,EAAEsuB,GAAI;AAChE;AACJ,SAAOA,KAAM+H,IAAM;AACvB,GAEIE,KAAM,SAAUv2B,GAAG;AACnB,MAAIitB,IAAIjtB,EAAE;AACV,UAAQA,EAAEitB,IAAI,CAAC,IAAIjtB,EAAEitB,IAAI,CAAC,KAAK,IAAIjtB,EAAEitB,IAAI,CAAC,KAAK,KAAKjtB,EAAEitB,IAAI,CAAC,KAAK,QAAQ;AAC5E,GAEIuJ,KAAO,SAAUxW,GAAG;AAAE,SAAO,MAAMA,EAAE,WAAWA,EAAE,SAAS,SAAS,IAAI;AAAK;AA+R1E,SAASyW,GAASC,GAAMC,GAAM;AACjC,EAAKA,MACDA,IAAO,CAAE;AACb,MAAI52B,IAAI81B,GAAG,GAAI5I,IAAIyJ,EAAK;AACxB,EAAA32B,EAAE,EAAE22B,CAAI;AACR,MAAI12B,IAAI+1B,GAAKW,GAAMC,GAAMH,GAAKG,CAAI,GAAG,CAAC,GAAGrR,IAAItlB,EAAE;AAC/C,SAAOk2B,GAAIl2B,GAAG22B,CAAI,GAAGV,GAAOj2B,GAAGslB,IAAI,GAAGvlB,EAAE,EAAC,CAAE,GAAGk2B,GAAOj2B,GAAGslB,IAAI,GAAG2H,CAAC,GAAGjtB;AACvE;AAgFO,SAAS42B,GAAWF,GAAMC,GAAM;AACnC,MAAIrI,IAAK8H,GAAIM,CAAI;AACjB,SAAIpI,IAAK,IAAIoI,EAAK,UACdzI,GAAI,GAAG,mBAAmB,GACvBG,GAAMsI,EAAK,SAASpI,GAAI,EAAE,GAAG,EAAE,GAAG,EAAG,GAAsB,IAAItC,GAAGuK,GAAIG,CAAI,CAAC,GAAGC,CAAuB;AAChH;AAoRA,IAAIE,KAAK,OAAO,cAAe,OAA6B,oBAAI,YAAa,GAEzEC,KAAM;AACV,IAAI;AACA,EAAAD,GAAG,OAAOjG,IAAI,EAAE,QAAQ,GAAI,CAAE,GAC9BkG,KAAM;AACV,QACU;AAAA;ACxnDV,IAAI7d,KAAY,OAAO,gBACnBC,KAAS,CAACC,GAAQvb,MAAUqb,GAAUE,GAAQ,QAAQ,EAAE,OAAAvb,GAAO,cAAc,IAAM,GAGnFm5B,KAAmC7d,gBAAAA,GAAO,CAACiE,MACxCA,EAAI,SAGFA,EAAI,CAAC,EAAE,YAAa,IAAGA,EAAI,MAAM,CAAC,IAFhCA,GAGR,kBAAkB,GAGjB6Z,KAAmC9d,gBAAAA,GAAO,CAAClb,GAAOi5B,MAAc;AAClE,QAAMC,IAAS,CAAE;AACjB,WAAS53B,IAAS,GAAGA,IAAStB,EAAM,QAAQsB,KAAU23B,GAAW;AAC/D,UAAME,IAAQ,IAAI,WAAWF,CAAS;AACtC,IAAAE,EAAM,IAAIn5B,EAAM,MAAMsB,GAAQA,IAAS23B,CAAS,CAAC,GACjDC,EAAO,KAAKC,CAAK;AAAA,EACrB;AACE,QAAMC,IAAYF,EAAOA,EAAO,SAAS,CAAC,GACpCG,IAAiBr5B,EAAM,SAASi5B,GAChCK,IAAoBD,KAAkB,IAAIA,IAAiB,KAAK,GAChEE,IAAWH,EAAU,MAAM,GAAGE,CAAiB;AACrD,SAAAJ,EAAOA,EAAO,SAAS,CAAC,IAAIK,GACrBL;AACT,GAAG,kBAAkB,GAIjBM,IAA2Bte,gBAAAA,GAAO,CAACtb,GAAOwd,GAAMqc,IAAO,OAAS;AAClE,MAAI75B,aAAiB;AACnB,WAAI65B,IACK,IAAI,WAAW75B,CAAK,IAEtBA;AAET,MAAI,OAAOA,KAAU,YAAYA,EAAM,MAAM,0BAA0B,GAAG;AACxE,UAAMU,IAAS,IAAI,YAAYV,EAAM,SAAS,KAAK,CAAC;AACpD,QAAI0B,IAAS;AACb,aAASoZ,IAAI,GAAGA,IAAIpa,EAAO,QAAQoa;AACjC,MAAApa,EAAOoa,CAAC,IAAI,SAAS9a,EAAM,UAAU0B,GAAQA,IAAS,CAAC,GAAG,EAAE,GAC5DA,KAAU;AAEZ,WAAOhB;AAAA,EACX;AAEE,QAAMwc,IAAU,gBADIM,IAAO,IAAIA,CAAI,OAAO,EACC,IAAIxd,CAAK;AAAA;AAEpD,QAAM,IAAI+c,EAAUF,EAAU,cAAcK,CAAO;AACrD,GAAG,UAAU,GAGT4c,KAA8Bxe,gBAAAA,GAAO,CAACye,MAAW;AACnD,QAAMC,IAAaD,EAAO,IAAI,CAACE,MACzBA,aAAiB,aACZA,IAEF,WAAW,KAAKA,CAAK,CAC7B,GACKC,IAAYF,EAAW,OAAO,CAACG,GAAOC,MAASD,IAAQC,EAAK,QAAQ,CAAC,GACrEC,IAAe,IAAI,WAAWH,CAAS;AAC7C,SAAAF,EAAW,OAAO,CAACt4B,GAAQ44B,OACzBD,EAAa,IAAIC,GAAQ54B,CAAM,GACxBA,IAAS44B,EAAO,SACtB,CAAC,GACGD;AACT,GAAG,aAAa,GACZE,KAAyBjf,gBAAAA,GAAO,CAACye,MAAW;AAC9C,QAAM35B,IAAQ25B,EAAO,IAAI,CAACje,MAAM8d,EAAS9d,CAAC,CAAC;AAC3C,SAAOge,GAAY15B,CAAK;AAC1B,GAAG,QAAQ,GAGPo6B,KAAgB;AACpB,SAASC,EAAQ3B,GAAM;AACrB,QAAM14B,IAAQw5B,EAASd,CAAI;AAC3B,MAAIp4B,IAAS;AACb,WAASoa,IAAI,GAAGA,IAAI1a,EAAM,QAAQ0a,KAAK;AACrC,UAAMgB,IAAI1b,EAAM0a,CAAC;AACjB,IAAApa,KAAU85B,IAAe1e,IAAI,QAAQ,CAAC,IAAI0e,GAAc1e,IAAI,EAAE;AAAA,EAClE;AACE,SAAOpb;AACT;AACA4a,GAAOmf,GAAS,SAAS;AAItB,IAACC,KAAkCpf,gBAAAA,GAAO,CAACiE,MAAQ;AAiBpD,QAAM4K,IAhBkB;AAAA,IACtB,CAACzC,MAAMA,EAAE,QAAQ,QAAQ,GAAG;AAAA;AAAA,IAE5B,CAACA,MAAMA,EAAE,QAAQ,OAAO,GAAG;AAAA;AAAA,IAE3B,CAACA,MAAMA,EAAE,QAAQ,MAAM,GAAG;AAAA;AAAA,IAE1B,CAACA,MAAMA,EAAE,QAAQ,WAAW,CAACiT,MAAUA,EAAM,MAAM,EAAE,EAAE,YAAW,CAAE;AAAA;AAAA,IAEpE,CAACjT,MAAMA,EAAE,QAAQ,MAAM,EAAE;AAAA;AAAA,IAEzB,CAACA,MAAMA,EAAE,QAAQ,QAAQ,EAAE;AAAA;AAAA,IAE3B,CAACA,MAAMA,EAAE,CAAC,EAAE,gBAAgBA,EAAE,MAAM,CAAC;AAAA;AAAA,EAEtC,EAC8B,OAAO,CAACA,GAAGvG,MAAMA,EAAEuG,CAAC,GAAGnI,CAAG;AACzD,MAAI4K,MAAW,IAAI;AACjB,UAAMyQ,IAAS,wBAAwBrb,CAAG,qCAAqC;AAAA,MAC7E;AAAA,IACD;AACD,UAAM,IAAIsb,EAAW/d,EAAW,cAAc8d,CAAM;AAAA,EACxD;AACE,SAAOzQ;AACT,GAAG,iBAAiB,GAGhB2Q,KAAqB,IACrBC,KAAoB,OAAO,KAAK,EAAE,IAAI,OAAOD,EAAkB,GAC/DE,KAA8B1f,gBAAAA,GAAO,CAAC2f,MAAO,KAAK,MAAMA,IAAK,GAAG,GAAG,aAAa,GAChFC,KAA8B5f,gBAAAA,GAAO,CAAC6f,MAAYA,IAAU,KAAK,aAAa,GAC9EC,KAAqC9f,gBAAAA,GAAO,CAAC+f,MAAU,OAAO,OAAOA,CAAK,IAAIN,EAAiB,GAAG,oBAAoB,GACtHO,KAAqChgB,gBAAAA,GAAO,CAACigB,MAAgB,OAAO,OAAOA,CAAW,IAAIR,EAAiB,GAAG,oBAAoB,GAClIS,KAA0ClgB,gBAAAA,GAAO,CAAC+f,MAAUH,GAAYE,GAAmBC,CAAK,CAAC,GAAG,yBAAyB,OAC7HI,MAAWze,KAAA,cAAwB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW1C,OAAO,UAAUqe,GAAO;AACtB,WAAO,IAAIre,GAAUwe,GAAwBH,CAAK,CAAC;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,OAAO,qBAAqBK,GAAkB;AAC5C,WAAO,IAAI1e,GAAU0e,CAAgB;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,OAAO,gBAAgBH,GAAa;AAClC,WAAO,IAAIve,GAAUke,GAAYK,CAAW,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAIE,YAAYI,GAAM;AAChB,UAAMA,CAAI;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,UAAU;AACR,WAAOL,GAAmB,KAAK,eAAe;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAIE,qBAAqB;AACnB,WAAO,KAAK,QAAS;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIE,gBAAgB;AACd,WAAON,GAAY,KAAK,SAAS;AAAA,EACrC;AACA,GApDI1f,GAAO0B,IAAM,UAAU,GAEzBK,EAJaL,IAIN,cAAa,KAJPA;AAyDf,SAAS4e,GAAM/3B,GAAM;AACnB,SAAO,IAAI,QAAQ,CAACg4B,MAAY;AAC9B,eAAW,MAAM;AACf,MAAAA,EAAQ,EAAI;AAAA,IACb,GAAEh4B,CAAI;AAAA,EACX,CAAG;AACH;AACAyX,GAAOsgB,IAAO,OAAO;AAGrB,IAAIE,KAAsB;AAAA,EACxB,YAAY;AAAA,EACZ,sBAAsB;AAAA,IACpB,IAAI;AAAA,MACF,WAAW;AAAA,QACT,IAAI;AAAA,UACF,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,eAAe;AAAA,UACf,gBAAgB;AAAA,UAChB,UAAU;AAAA,UACV,0BAA0B;AAAA,QACpC;AAAA,MACO;AAAA,MACD,kBAAkB;AAAA,QAChB,IAAI;AAAA,UACF,sBAAsB;AAAA,UACtB,2BAA2B;AAAA,UAC3B,yBAAyB;AAAA,UACzB,uBAAuB;AAAA,QACjC;AAAA,MACO;AAAA,MACD,eAAe;AAAA,QACb,IAAI;AAAA,UACF,mBAAmB;AAAA,UACnB,wBAAwB;AAAA,QAClC;AAAA,MACO;AAAA,MACD,iBAAiB;AAAA,QACf,IAAI;AAAA,UACF,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,QAC7B;AAAA,MACO;AAAA,MACD,YAAY;AAAA,QACV,IAAI;AAAA,UACF,kBAAkB;AAAA,UAClB,cAAc;AAAA,QACxB;AAAA,MACO;AAAA,MACD,UAAU;AAAA,MACV,WAAW;AAAA,QACT,IAAI;AAAA,UACF,KAAK;AAAA,UACL,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,cAAc;AAAA,UACd,eAAe;AAAA,UACf,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,KAAK;AAAA,UACL,KAAK;AAAA,UACL,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,KAAK;AAAA,YACH,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,KAAK;AAAA,YACH,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,KAAK;AAAA,YACH,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,KAAK;AAAA,YACH,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,KAAK;AAAA,YACH,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,KAAK;AAAA,YACH,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,eAAe;AAAA,YACb,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,cAAc;AAAA,YAC5B;AAAA,UACW;AAAA,UACD,KAAK;AAAA,YACH,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,cAAc;AAAA,YAC5B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,cAAc;AAAA,YAC5B;AAAA,UACW;AAAA,UACD,MAAM;AAAA,YACJ,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,cAAc;AAAA,YAC5B;AAAA,UACW;AAAA,UACD,eAAe;AAAA,YACb,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACW;AAAA,UACD,YAAY;AAAA,YACV,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,cAAc;AAAA,YAC5B;AAAA,UACW;AAAA,UACD,sBAAsB;AAAA,UACtB,mBAAmB;AAAA,YACjB,gBAAgB;AAAA,cACd,MAAM;AAAA,cACN,eAAe;AAAA,YAC7B;AAAA,UACA;AAAA,QACA;AAAA,MACO;AAAA,MACD,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,8BAA8B;AAAA,MAC9B,oBAAoB;AAAA,IAC1B;AAAA,EACG;AAAA,EACD,WAAW;AAAA,IACT,KAAK;AAAA,MACH,aAAa;AAAA,IACnB;AAAA,EACA;AACA,GAGIC,KAAmB;AAAA,EACrB,cAAc;AAAA,EACd,gBAAgB;AAAA,IACd,MAAM;AAAA,MACJ,UAAU;AAAA,IAChB;AAAA,EACA;AACA,GAGIC,KAAsB;AAAA,EACxB,OAAO,CAAE;AAAA,EACT,UAAU,CAAE;AAAA,EACZ,WAAW,CAAE;AAAA,EACb,OAAO,CAAE;AAAA,EACT,cAAc;AAAA,EACd,iBAAiB;AACnB,GAGIC,KAAyB;AAAA,EAC3B,aAAaH;AAAA,EACb,UAAUC;AAAA,EACV,aAAaC;AACf,GACIE,KAAsB;AAG1B,SAASC,GAAUn8B,GAAO;AACxB,SAAOA,MAAU;AACnB;AACAsb,GAAO6gB,IAAW,WAAW;AAK7B,IAAIC,KAAOrP,EAAG,CAAC,GACXsP,KAAQtP,EAAG,EAAE,GACbuP,KAAW,8DACXC,KAAS;AACb,SAASC,GAASC,GAAQ;AACxB,MAAIF,MAAU,MAAM;AAClB,IAAAA,KAAS,CAAE;AACX,aAASzhB,IAAI,GAAGA,IAAIwhB,GAAS,QAAQxhB;AACnC,MAAAyhB,GAAOD,GAASxhB,CAAC,CAAC,IAAIiS,EAAGjS,CAAC;AAAA,EAEhC;AACE,QAAMpa,IAAS67B,GAAOE,CAAM;AAC5B,MAAI/7B,KAAU;AACZ,UAAM,IAAIg8B,EAAWC,EAAW,cAAc,wBAAwBF,CAAM,EAAE;AAEhF,SAAO1P,EAAGrsB,CAAM;AAClB;AACA4a,GAAOkhB,IAAU,UAAU;AAC3B,SAASI,GAAaC,GAAQ;AAC5B,QAAMz8B,IAAQw5B,EAASiD,CAAM;AAC7B,MAAI78B,IAAQ+sB,EAAG3sB,CAAK,GAChBM,IAAS;AACb,SAAOV,EAAM,GAAGo8B,EAAI;AAClB,IAAA17B,IAAS47B,GAAS,OAAOt8B,EAAM,IAAIq8B,EAAK,CAAC,CAAC,IAAI37B,GAC9CV,IAAQA,EAAM,IAAIq8B,EAAK;AAEzB,WAASvhB,IAAI,GAAGA,IAAI1a,EAAM,UACpB,CAAAA,EAAM0a,CAAC,GADqBA;AAIhC,IAAApa,IAAS47B,GAAS,CAAC,IAAI57B;AAEzB,SAAOA;AACT;AACA4a,GAAOshB,IAAc,cAAc;AACnC,SAASE,GAAa98B,GAAO;AAC3B,MAAIU,IAAS07B;AACb,WAASthB,IAAI,GAAGA,IAAI9a,EAAM,QAAQ8a;AAChC,IAAApa,IAASA,EAAO,IAAI27B,EAAK,GACzB37B,IAASA,EAAO,IAAI87B,GAASx8B,EAAM8a,CAAC,EAAE,SAAQ,CAAE,CAAC;AAEnD,SAAOpa;AACT;AACA4a,GAAOwhB,IAAc,cAAc;AAInC,SAASC,GAAUjE,GAAMna,GAAOa,GAAK;AACnC,QAAMpf,IAAQw5B,EAASd,CAAI;AAC3B,MAAItZ,KAAO,QAAQA,IAAMpf,EAAM;AAC7B,UAAM,IAAI48B,EAAWC,EAAW,cAAc,iCAAiC;AAEjF,SAAOxC,EAAQr6B,EAAM,MAAMue,KAAgB,GAAWa,KAAcpf,EAAM,MAAY,CAAC;AACzF;AACAkb,GAAOyhB,IAAW,WAAW;AAI7B,SAASG,GAAYC,GAAMC,IAAO,IAAM;AACtC,MAAI7d,IAAM4d;AACV,EAAIC,MACF7d,IAAM4d,EAAK,UAAU,KAAK;AAE5B,QAAMz8B,IAAS,CAAE;AACjB,WAASoa,IAAI,GAAGA,IAAIyE,EAAI,QAAQzE,KAAK,GAAG;AACtC,UAAM3Y,IAAIod,EAAI,WAAWzE,CAAC;AAC1B,QAAI3Y,IAAI;AACN,MAAAzB,EAAO,KAAKyB,CAAC;AAAA,aACJA,IAAI;AACb,MAAAzB,EAAO,KAAKyB,KAAK,IAAI,GAAG,GACxBzB,EAAO,KAAKyB,IAAI,KAAK,GAAG;AAAA,cACdA,IAAI,WAAW,OAAO;AAChC,MAAA2Y,KAAK;AACL,YAAMuiB,IAAK9d,EAAI,WAAWzE,CAAC;AAC3B,UAAIA,KAAKyE,EAAI,WAAW8d,IAAK,WAAW;AACtC,cAAM,IAAIC;AAAAA,UACRC,EAAW;AAAA,UACX;AAAA,QACD;AAEH,YAAMC,IAAO,UAAUr7B,IAAI,SAAS,OAAOk7B,IAAK;AAChD,MAAA38B,EAAO,KAAK88B,KAAQ,KAAK,GAAG,GAC5B98B,EAAO,KAAK88B,KAAQ,KAAK,KAAK,GAAG,GACjC98B,EAAO,KAAK88B,KAAQ,IAAI,KAAK,GAAG,GAChC98B,EAAO,KAAK88B,IAAO,KAAK,GAAG;AAAA,IACjC;AACM,MAAA98B,EAAO,KAAKyB,KAAK,KAAK,GAAG,GACzBzB,EAAO,KAAKyB,KAAK,IAAI,KAAK,GAAG,GAC7BzB,EAAO,KAAKyB,IAAI,KAAK,GAAG;AAAA,EAE9B;AACE,SAAO,IAAI,WAAWzB,CAAM;AAC9B;AACA4a,GAAO4hB,IAAa,aAAa;AAGjC,SAASO,GAAQ1oB,GAAQrT,GAAQtB,GAAO+pB,GAAQuT,GAAc;AAC5D,iBAAQ,IAAI,+BAA+Bh8B,CAAM,KAAKqT,CAAM,YAAY3U,CAAK,EAAE,GACxEsB;AACT;AACA4Z,GAAOmiB,IAAS,SAAS;AACzB,SAASE,GAAOC,GAAY;AAC1B,SAAOA,EAAW,IAAI,CAACC,MACjBA,KAAa,QACR,OAAO,aAAaA,CAAS,KAEtCA,KAAa,OACN,OAAO;AAAA,KACXA,KAAa,KAAK,QAAQ;AAAA,KAC1BA,IAAY,QAAQ;AAAA,EACtB,EACF,EAAE,KAAK,EAAE;AACZ;AACAviB,GAAOqiB,IAAQ,QAAQ;AACvB,SAASG,GAAkBC,GAAQ;AACjC,QAAM39B,IAAQw5B,EAASmE,GAAQ,OAAO,GAChCr9B,IAAS,CAAE;AACjB,MAAIoa,IAAI;AACR,SAAOA,IAAI1a,EAAM,UAAQ;AACvB,UAAM+B,IAAI/B,EAAM0a,GAAG;AACnB,QAAI,EAAA3Y,KAAK,IAAS;AAChB,MAAAzB,EAAO,KAAKyB,CAAC;AACb;AAAA,IACN;AACI,QAAI67B,IAAc,MACdC,IAAe;AACnB,SAAK97B,IAAI,SAAS;AAChB,MAAA67B,IAAc,GACdC,IAAe;AAAA,cACL97B,IAAI,SAAS;AACvB,MAAA67B,IAAc,GACdC,IAAe;AAAA,cACL97B,IAAI,SAAS;AACvB,MAAA67B,IAAc,GACdC,IAAe;AAAA,SACV;AACL,OAAK97B,IAAI,SAAS,MAChB2Y,KAAK2iB,GAAQ,uBAAuB3iB,IAAI,GAAG1a,CAAa,IAExD0a,KAAK2iB,GAAQ,cAAc3iB,IAAI,GAAG1a,CAAa;AAEjD;AAAA,IACN;AACI,QAAI0a,IAAI,IAAIkjB,KAAe59B,EAAM,QAAQ;AACvC,MAAA0a,KAAK2iB,GAAQ,WAAW3iB,IAAI,GAAG1a,CAAa;AAC5C;AAAA,IACN;AACI,QAAI2gB,IAAM5e,KAAK,KAAK,IAAI67B,IAAc,KAAK;AAC3C,aAASpf,IAAI,GAAGA,IAAIof,GAAapf,KAAK;AACpC,YAAMsf,IAAW99B,EAAM0a,CAAC;AACxB,WAAKojB,IAAW,SAAS,KAAK;AAC5B,QAAApjB,KAAK2iB,GAAQ,oBAAoB3iB,GAAG1a,CAAa,GACjD2gB,IAAM;AACN;AAAA,MACR;AACM,MAAAA,IAAMA,KAAO,IAAImd,IAAW,IAC5BpjB;AAAA,IACN;AACI,QAAIiG,MAAQ,MAGZ;AAAA,UAAIA,IAAM,SAAS;AACjB,QAAAjG,KAAK2iB,GAAQ,gBAAgB3iB,IAAI,IAAIkjB,GAAa59B,CAAkB;AACpE;AAAA,MACN;AACI,UAAI2gB,KAAO,SAASA,KAAO,OAAO;AAChC,QAAAjG,KAAK2iB,GAAQ,mBAAmB3iB,IAAI,IAAIkjB,GAAa59B,CAAkB;AACvE;AAAA,MACN;AACI,UAAI2gB,KAAOkd,GAAc;AACvB,QAAAnjB,KAAK2iB,GAAQ,YAAY3iB,IAAI,IAAIkjB,GAAa59B,CAAkB;AAChE;AAAA,MACN;AACI,MAAAM,EAAO,KAAKqgB,CAAG;AAAA;AAAA,EACnB;AACE,SAAOrgB;AACT;AACA4a,GAAOwiB,IAAmB,mBAAmB;AAC7C,SAASK,GAAa/9B,GAAO;AAC3B,SAAOu9B,GAAOG,GAAkB19B,CAAK,CAAC;AACxC;AACAkb,GAAO6iB,IAAc,cAAc;AAIhC,IAACC,KAAmC9iB,gBAAAA,GAAO,CAAC+iB,MAAqB;AAClE,MAAI,CAACA;AACH,WAAO;AAET,QAAMC,IAAwB1E,EAASyE,CAAgB,GACjDE,IAA0B1F,GAASyF,GAAuB,EAAE,OAAO,EAAC,CAAE,GACtEE,IAAyB,OAAO,aAAa;AAAA,IACjD;AAAA,IACA,IAAI,WAAWD,CAAuB;AAAA,EACvC;AAED,SADgC,KAAKC,CAAsB;AAE7D,GAAG,kBAAkB,GACjBC,KAAqCnjB,gBAAAA,GAAO,CAACojB,MAAqB;AACpE,QAAMC,IAA2B,KAAKD,CAAgB,GAChDE,IAA4B,IAAI,WAAWD,EAAyB,MAAM,EAAE;AAAA,IAChF,CAACE,GAAG,MAAMF,EAAyB,WAAW,CAAC;AAAA,EAChD;AAED,SADgC3F,GAAW4F,CAAyB;AAEtE,GAAG,oBAAoB;AAGvB,SAASE,GAAkBC,GAAI;AAC7B,QAAM,IAAI,MAAM,2BAA2B;AAC7C;AACAzjB,GAAOwjB,IAAmB,mBAAmB;ACzuB7C,SAASE,GAAQ5M,GAAG;AAChB,MAAI,CAAC,OAAO,cAAcA,CAAC,KAAKA,IAAI;AAChC,UAAM,IAAI,MAAM,oCAAoCA,CAAC;AAC7D;AAEA,SAAS6M,GAAQh9B,GAAG;AAChB,SAAOA,aAAa,cAAe,YAAY,OAAOA,CAAC,KAAKA,EAAE,YAAY,SAAS;AACvF;AAEA,SAASi9B,GAAOh9B,MAAMi9B,GAAS;AAC3B,MAAI,CAACF,GAAQ/8B,CAAC;AACV,UAAM,IAAI,MAAM,qBAAqB;AACzC,MAAIi9B,EAAQ,SAAS,KAAK,CAACA,EAAQ,SAASj9B,EAAE,MAAM;AAChD,UAAM,IAAI,MAAM,mCAAmCi9B,IAAU,kBAAkBj9B,EAAE,MAAM;AAC/F;AAEA,SAASk9B,GAAMrX,GAAG;AACd,MAAI,OAAOA,KAAM,cAAc,OAAOA,EAAE,UAAW;AAC/C,UAAM,IAAI,MAAM,iDAAiD;AACrE,EAAAiX,GAAQjX,EAAE,SAAS,GACnBiX,GAAQjX,EAAE,QAAQ;AACtB;AAEA,SAASsX,GAAQviC,GAAUwiC,IAAgB,IAAM;AAC7C,MAAIxiC,EAAS;AACT,UAAM,IAAI,MAAM,kCAAkC;AACtD,MAAIwiC,KAAiBxiC,EAAS;AAC1B,UAAM,IAAI,MAAM,uCAAuC;AAC/D;AAEA,SAASyiC,GAAQjf,GAAKxjB,GAAU;AAC5BoiC,EAAAA,GAAO5e,CAAG;AACV,QAAMkf,IAAM1iC,EAAS;AACrB,MAAIwjB,EAAI,SAASkf;AACb,UAAM,IAAI,MAAM,2DAA2DA,CAAG;AAEtF;ACzCO,MAAMC,KAAS,OAAO,cAAe,YAAY,YAAY,aAAa,WAAW,SAAS;ACIrG;AAkBO,SAASC,GAAIC,GAAK;AACrB,SAAO,IAAI,YAAYA,EAAI,QAAQA,EAAI,YAAY,KAAK,MAAMA,EAAI,aAAa,CAAC,CAAC;AACrF;AAEO,SAASC,GAAWD,GAAK;AAC5B,SAAO,IAAI,SAASA,EAAI,QAAQA,EAAI,YAAYA,EAAI,UAAU;AAClE;AAEO,SAASE,GAAKjgB,GAAMsB,GAAO;AAC9B,SAAQtB,KAAS,KAAKsB,IAAWtB,MAASsB;AAC9C;AAEO,SAAS4e,GAAKlgB,GAAMsB,GAAO;AAC9B,SAAQtB,KAAQsB,IAAWtB,MAAU,KAAKsB,MAAY;AAC1D;AAEO,MAAM6e,KAA8B,IAAI,WAAW,IAAI,YAAY,CAAC,SAAU,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM;AAEhG,SAASC,GAASpgB,GAAM;AAC3B,SAAUA,KAAQ,KAAM,aAClBA,KAAQ,IAAK,WACbA,MAAS,IAAK,QACdA,MAAS,KAAM;AACzB;AAMO,SAASqgB,GAAWN,GAAK;AAC5B,WAAS7kB,IAAI,GAAGA,IAAI6kB,EAAI,QAAQ7kB;AAC5B,IAAA6kB,EAAI7kB,CAAC,IAAIklB,GAASL,EAAI7kB,CAAC,CAAC;AAEhC;AAyEO,SAASolB,GAAY3gB,GAAK;AAC7B,MAAI,OAAOA,KAAQ;AACf,UAAM,IAAI,MAAM,sCAAsC,OAAOA,CAAG;AACpE,SAAO,IAAI,WAAW,IAAI,YAAa,EAAC,OAAOA,CAAG,CAAC;AACvD;AAMO,SAASsO,GAAQiL,GAAM;AAC1B,SAAI,OAAOA,KAAS,aAChBA,IAAOoH,GAAYpH,CAAI,IAC3BoG,GAAOpG,CAAI,GACJA;AACX;AAIO,SAASgB,MAAeC,GAAQ;AACnC,MAAIoG,IAAM;AACV,WAASrlB,IAAI,GAAGA,IAAIif,EAAO,QAAQjf,KAAK;AACpC,UAAM7Y,IAAI83B,EAAOjf,CAAC;AAClBokB,IAAAA,GAAOj9B,CAAC,GACRk+B,KAAOl+B,EAAE;AAAA,EACjB;AACI,QAAM8e,IAAM,IAAI,WAAWof,CAAG;AAC9B,WAASrlB,IAAI,GAAGslB,IAAM,GAAGtlB,IAAIif,EAAO,QAAQjf,KAAK;AAC7C,UAAM7Y,IAAI83B,EAAOjf,CAAC;AAClB,IAAAiG,EAAI,IAAI9e,GAAGm+B,CAAG,GACdA,KAAOn+B,EAAE;AAAA,EACjB;AACI,SAAO8e;AACX;AAEO,MAAMsf,GAAK;AAAA;AAAA,EAEd,QAAQ;AACJ,WAAO,KAAK,WAAY;AAAA,EAChC;AACA;AACO,SAASC,GAAUC,GAAUxH,GAAM;AACtC,MAAIA,MAAS,UAAa,CAAE,EAAC,SAAS,KAAKA,CAAI,MAAM;AACjD,UAAM,IAAI,MAAM,uCAAuC;AAE3D,SADe,OAAO,OAAOwH,GAAUxH,CAAI;AAE/C;AAEO,SAASyH,GAAgBC,GAAU;AACtC,QAAMC,IAAQ,CAAC7iB,MAAQ4iB,EAAU,EAAC,OAAO5S,GAAQhQ,CAAG,CAAC,EAAE,OAAQ,GACzDmM,IAAMyW,EAAU;AACtB,SAAAC,EAAM,YAAY1W,EAAI,WACtB0W,EAAM,WAAW1W,EAAI,UACrB0W,EAAM,SAAS,MAAMD,EAAU,GACxBC;AACX;AAkBO,SAASC,GAAY7U,IAAc,IAAI;AAC1C,MAAI2T,MAAU,OAAOA,GAAO,mBAAoB;AAC5C,WAAOA,GAAO,gBAAgB,IAAI,WAAW3T,CAAW,CAAC;AAG7D,MAAI2T,MAAU,OAAOA,GAAO,eAAgB;AACxC,WAAOA,GAAO,YAAY3T,CAAW;AAEzC,QAAM,IAAI,MAAM,wCAAwC;AAC5D;AC5MO,MAAM8U,WAAaP,GAAK;AAAA,EAC3B,YAAYQ,GAAMC,GAAM;AACpB,UAAO,GACP,KAAK,WAAW,IAChB,KAAK,YAAY,IACjB1B,GAAMyB,CAAI;AACV,UAAME,IAAMlT,GAAQiT,CAAI;AAExB,QADA,KAAK,QAAQD,EAAK,OAAQ,GACtB,OAAO,KAAK,MAAM,UAAW;AAC7B,YAAM,IAAI,MAAM,qDAAqD;AACzE,SAAK,WAAW,KAAK,MAAM,UAC3B,KAAK,YAAY,KAAK,MAAM;AAC5B,UAAMG,IAAW,KAAK,UAChBZ,IAAM,IAAI,WAAWY,CAAQ;AAEnC,IAAAZ,EAAI,IAAIW,EAAI,SAASC,IAAWH,EAAK,OAAQ,EAAC,OAAOE,CAAG,EAAE,OAAM,IAAKA,CAAG;AACxE,aAASjmB,IAAI,GAAGA,IAAIslB,EAAI,QAAQtlB;AAC5B,MAAAslB,EAAItlB,CAAC,KAAK;AACd,SAAK,MAAM,OAAOslB,CAAG,GAErB,KAAK,QAAQS,EAAK,OAAQ;AAE1B,aAAS/lB,IAAI,GAAGA,IAAIslB,EAAI,QAAQtlB;AAC5B,MAAAslB,EAAItlB,CAAC,KAAK;AACd,SAAK,MAAM,OAAOslB,CAAG,GACrBA,EAAI,KAAK,CAAC;AAAA,EAClB;AAAA,EACI,OAAO1lB,GAAK;AACR,WAAA2kB,GAAQ,IAAI,GACZ,KAAK,MAAM,OAAO3kB,CAAG,GACd;AAAA,EACf;AAAA,EACI,WAAW4F,GAAK;AACZ,IAAA+e,GAAQ,IAAI,GACZH,GAAO5e,GAAK,KAAK,SAAS,GAC1B,KAAK,WAAW,IAChB,KAAK,MAAM,WAAWA,CAAG,GACzB,KAAK,MAAM,OAAOA,CAAG,GACrB,KAAK,MAAM,WAAWA,CAAG,GACzB,KAAK,QAAS;AAAA,EACtB;AAAA,EACI,SAAS;AACL,UAAMA,IAAM,IAAI,WAAW,KAAK,MAAM,SAAS;AAC/C,gBAAK,WAAWA,CAAG,GACZA;AAAA,EACf;AAAA,EACI,WAAW2gB,GAAI;AAEX,IAAAA,MAAOA,IAAK,OAAO,OAAO,OAAO,eAAe,IAAI,GAAG,CAAA,CAAE;AACzD,UAAM,EAAE,OAAAC,GAAO,OAAAC,GAAO,UAAAC,GAAU,WAAAC,GAAW,UAAAL,GAAU,WAAAM,EAAS,IAAK;AACnE,WAAAL,IAAKA,GACLA,EAAG,WAAWG,GACdH,EAAG,YAAYI,GACfJ,EAAG,WAAWD,GACdC,EAAG,YAAYK,GACfL,EAAG,QAAQC,EAAM,WAAWD,EAAG,KAAK,GACpCA,EAAG,QAAQE,EAAM,WAAWF,EAAG,KAAK,GAC7BA;AAAA,EACf;AAAA,EACI,UAAU;AACN,SAAK,YAAY,IACjB,KAAK,MAAM,QAAS,GACpB,KAAK,MAAM,QAAS;AAAA,EAC5B;AACA;AAWO,MAAMM,KAAO,CAACV,GAAME,GAAK7jB,MAAY,IAAI0jB,GAAKC,GAAME,CAAG,EAAE,OAAO7jB,CAAO,EAAE,OAAQ;AACxFqkB,GAAK,SAAS,CAACV,GAAME,MAAQ,IAAIH,GAAKC,GAAME,CAAG;AC1E/C,SAASS,GAAWX,GAAMY,GAAWC,GAAOC,GAAO;AAC/C,EAAAvC,GAAMyB,CAAI;AACV,QAAM9H,IAAOuH,GAAU,EAAE,OAAO,IAAI,WAAW,GAAI,GAAEqB,CAAK,GACpD,EAAE,GAAAx/B,GAAG,OAAAy/B,GAAO,WAAAC,EAAW,IAAG9I;AAIhC,MAHAiG,GAAQ78B,CAAC,GACT68B,GAAQ4C,CAAK,GACb5C,GAAQ6C,CAAS,GACb1/B,IAAI;AACJ,UAAM,IAAI,MAAM,uCAAuC;AAC3D,QAAM2/B,IAAWjU,GAAQ4T,CAAS,GAC5BM,IAAOlU,GAAQ6T,CAAK,GAEpBM,IAAK,IAAI,WAAWJ,CAAK,GAEzBK,IAAMV,GAAK,OAAOV,GAAMiB,CAAQ,GAChCI,IAAUD,EAAI,WAAU,EAAG,OAAOF,CAAI;AAC5C,SAAO,EAAE,GAAA5/B,GAAG,OAAAy/B,GAAO,WAAAC,GAAW,IAAAG,GAAI,KAAAC,GAAK,SAAAC,EAAS;AACpD;AACA,SAASC,GAAaF,GAAKC,GAASF,GAAII,GAAM5sB,GAAG;AAC7C,SAAAysB,EAAI,QAAS,GACbC,EAAQ,QAAS,GACbE,KACAA,EAAK,QAAS,GAClB5sB,EAAE,KAAK,CAAC,GACDwsB;AACX;AAUO,SAASK,GAAOxB,GAAMiB,GAAUC,GAAMhJ,GAAM;AAC/C,QAAM,EAAE,GAAA52B,GAAG,OAAAy/B,GAAO,IAAAI,GAAI,KAAAC,GAAK,SAAAC,MAAYV,GAAWX,GAAMiB,GAAUC,GAAMhJ,CAAI;AAC5E,MAAIqJ;AACJ,QAAMzC,IAAM,IAAI,WAAW,CAAC,GACtB2C,IAAO1C,GAAWD,CAAG,GACrBnqB,IAAI,IAAI,WAAWysB,EAAI,SAAS;AAEtC,WAASrK,IAAK,GAAGvG,IAAM,GAAGA,IAAMuQ,GAAOhK,KAAMvG,KAAO4Q,EAAI,WAAW;AAE/D,UAAMM,IAAKP,EAAG,SAAS3Q,GAAKA,IAAM4Q,EAAI,SAAS;AAC/C,IAAAK,EAAK,SAAS,GAAG1K,GAAI,EAAK,IAGzBwK,IAAOF,EAAQ,WAAWE,CAAI,GAAG,OAAOzC,CAAG,EAAE,WAAWnqB,CAAC,GAC1D+sB,EAAG,IAAI/sB,EAAE,SAAS,GAAG+sB,EAAG,MAAM,CAAC;AAC/B,aAASC,IAAK,GAAGA,IAAKrgC,GAAGqgC,KAAM;AAE3B,MAAAP,EAAI,WAAWG,CAAI,EAAE,OAAO5sB,CAAC,EAAE,WAAWA,CAAC;AAC3C,eAASsF,IAAI,GAAGA,IAAIynB,EAAG,QAAQznB;AAC3B,QAAAynB,EAAGznB,CAAC,KAAKtF,EAAEsF,CAAC;AAAA,IAC5B;AAAA,EACA;AACI,SAAOqnB,GAAaF,GAAKC,GAASF,GAAII,GAAM5sB,CAAC;AACjD;AC3DO,SAASitB,GAAaH,GAAMI,GAAY1iC,GAAO+/B,GAAM;AACxD,MAAI,OAAOuC,EAAK,gBAAiB;AAC7B,WAAOA,EAAK,aAAaI,GAAY1iC,GAAO+/B,CAAI;AACpD,QAAM4C,IAAO,OAAO,EAAE,GAChBC,IAAW,OAAO,UAAU,GAC5BC,IAAK,OAAQ7iC,KAAS2iC,IAAQC,CAAQ,GACtCE,IAAK,OAAO9iC,IAAQ4iC,CAAQ,GAC5B7a,IAAIgY,IAAO,IAAI,GACf1Q,IAAI0Q,IAAO,IAAI;AACrB,EAAAuC,EAAK,UAAUI,IAAa3a,GAAG8a,GAAI9C,CAAI,GACvCuC,EAAK,UAAUI,IAAarT,GAAGyT,GAAI/C,CAAI;AAC3C;AAEO,SAASgD,GAAI9gC,GAAGC,GAAGC,GAAG;AACzB,SAAQF,IAAIC,IAAM,CAACD,IAAIE;AAC3B;AAEO,SAAS6gC,GAAI/gC,GAAGC,GAAGC,GAAG;AACzB,SAAQF,IAAIC,IAAMD,IAAIE,IAAMD,IAAIC;AACpC;AAKO,MAAM8gC,WAAe5C,GAAK;AAAA,EAC7B,YAAYW,GAAUM,GAAW4B,GAAWnD,GAAM;AAC9C,UAAO,GACP,KAAK,WAAWiB,GAChB,KAAK,YAAYM,GACjB,KAAK,YAAY4B,GACjB,KAAK,OAAOnD,GACZ,KAAK,WAAW,IAChB,KAAK,SAAS,GACd,KAAK,MAAM,GACX,KAAK,YAAY,IACjB,KAAK,SAAS,IAAI,WAAWiB,CAAQ,GACrC,KAAK,OAAOpB,GAAW,KAAK,MAAM;AAAA,EAC1C;AAAA,EACI,OAAO9G,GAAM;AACT,IAAAuG,GAAQ,IAAI;AACZ,UAAM,EAAE,MAAAiD,GAAM,QAAAa,GAAQ,UAAAnC,EAAU,IAAG;AACnC,IAAAlI,IAAOjL,GAAQiL,CAAI;AACnB,UAAMl8B,IAAMk8B,EAAK;AACjB,aAASzH,IAAM,GAAGA,IAAMz0B,KAAM;AAC1B,YAAMwmC,IAAO,KAAK,IAAIpC,IAAW,KAAK,KAAKpkC,IAAMy0B,CAAG;AAEpD,UAAI+R,MAASpC,GAAU;AACnB,cAAMqC,IAAWzD,GAAW9G,CAAI;AAChC,eAAOkI,KAAYpkC,IAAMy0B,GAAKA,KAAO2P;AACjC,eAAK,QAAQqC,GAAUhS,CAAG;AAC9B;AAAA,MAChB;AACY,MAAA8R,EAAO,IAAIrK,EAAK,SAASzH,GAAKA,IAAM+R,CAAI,GAAG,KAAK,GAAG,GACnD,KAAK,OAAOA,GACZ/R,KAAO+R,GACH,KAAK,QAAQpC,MACb,KAAK,QAAQsB,GAAM,CAAC,GACpB,KAAK,MAAM;AAAA,IAE3B;AACQ,gBAAK,UAAUxJ,EAAK,QACpB,KAAK,WAAY,GACV;AAAA,EACf;AAAA,EACI,WAAWxY,GAAK;AACZ,IAAA+e,GAAQ,IAAI,GACZE,GAAQjf,GAAK,IAAI,GACjB,KAAK,WAAW;AAIhB,UAAM,EAAE,QAAA6iB,GAAQ,MAAAb,GAAM,UAAAtB,GAAU,MAAAjB,EAAM,IAAG;AACzC,QAAI,EAAE,KAAA1O,EAAG,IAAK;AAEd,IAAA8R,EAAO9R,GAAK,IAAI,KAChB,KAAK,OAAO,SAASA,CAAG,EAAE,KAAK,CAAC,GAG5B,KAAK,YAAY2P,IAAW3P,MAC5B,KAAK,QAAQiR,GAAM,CAAC,GACpBjR,IAAM;AAGV,aAASvW,IAAIuW,GAAKvW,IAAIkmB,GAAUlmB;AAC5B,MAAAqoB,EAAOroB,CAAC,IAAI;AAIhB,IAAA2nB,GAAaH,GAAMtB,IAAW,GAAG,OAAO,KAAK,SAAS,CAAC,GAAGjB,CAAI,GAC9D,KAAK,QAAQuC,GAAM,CAAC;AACpB,UAAMgB,IAAQ1D,GAAWtf,CAAG,GACtB1jB,IAAM,KAAK;AAEjB,QAAIA,IAAM;AACN,YAAM,IAAI,MAAM,6CAA6C;AACjE,UAAMwtB,IAASxtB,IAAM,GACf2mC,IAAQ,KAAK,IAAK;AACxB,QAAInZ,IAASmZ,EAAM;AACf,YAAM,IAAI,MAAM,oCAAoC;AACxD,aAASzoB,IAAI,GAAGA,IAAIsP,GAAQtP;AACxB,MAAAwoB,EAAM,UAAU,IAAIxoB,GAAGyoB,EAAMzoB,CAAC,GAAGilB,CAAI;AAAA,EACjD;AAAA,EACI,SAAS;AACL,UAAM,EAAE,QAAAoD,GAAQ,WAAA7B,EAAS,IAAK;AAC9B,SAAK,WAAW6B,CAAM;AACtB,UAAMpiB,IAAMoiB,EAAO,MAAM,GAAG7B,CAAS;AACrC,gBAAK,QAAS,GACPvgB;AAAA,EACf;AAAA,EACI,WAAWkgB,GAAI;AACX,IAAAA,MAAOA,IAAK,IAAI,KAAK,YAAW,IAChCA,EAAG,IAAI,GAAG,KAAK,IAAG,CAAE;AACpB,UAAM,EAAE,UAAAD,GAAU,QAAAmC,GAAQ,QAAAziB,GAAQ,UAAA0gB,GAAU,WAAAC,GAAW,KAAAhQ,EAAG,IAAK;AAC/D,WAAA4P,EAAG,SAASvgB,GACZugB,EAAG,MAAM5P,GACT4P,EAAG,WAAWG,GACdH,EAAG,YAAYI,GACX3gB,IAASsgB,KACTC,EAAG,OAAO,IAAIkC,CAAM,GACjBlC;AAAA,EACf;AACA;ACnHA,MAAMuC,KAA2B,oBAAI,YAAY;AAAA,EAC7C;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpF;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AACxF,CAAC,GAGKC,KAA4B,oBAAI,YAAY;AAAA,EAC9C;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AACxF,CAAC,GAKKC,KAA2B,oBAAI,YAAY,EAAE;AAC5C,MAAMC,WAAeV,GAAO;AAAA,EAC/B,cAAc;AACV,UAAM,IAAI,IAAI,GAAG,EAAK,GAGtB,KAAK,IAAIQ,GAAU,CAAC,IAAI,GACxB,KAAK,IAAIA,GAAU,CAAC,IAAI,GACxB,KAAK,IAAIA,GAAU,CAAC,IAAI,GACxB,KAAK,IAAIA,GAAU,CAAC,IAAI,GACxB,KAAK,IAAIA,GAAU,CAAC,IAAI,GACxB,KAAK,IAAIA,GAAU,CAAC,IAAI,GACxB,KAAK,IAAIA,GAAU,CAAC,IAAI,GACxB,KAAK,IAAIA,GAAU,CAAC,IAAI;AAAA,EAChC;AAAA,EACI,MAAM;AACF,UAAM,EAAE,GAAA1a,GAAG,GAAAC,GAAG,GAAAC,GAAG,GAAAC,GAAG,GAAA0a,GAAG,GAAAC,GAAG,GAAAC,GAAG,GAAAC,EAAC,IAAK;AACnC,WAAO,CAAChb,GAAGC,GAAGC,GAAGC,GAAG0a,GAAGC,GAAGC,GAAGC,CAAC;AAAA,EACtC;AAAA;AAAA,EAEI,IAAIhb,GAAGC,GAAGC,GAAGC,GAAG0a,GAAGC,GAAGC,GAAGC,GAAG;AACxB,SAAK,IAAIhb,IAAI,GACb,KAAK,IAAIC,IAAI,GACb,KAAK,IAAIC,IAAI,GACb,KAAK,IAAIC,IAAI,GACb,KAAK,IAAI0a,IAAI,GACb,KAAK,IAAIC,IAAI,GACb,KAAK,IAAIC,IAAI,GACb,KAAK,IAAIC,IAAI;AAAA,EACrB;AAAA,EACI,QAAQzB,GAAM5gC,GAAQ;AAElB,aAASoZ,IAAI,GAAGA,IAAI,IAAIA,KAAKpZ,KAAU;AACnC,MAAAgiC,GAAS5oB,CAAC,IAAIwnB,EAAK,UAAU5gC,GAAQ,EAAK;AAC9C,aAASoZ,IAAI,IAAIA,IAAI,IAAIA,KAAK;AAC1B,YAAMkpB,IAAMN,GAAS5oB,IAAI,EAAE,GACrBmpB,IAAKP,GAAS5oB,IAAI,CAAC,GACnBopB,IAAKrE,GAAKmE,GAAK,CAAC,IAAInE,GAAKmE,GAAK,EAAE,IAAKA,MAAQ,GAC7CG,IAAKtE,GAAKoE,GAAI,EAAE,IAAIpE,GAAKoE,GAAI,EAAE,IAAKA,MAAO;AACjD,MAAAP,GAAS5oB,CAAC,IAAKqpB,IAAKT,GAAS5oB,IAAI,CAAC,IAAIopB,IAAKR,GAAS5oB,IAAI,EAAE,IAAK;AAAA,IAC3E;AAEQ,QAAI,EAAE,GAAAiO,GAAG,GAAAC,GAAG,GAAAC,GAAG,GAAAC,GAAG,GAAA0a,GAAG,GAAAC,GAAG,GAAAC,GAAG,GAAAC,EAAC,IAAK;AACjC,aAASjpB,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,YAAMspB,IAASvE,GAAK+D,GAAG,CAAC,IAAI/D,GAAK+D,GAAG,EAAE,IAAI/D,GAAK+D,GAAG,EAAE,GAC9CS,IAAMN,IAAIK,IAASrB,GAAIa,GAAGC,GAAGC,CAAC,IAAIN,GAAS1oB,CAAC,IAAI4oB,GAAS5oB,CAAC,IAAK,GAE/DwpB,KADSzE,GAAK9W,GAAG,CAAC,IAAI8W,GAAK9W,GAAG,EAAE,IAAI8W,GAAK9W,GAAG,EAAE,KAC/Bia,GAAIja,GAAGC,GAAGC,CAAC,IAAK;AACrC,MAAA8a,IAAID,GACJA,IAAID,GACJA,IAAID,GACJA,IAAK1a,IAAImb,IAAM,GACfnb,IAAID,GACJA,IAAID,GACJA,IAAID,GACJA,IAAKsb,IAAKC,IAAM;AAAA,IAC5B;AAEQ,IAAAvb,IAAKA,IAAI,KAAK,IAAK,GACnBC,IAAKA,IAAI,KAAK,IAAK,GACnBC,IAAKA,IAAI,KAAK,IAAK,GACnBC,IAAKA,IAAI,KAAK,IAAK,GACnB0a,IAAKA,IAAI,KAAK,IAAK,GACnBC,IAAKA,IAAI,KAAK,IAAK,GACnBC,IAAKA,IAAI,KAAK,IAAK,GACnBC,IAAKA,IAAI,KAAK,IAAK,GACnB,KAAK,IAAIhb,GAAGC,GAAGC,GAAGC,GAAG0a,GAAGC,GAAGC,GAAGC,CAAC;AAAA,EACvC;AAAA,EACI,aAAa;AACT,IAAAL,GAAS,KAAK,CAAC;AAAA,EACvB;AAAA,EACI,UAAU;AACN,SAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAC/B,KAAK,OAAO,KAAK,CAAC;AAAA,EAC1B;AACA;AAmBO,MAAMa,KAAyB,gBAAA/D,GAAgB,MAAM,IAAImD,IAAQ;ACnHxE,SAASa,GAAYna,GAAMoa,GAAIva,GAAOwa,GAAIpkB,GAAKqkB,GAAI;AAG/C,MAAIC,IAAMva,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAAGG,IAAMxa,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAC7DI,IAAMza,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAAGK,IAAM1a,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAC7DM,IAAM3a,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAAGO,IAAM5a,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAC7DQ,IAAM7a,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAAGS,IAAM9a,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAC7DU,IAAM/a,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAAGW,IAAMhb,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAC7DY,IAAMjb,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAAGa,IAAMlb,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAC7Dc,IAAMnb,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAAGe,IAAMpb,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAC7DgB,IAAMrb,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAAGiB,IAAMtb,EAAKoa,GAAI,IAAIva,EAAMwa,GAAI,GAE7DkB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB,GAAKiB,IAAMhB;AAE/K,WAAS7qB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,IAAAkrB,KAAOlG,GAAK8F,IAAMY,IAAM,GAAG,CAAC,GAC5BJ,KAAOtG,GAAKkG,IAAMJ,IAAM,GAAG,CAAC,GAC5BY,KAAO1G,GAAKsG,IAAMJ,IAAM,GAAG,EAAE,GAC7BJ,KAAO9F,GAAK0G,IAAMJ,IAAM,GAAG,EAAE,GAC7BC,KAAOvG,GAAKmG,IAAMJ,IAAM,GAAG,CAAC,GAC5BY,KAAO3G,GAAKuG,IAAMJ,IAAM,GAAG,CAAC,GAC5BJ,KAAO/F,GAAK2G,IAAMJ,IAAM,GAAG,EAAE,GAC7BJ,KAAOnG,GAAK+F,IAAMY,IAAM,GAAG,EAAE,GAC7BC,KAAO5G,GAAKwG,IAAMJ,IAAM,GAAG,CAAC,GAC5BJ,KAAOhG,GAAK4G,IAAMJ,IAAM,GAAG,CAAC,GAC5BJ,KAAOpG,GAAKgG,IAAMY,IAAM,GAAG,EAAE,GAC7BJ,KAAOxG,GAAKoG,IAAMJ,IAAM,GAAG,EAAE,GAC7BC,KAAOjG,GAAK6G,IAAMJ,IAAM,GAAG,CAAC,GAC5BJ,KAAOrG,GAAKiG,IAAMY,IAAM,GAAG,CAAC,GAC5BJ,KAAOzG,GAAKqG,IAAMJ,IAAM,GAAG,EAAE,GAC7BY,KAAO7G,GAAKyG,IAAMJ,IAAM,GAAG,EAAE,GAC7BN,KAAO/F,GAAK8F,IAAMG,IAAM,GAAG,CAAC,GAC5BD,KAAOhG,GAAK+F,IAAMD,IAAM,GAAG,CAAC,GAC5BG,KAAOjG,GAAKgG,IAAMD,IAAM,GAAG,EAAE,GAC7BD,KAAO9F,GAAKiG,IAAMD,IAAM,GAAG,EAAE,GAC7BI,KAAOpG,GAAKmG,IAAMD,IAAM,GAAG,CAAC,GAC5BG,KAAOrG,GAAKoG,IAAMD,IAAM,GAAG,CAAC,GAC5BD,KAAOlG,GAAKqG,IAAMD,IAAM,GAAG,EAAE,GAC7BD,KAAOnG,GAAKkG,IAAMG,IAAM,GAAG,EAAE,GAC7BI,KAAOzG,GAAKwG,IAAMD,IAAM,GAAG,CAAC,GAC5BD,KAAOtG,GAAKyG,IAAMD,IAAM,GAAG,CAAC,GAC5BD,KAAOvG,GAAKsG,IAAMG,IAAM,GAAG,EAAE,GAC7BD,KAAOxG,GAAKuG,IAAMD,IAAM,GAAG,EAAE,GAC7BI,KAAO1G,GAAK6G,IAAMD,IAAM,GAAG,CAAC,GAC5BD,KAAO3G,GAAK0G,IAAMG,IAAM,GAAG,CAAC,GAC5BD,KAAO5G,GAAK2G,IAAMD,IAAM,GAAG,EAAE,GAC7BG,KAAO7G,GAAK4G,IAAMD,IAAM,GAAG,EAAE;AAGjC,EAAAnmB,EAAIqkB,GAAI,IAAKC,IAAMgB,IAAO,GAC1BtlB,EAAIqkB,GAAI,IAAKE,IAAMgB,IAAO,GAC1BvlB,EAAIqkB,GAAI,IAAKG,IAAMgB,IAAO,GAC1BxlB,EAAIqkB,GAAI,IAAKI,IAAMgB,IAAO,GAC1BzlB,EAAIqkB,GAAI,IAAKK,IAAMgB,IAAO,GAC1B1lB,EAAIqkB,GAAI,IAAKM,IAAMgB,IAAO,GAC1B3lB,EAAIqkB,GAAI,IAAKO,IAAMgB,IAAO,GAC1B5lB,EAAIqkB,GAAI,IAAKQ,IAAMgB,IAAO,GAC1B7lB,EAAIqkB,GAAI,IAAKS,IAAMgB,IAAO,GAC1B9lB,EAAIqkB,GAAI,IAAKU,IAAMgB,IAAO,GAC1B/lB,EAAIqkB,GAAI,IAAKW,IAAMgB,IAAO,GAC1BhmB,EAAIqkB,GAAI,IAAKY,IAAMgB,IAAO,GAC1BjmB,EAAIqkB,GAAI,IAAKa,IAAMgB,IAAO,GAC1BlmB,EAAIqkB,GAAI,IAAKc,IAAMgB,IAAO,GAC1BnmB,EAAIqkB,GAAI,IAAKe,IAAMgB,IAAO,GAC1BpmB,EAAIqkB,GAAI,IAAKgB,IAAMgB,IAAO;AAC9B;AACA,SAASC,GAAS1c,GAAOwa,GAAIpkB,GAAKqkB,GAAIvlB,GAAG;AAErC,MAAIsX,IAAOiO,IAAK,GACZkC,IAAOlC,IAAK,KAAKvlB;AACrB,WAAStE,IAAI,GAAGA,IAAI,IAAIA;AACpB,IAAAwF,EAAIumB,IAAO/rB,CAAC,IAAIoP,EAAMwa,KAAM,IAAItlB,IAAI,KAAK,KAAKtE,CAAC;AACnD,WAASA,IAAI,GAAGA,IAAIsE,GAAGtE,KAAK4b,KAAQ,IAAIgO,KAAM;AAE1C,IAAAF,GAAYlkB,GAAKumB,GAAM3c,GAAOwa,GAAIpkB,GAAKoW,CAAI,GACvC5b,IAAI,MACJ+rB,KAAQ,KACZrC,GAAYlkB,GAAKoW,GAAMxM,GAAQwa,KAAM,IAAKpkB,GAAKumB,CAAI;AAE3D;AAEA,SAASC,GAAWhF,GAAUC,GAAMJ,GAAO;AAEvC,QAAM5I,IAAOuH,GAAU;AAAA,IACnB,OAAO;AAAA,IACP,WAAW;AAAA,IACX,QAAQ;AAAA,EACX,GAAEqB,CAAK,GACF,EAAE,GAAAoF,GAAG,GAAA3nB,GAAG,GAAAwJ,GAAG,OAAAgZ,GAAO,WAAAC,GAAW,QAAAmF,GAAQ,YAAAC,EAAU,IAAKlO;AAO1D,MANAiG,GAAQ+H,CAAC,GACT/H,GAAQ5f,CAAC,GACT4f,GAAQpW,CAAC,GACToW,GAAQ4C,CAAK,GACb5C,GAAQ6C,CAAS,GACjB7C,GAAQgI,CAAM,GACVC,MAAe,UAAa,OAAOA,KAAe;AAClD,UAAM,IAAI,MAAM,+BAA+B;AACnD,QAAMC,IAAY,MAAM9nB,GAClB+nB,IAAcD,IAAY;AAKhC,MAAIH,KAAK,KAAMA,IAAKA,IAAI,KAAaA,IAAI,KAAK;AAC1C,UAAM,IAAI,MAAM,mEAAmE;AAEvF,MAAIne,IAAI,KAAKA,KAAM,KAAK,KAAK,KAAK,KAAMse;AACpC,UAAM,IAAI,MAAM,0FAA0F;AAE9G,MAAItF,IAAQ,KAAKA,KAAS,KAAK,KAAK,KAAK;AACrC,UAAM,IAAI,MAAM,gFAAgF;AAGpG,MADgBsF,KAAaH,IAAIne,KACnBoe;AACV,UAAM,IAAI,MAAM,mFAAmFA,CAAM;AAI7G,QAAMhe,IAAIqZ,GAAOkC,IAAQzC,GAAUC,GAAM,EAAE,GAAG,GAAG,OAAOmF,IAAYte,EAAC,CAAE,GACjEwe,IAAM1H,GAAI1W,CAAC,GAEXqe,IAAI3H,GAAI,IAAI,WAAWwH,IAAYH,CAAC,CAAC,GACrC/c,IAAM0V,GAAI,IAAI,WAAWwH,CAAS,CAAC;AACzC,MAAII,IAAa,MAAM;AAAA,EAAG;AAC1B,MAAIL,GAAY;AACZ,UAAMM,IAAgB,IAAIR,IAAIne,GAGxB4e,IAAc,KAAK,IAAI,KAAK,MAAMD,IAAgB,GAAK,GAAG,CAAC;AACjE,QAAIE,IAAc;AAClB,IAAAH,IAAa,MAAM;AACf,MAAAG,KACIR,MAAe,EAAEQ,IAAcD,MAAgBC,MAAgBF,MAC/DN,EAAWQ,IAAcF,CAAa;AAAA,IAC7C;AAAA,EACT;AACI,SAAO,EAAE,GAAAR,GAAG,GAAA3nB,GAAG,GAAAwJ,GAAG,OAAAgZ,GAAO,aAAAuF,GAAa,GAAAE,GAAG,KAAAD,GAAK,GAAApe,GAAG,KAAAgB,GAAK,YAAAsd,GAAY,WAAAzF,EAAW;AACjF;AACA,SAAS6F,GAAa5F,GAAUF,GAAO5Y,GAAGqe,GAAGrd,GAAK;AAC9C,QAAMjJ,IAAMshB,GAAOkC,IAAQzC,GAAU9Y,GAAG,EAAE,GAAG,GAAG,OAAA4Y,GAAO;AACvD,SAAA5Y,EAAE,KAAK,CAAC,GACRqe,EAAE,KAAK,CAAC,GACRrd,EAAI,KAAK,CAAC,GACHjJ;AACX;AAiBO,SAAS4mB,GAAO7F,GAAUC,GAAMhJ,GAAM;AACzC,QAAM,EAAE,GAAAgO,GAAG,GAAA3nB,GAAG,GAAAwJ,GAAG,OAAAgZ,GAAO,aAAAuF,GAAa,GAAAE,GAAG,KAAAD,GAAK,GAAApe,GAAG,KAAAgB,GAAK,YAAAsd,EAAY,IAAGR,GAAWhF,GAAUC,GAAMhJ,CAAI;AACnG,EAAKgH,MACDE,GAAWmH,CAAG;AAClB,WAAS3C,IAAK,GAAGA,IAAK7b,GAAG6b,KAAM;AAC3B,UAAMmD,IAAKT,IAAc1C;AACzB,aAAS3pB,IAAI,GAAGA,IAAIqsB,GAAarsB;AAC7B,MAAAusB,EAAEvsB,CAAC,IAAIssB,EAAIQ,IAAK9sB,CAAC;AACrB,aAASA,IAAI,GAAGuW,IAAM,GAAGvW,IAAIisB,IAAI,GAAGjsB;AAChC,MAAA8rB,GAASS,GAAGhW,GAAKgW,GAAIhW,KAAO8V,GAAc/nB,CAAC,GAC3CkoB,EAAY;AAEhB,IAAAV,GAASS,IAAIN,IAAI,KAAKI,GAAaC,GAAKQ,GAAIxoB,CAAC,GAC7CkoB,EAAY;AACZ,aAASxsB,IAAI,GAAGA,IAAIisB,GAAGjsB,KAAK;AAExB,YAAM8D,IAAIwoB,EAAIQ,IAAKT,IAAc,EAAE,IAAIJ;AACvC,eAAShlB,IAAI,GAAGA,IAAIolB,GAAaplB;AAC7B,QAAAiI,EAAIjI,CAAC,IAAIqlB,EAAIQ,IAAK7lB,CAAC,IAAIslB,EAAEzoB,IAAIuoB,IAAcplB,CAAC;AAChD,MAAA6kB,GAAS5c,GAAK,GAAGod,GAAKQ,GAAIxoB,CAAC,GAC3BkoB,EAAY;AAAA,IACxB;AAAA,EACA;AACI,SAAKvH,MACDE,GAAWmH,CAAG,GACXM,GAAa5F,GAAUF,GAAO5Y,GAAGqe,GAAGrd,CAAG;AAClD;ACjMA,MAAM6d,KAA6B,uBAAO,KAAK,KAAK,CAAC,GAC/ClF,KAAuB,uBAAO,EAAE;AACtC,SAASmF,GAAQ1V,GAAG9C,IAAK,IAAO;AAC5B,SAAIA,IACO,EAAE,GAAG,OAAO8C,IAAIyV,EAAU,GAAG,GAAG,OAAQzV,KAAKuQ,KAAQkF,EAAU,EAAG,IACtE,EAAE,GAAG,OAAQzV,KAAKuQ,KAAQkF,EAAU,IAAI,GAAG,GAAG,OAAOzV,IAAIyV,EAAU,IAAI,EAAG;AACrF;AACA,SAASE,GAAMxR,GAAKjH,IAAK,IAAO;AAC5B,MAAI0Y,IAAK,IAAI,YAAYzR,EAAI,MAAM,GAC/B0R,IAAK,IAAI,YAAY1R,EAAI,MAAM;AACnC,WAASzb,IAAI,GAAGA,IAAIyb,EAAI,QAAQzb,KAAK;AACjC,UAAM,EAAE,GAAAiN,GAAG,GAAAsH,EAAG,IAAGyY,GAAQvR,EAAIzb,CAAC,GAAGwU,CAAE;AACnC,KAAC0Y,EAAGltB,CAAC,GAAGmtB,EAAGntB,CAAC,CAAC,IAAI,CAACiN,GAAGsH,CAAC;AAAA,EAC9B;AACI,SAAO,CAAC2Y,GAAIC,CAAE;AAClB;AACA,MAAMC,KAAQ,CAACngB,GAAGsH,MAAO,OAAOtH,MAAM,CAAC,KAAK4a,KAAQ,OAAOtT,MAAM,CAAC,GAE5D8Y,KAAQ,CAACpgB,GAAGqgB,GAAI1gB,MAAMK,MAAML,GAC5B2gB,KAAQ,CAACtgB,GAAGsH,GAAG3H,MAAOK,KAAM,KAAKL,IAAO2H,MAAM3H,GAE9C4gB,KAAS,CAACvgB,GAAGsH,GAAG3H,MAAOK,MAAML,IAAM2H,KAAM,KAAK3H,GAC9C6gB,KAAS,CAACxgB,GAAGsH,GAAG3H,MAAOK,KAAM,KAAKL,IAAO2H,MAAM3H,GAE/C8gB,KAAS,CAACzgB,GAAGsH,GAAG3H,MAAOK,KAAM,KAAKL,IAAO2H,MAAO3H,IAAI,IACpD+gB,KAAS,CAAC1gB,GAAGsH,GAAG3H,MAAOK,MAAOL,IAAI,KAAQ2H,KAAM,KAAK3H,GAErDghB,KAAU,CAACC,GAAItZ,MAAMA,GACrBuZ,KAAU,CAAC7gB,GAAGqgB,MAAOrgB,GAErB8gB,KAAS,CAAC9gB,GAAGsH,GAAG3H,MAAOK,KAAKL,IAAM2H,MAAO,KAAK3H,GAC9CohB,KAAS,CAAC/gB,GAAGsH,GAAG3H,MAAO2H,KAAK3H,IAAMK,MAAO,KAAKL,GAE9CqhB,KAAS,CAAChhB,GAAGsH,GAAG3H,MAAO2H,KAAM3H,IAAI,KAAQK,MAAO,KAAKL,GACrDshB,KAAS,CAACjhB,GAAGsH,GAAG3H,MAAOK,KAAML,IAAI,KAAQ2H,MAAO,KAAK3H;AAG3D,SAASrpB,GAAI2pC,GAAIC,GAAIgB,GAAIC,GAAI;AACzB,QAAM7Z,KAAK4Y,MAAO,MAAMiB,MAAO;AAC/B,SAAO,EAAE,GAAIlB,IAAKiB,KAAO5Z,IAAI,KAAK,KAAM,KAAM,GAAG,GAAGA,IAAI,EAAG;AAC/D;AAEA,MAAM8Z,KAAQ,CAAClB,GAAIiB,GAAIE,OAAQnB,MAAO,MAAMiB,MAAO,MAAME,MAAO,IAC1DC,KAAQ,CAACC,GAAKtB,GAAIiB,GAAIM,MAAQvB,IAAKiB,IAAKM,KAAOD,IAAM,KAAK,KAAM,KAAM,GACtEE,KAAQ,CAACvB,GAAIiB,GAAIE,GAAIK,OAAQxB,MAAO,MAAMiB,MAAO,MAAME,MAAO,MAAMK,MAAO,IAC3EC,KAAQ,CAACJ,GAAKtB,GAAIiB,GAAIM,GAAII,MAAQ3B,IAAKiB,IAAKM,IAAKI,KAAOL,IAAM,KAAK,KAAM,KAAM,GAC/EM,KAAQ,CAAC3B,GAAIiB,GAAIE,GAAIK,GAAII,OAAQ5B,MAAO,MAAMiB,MAAO,MAAME,MAAO,MAAMK,MAAO,MAAMI,MAAO,IAC5FC,KAAQ,CAACR,GAAKtB,GAAIiB,GAAIM,GAAII,GAAII,MAAQ/B,IAAKiB,IAAKM,IAAKI,IAAKI,KAAOT,IAAM,KAAK,KAAM,KAAM,GAIxFU,KAAM;AAAA,EACR,SAAAlC;AAAA,EAAS,OAAAC;AAAA,EAAO,OAAAG;AAAA,EAChB,OAAAC;AAAA,EAAO,OAAAE;AAAA,EACP,QAAAC;AAAA,EAAQ,QAAAC;AAAA,EAAQ,QAAAC;AAAA,EAAQ,QAAAC;AAAA,EACxB,SAAAC;AAAA,EAAS,SAAAE;AAAA,EACT,QAAAC;AAAA,EAAQ,QAAAC;AAAA,EAAQ,QAAAC;AAAA,EAAQ,QAAAC;AAAA,EACxB,KAAA3qC;AAAA,EAAK,OAAA8qC;AAAA,EAAO,OAAAE;AAAA,EAAO,OAAAG;AAAA,EAAO,OAAAE;AAAA,EAAO,OAAAI;AAAA,EAAO,OAAAF;AAC5C,GChDMK,KAAU,CAAE,GACZC,KAAY,CAAE,GACdC,KAAa,CAAE,GACfC,KAAsB,uBAAO,CAAC,GAC9BC,KAAsB,uBAAO,CAAC,GAC9BC,KAAsB,uBAAO,CAAC,GAC9BC,KAAsB,uBAAO,CAAC,GAC9BC,KAAwB,uBAAO,GAAG,GAClCC,KAAyB,uBAAO,GAAI;AAC1C,SAASC,IAAQ,GAAGC,IAAIN,IAAKxhB,IAAI,GAAGC,IAAI,GAAG4hB,IAAQ,IAAIA,KAAS;AAE5D,GAAC7hB,GAAGC,CAAC,IAAI,CAACA,IAAI,IAAID,IAAI,IAAIC,KAAK,CAAC,GAChCmhB,GAAQ,KAAK,KAAK,IAAInhB,IAAID,EAAE,GAE5BqhB,GAAU,MAAQQ,IAAQ,MAAMA,IAAQ,KAAM,IAAK,EAAE;AAErD,MAAIvpB,IAAIipB;AACR,WAASxrB,IAAI,GAAGA,IAAI,GAAGA;AACnB,IAAA+rB,KAAMA,KAAKN,MAASM,KAAKJ,MAAOE,MAAWD,IACvCG,IAAIL,OACJnpB,KAAKkpB,OAASA,MAAuB,uBAAOzrB,CAAC,KAAKyrB;AAE1D,EAAAF,GAAW,KAAKhpB,CAAC;AACrB;AACA,MAAM,CAACypB,IAAaC,EAAW,IAAoB,gBAAA9C,GAAMoC,IAAY,EAAI,GAEnEW,KAAQ,CAAC/iB,GAAGsH,GAAG3H,MAAOA,IAAI,KAAKqhB,GAAOhhB,GAAGsH,GAAG3H,CAAC,IAAImhB,GAAO9gB,GAAGsH,GAAG3H,CAAC,GAC/DqjB,KAAQ,CAAChjB,GAAGsH,GAAG3H,MAAOA,IAAI,KAAKshB,GAAOjhB,GAAGsH,GAAG3H,CAAC,IAAIohB,GAAO/gB,GAAGsH,GAAG3H,CAAC;AAE9D,SAASsjB,GAAQtjB,GAAGujB,IAAS,IAAI;AACpC,QAAMjiB,IAAI,IAAI,YAAY,EAAK;AAE/B,WAAS0hB,IAAQ,KAAKO,GAAQP,IAAQ,IAAIA,KAAS;AAE/C,aAAS7hB,IAAI,GAAGA,IAAI,IAAIA;AACpB,MAAAG,EAAEH,CAAC,IAAInB,EAAEmB,CAAC,IAAInB,EAAEmB,IAAI,EAAE,IAAInB,EAAEmB,IAAI,EAAE,IAAInB,EAAEmB,IAAI,EAAE,IAAInB,EAAEmB,IAAI,EAAE;AAC9D,aAASA,IAAI,GAAGA,IAAI,IAAIA,KAAK,GAAG;AAC5B,YAAMqiB,KAAQriB,IAAI,KAAK,IACjBsiB,KAAQtiB,IAAI,KAAK,IACjBuiB,IAAKpiB,EAAEmiB,CAAI,GACXE,IAAKriB,EAAEmiB,IAAO,CAAC,GACfG,IAAKR,GAAMM,GAAIC,GAAI,CAAC,IAAIriB,EAAEkiB,CAAI,GAC9BK,IAAKR,GAAMK,GAAIC,GAAI,CAAC,IAAIriB,EAAEkiB,IAAO,CAAC;AACxC,eAASpiB,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,QAAApB,EAAEmB,IAAIC,CAAC,KAAKwiB,GACZ5jB,EAAEmB,IAAIC,IAAI,CAAC,KAAKyiB;AAAA,IAEhC;AAEQ,QAAIC,IAAO9jB,EAAE,CAAC,GACV+jB,IAAO/jB,EAAE,CAAC;AACd,aAASvG,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,YAAMD,IAAQgpB,GAAU/oB,CAAC,GACnBmqB,IAAKR,GAAMU,GAAMC,GAAMvqB,CAAK,GAC5BqqB,IAAKR,GAAMS,GAAMC,GAAMvqB,CAAK,GAC5BwqB,IAAKzB,GAAQ9oB,CAAC;AACpB,MAAAqqB,IAAO9jB,EAAEgkB,CAAE,GACXD,IAAO/jB,EAAEgkB,IAAK,CAAC,GACfhkB,EAAEgkB,CAAE,IAAIJ,GACR5jB,EAAEgkB,IAAK,CAAC,IAAIH;AAAA,IACxB;AAEQ,aAASziB,IAAI,GAAGA,IAAI,IAAIA,KAAK,IAAI;AAC7B,eAASD,IAAI,GAAGA,IAAI,IAAIA;AACpB,QAAAG,EAAEH,CAAC,IAAInB,EAAEoB,IAAID,CAAC;AAClB,eAASA,IAAI,GAAGA,IAAI,IAAIA;AACpB,QAAAnB,EAAEoB,IAAID,CAAC,KAAK,CAACG,GAAGH,IAAI,KAAK,EAAE,IAAIG,GAAGH,IAAI,KAAK,EAAE;AAAA,IAC7D;AAEQ,IAAAnB,EAAE,CAAC,KAAKkjB,GAAYF,CAAK,GACzBhjB,EAAE,CAAC,KAAKmjB,GAAYH,CAAK;AAAA,EACjC;AACI,EAAA1hB,EAAE,KAAK,CAAC;AACZ;AAEO,MAAM2iB,WAAetL,GAAK;AAAA;AAAA,EAE7B,YAAYW,GAAU4K,GAAQtK,GAAWuK,IAAY,IAAOZ,IAAS,IAAI;AAerE,QAdA,MAAO,GACP,KAAK,WAAWjK,GAChB,KAAK,SAAS4K,GACd,KAAK,YAAYtK,GACjB,KAAK,YAAYuK,GACjB,KAAK,SAASZ,GACd,KAAK,MAAM,GACX,KAAK,SAAS,GACd,KAAK,WAAW,IAChB,KAAK,YAAY,IAEjBjM,GAAQsC,CAAS,GAGb,KAAK,KAAK,YAAY,KAAK,YAAY;AACvC,YAAM,IAAI,MAAM,0CAA0C;AAC9D,SAAK,QAAQ,IAAI,WAAW,GAAG,GAC/B,KAAK,UAAU5B,GAAI,KAAK,KAAK;AAAA,EACrC;AAAA,EACI,SAAS;AACL,IAAKK,MACDE,GAAW,KAAK,OAAO,GAC3B+K,GAAQ,KAAK,SAAS,KAAK,MAAM,GAC5BjL,MACDE,GAAW,KAAK,OAAO,GAC3B,KAAK,SAAS,GACd,KAAK,MAAM;AAAA,EACnB;AAAA,EACI,OAAOnH,GAAM;AACT,IAAAuG,GAAQ,IAAI;AACZ,UAAM,EAAE,UAAA2B,GAAU,OAAAuC,EAAK,IAAK;AAC5B,IAAAzK,IAAOjL,GAAQiL,CAAI;AACnB,UAAMl8B,IAAMk8B,EAAK;AACjB,aAASzH,IAAM,GAAGA,IAAMz0B,KAAM;AAC1B,YAAMwmC,IAAO,KAAK,IAAIpC,IAAW,KAAK,KAAKpkC,IAAMy0B,CAAG;AACpD,eAASvW,IAAI,GAAGA,IAAIsoB,GAAMtoB;AACtB,QAAAyoB,EAAM,KAAK,KAAK,KAAKzK,EAAKzH,GAAK;AACnC,MAAI,KAAK,QAAQ2P,KACb,KAAK,OAAQ;AAAA,IAC7B;AACQ,WAAO;AAAA,EACf;AAAA,EACI,SAAS;AACL,QAAI,KAAK;AACL;AACJ,SAAK,WAAW;AAChB,UAAM,EAAE,OAAAuC,GAAO,QAAAqI,GAAQ,KAAAva,GAAK,UAAA2P,EAAU,IAAG;AAEzC,IAAAuC,EAAMlS,CAAG,KAAKua,GACTA,IAAS,OAAeva,MAAQ2P,IAAW,KAC5C,KAAK,OAAQ,GACjBuC,EAAMvC,IAAW,CAAC,KAAK,KACvB,KAAK,OAAQ;AAAA,EACrB;AAAA,EACI,UAAU1gB,GAAK;AACX,IAAA+e,GAAQ,MAAM,EAAK,GACnBH,GAAO5e,CAAG,GACV,KAAK,OAAQ;AACb,UAAMwrB,IAAY,KAAK,OACjB,EAAE,UAAA9K,EAAQ,IAAK;AACrB,aAAS3P,IAAM,GAAGz0B,IAAM0jB,EAAI,QAAQ+Q,IAAMz0B,KAAM;AAC5C,MAAI,KAAK,UAAUokC,KACf,KAAK,OAAQ;AACjB,YAAMoC,IAAO,KAAK,IAAIpC,IAAW,KAAK,QAAQpkC,IAAMy0B,CAAG;AACvD,MAAA/Q,EAAI,IAAIwrB,EAAU,SAAS,KAAK,QAAQ,KAAK,SAAS1I,CAAI,GAAG/R,CAAG,GAChE,KAAK,UAAU+R,GACf/R,KAAO+R;AAAA,IACnB;AACQ,WAAO9iB;AAAA,EACf;AAAA,EACI,QAAQA,GAAK;AAET,QAAI,CAAC,KAAK;AACN,YAAM,IAAI,MAAM,uCAAuC;AAC3D,WAAO,KAAK,UAAUA,CAAG;AAAA,EACjC;AAAA,EACI,IAAIlgB,GAAO;AACP,WAAA4+B,GAAQ5+B,CAAK,GACN,KAAK,QAAQ,IAAI,WAAWA,CAAK,CAAC;AAAA,EACjD;AAAA,EACI,WAAWkgB,GAAK;AAEZ,QADAif,GAAQjf,GAAK,IAAI,GACb,KAAK;AACL,YAAM,IAAI,MAAM,6BAA6B;AACjD,gBAAK,UAAUA,CAAG,GAClB,KAAK,QAAS,GACPA;AAAA,EACf;AAAA,EACI,SAAS;AACL,WAAO,KAAK,WAAW,IAAI,WAAW,KAAK,SAAS,CAAC;AAAA,EAC7D;AAAA,EACI,UAAU;AACN,SAAK,YAAY,IACjB,KAAK,MAAM,KAAK,CAAC;AAAA,EACzB;AAAA,EACI,WAAW2gB,GAAI;AACX,UAAM,EAAE,UAAAD,GAAU,QAAA4K,GAAQ,WAAAtK,GAAW,QAAA2J,GAAQ,WAAAY,EAAS,IAAK;AAC3D,WAAA5K,MAAOA,IAAK,IAAI0K,GAAO3K,GAAU4K,GAAQtK,GAAWuK,GAAWZ,CAAM,IACrEhK,EAAG,QAAQ,IAAI,KAAK,OAAO,GAC3BA,EAAG,MAAM,KAAK,KACdA,EAAG,SAAS,KAAK,QACjBA,EAAG,WAAW,KAAK,UACnBA,EAAG,SAASgK,GAEZhK,EAAG,SAAS2K,GACZ3K,EAAG,YAAYK,GACfL,EAAG,YAAY4K,GACf5K,EAAG,YAAY,KAAK,WACbA;AAAA,EACf;AACA;AACA,MAAM8K,KAAM,CAACH,GAAQ5K,GAAUM,MAAcd,GAAgB,MAAM,IAAImL,GAAO3K,GAAU4K,GAAQtK,CAAS,CAAC,GAY7F0K,KAA6B,gBAAAD,GAAI,GAAM,KAAK,MAAM,CAAC,GChN1DE,KAAsB,oBAAI,WAAW,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,GAC3FC,KAAqB,oBAAI,WAAW,IAAI,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAACrN,GAAG/jB,MAAMA,CAAC,CAAC,GAC1E8sB,KAAqB,gBAAAsE,GAAG,IAAI,CAACpxB,OAAO,IAAIA,IAAI,KAAK,EAAE;AACzD,IAAIqxB,KAAO,CAACD,EAAE,GACVE,KAAO,CAACxE,EAAE;AACd,SAAS9sB,IAAI,GAAGA,IAAI,GAAGA;AACnB,WAAS8D,KAAK,CAACutB,IAAMC,EAAI;AACrB,IAAAxtB,EAAE,KAAKA,EAAE9D,CAAC,EAAE,IAAI,CAACiH,MAAMkqB,GAAIlqB,CAAC,CAAC,CAAC;AACtC,MAAMsqB,KAAyB;AAAA,EAC3B,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,EACvD,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,EACvD,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,EACvD,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,EACvD,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAC3D,EAAE,IAAI,CAACvxB,MAAM,IAAI,WAAWA,CAAC,CAAC,GACxBwxB,KAA0B,gBAAAH,GAAK,IAAI,CAACI,GAAKzxB,MAAMyxB,EAAI,IAAI,CAAC3tB,MAAMytB,GAAOvxB,CAAC,EAAE8D,CAAC,CAAC,CAAC,GAC3E4tB,KAA0B,gBAAAJ,GAAK,IAAI,CAACG,GAAKzxB,MAAMyxB,EAAI,IAAI,CAAC3tB,MAAMytB,GAAOvxB,CAAC,EAAE8D,CAAC,CAAC,CAAC,GAC3E6tB,KAAqB,oBAAI,YAAY;AAAA,EACvC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AACpD,CAAC,GACKC,KAAqB,oBAAI,YAAY;AAAA,EACvC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AACpD,CAAC;AAED,SAASC,GAAEC,GAAO/jB,GAAGC,GAAGiC,GAAG;AACvB,SAAI6hB,MAAU,IACH/jB,IAAIC,IAAIiC,IACV6hB,MAAU,IACP/jB,IAAIC,IAAM,CAACD,IAAIkC,IAClB6hB,MAAU,KACP/jB,IAAI,CAACC,KAAKiC,IACb6hB,MAAU,IACP/jB,IAAIkC,IAAMjC,IAAI,CAACiC,IAEhBlC,KAAKC,IAAI,CAACiC;AACzB;AAEA,MAAM8hB,KAAwB,oBAAI,YAAY,EAAE;AACzC,MAAMC,WAAkB7J,GAAO;AAAA,EAClC,cAAc;AACV,UAAM,IAAI,IAAI,GAAG,EAAI,GACrB,KAAK,KAAK,YACV,KAAK,KAAK,YACV,KAAK,KAAK,aACV,KAAK,KAAK,WACV,KAAK,KAAK;AAAA,EAClB;AAAA,EACI,MAAM;AACF,UAAM,EAAE,IAAA8J,GAAI,IAAAC,GAAI,IAAAC,GAAI,IAAAC,GAAI,IAAAC,EAAE,IAAK;AAC/B,WAAO,CAACJ,GAAIC,GAAIC,GAAIC,GAAIC,CAAE;AAAA,EAClC;AAAA,EACI,IAAIJ,GAAIC,GAAIC,GAAIC,GAAIC,GAAI;AACpB,SAAK,KAAKJ,IAAK,GACf,KAAK,KAAKC,IAAK,GACf,KAAK,KAAKC,IAAK,GACf,KAAK,KAAKC,IAAK,GACf,KAAK,KAAKC,IAAK;AAAA,EACvB;AAAA,EACI,QAAQ7K,GAAM5gC,GAAQ;AAClB,aAASoZ,IAAI,GAAGA,IAAI,IAAIA,KAAKpZ,KAAU;AACnC,MAAAmrC,GAAM/xB,CAAC,IAAIwnB,EAAK,UAAU5gC,GAAQ,EAAI;AAE1C,QAAI0rC,IAAK,KAAK,KAAK,GAAGC,IAAKD,GAAIlc,IAAK,KAAK,KAAK,GAAGoc,IAAKpc,GAAI2C,IAAK,KAAK,KAAK,GAAGqE,IAAKrE,GAAIhD,IAAK,KAAK,KAAK,GAAG0c,IAAK1c,GAAI2c,IAAK,KAAK,KAAK,GAAGC,IAAKD;AAGvI,aAASZ,IAAQ,GAAGA,IAAQ,GAAGA,KAAS;AACpC,YAAMc,IAAS,IAAId,GACbe,IAAMlB,GAAGG,CAAK,GAAGgB,IAAMlB,GAAGE,CAAK,GAC/BiB,IAAK1B,GAAKS,CAAK,GAAGkB,IAAK1B,GAAKQ,CAAK,GACjChc,IAAK0b,GAAQM,CAAK,GAAGmB,IAAKvB,GAAQI,CAAK;AAC7C,eAAS9xB,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,cAAMgX,IAAMgO,GAAKsN,IAAKT,GAAEC,GAAO1b,GAAI2C,GAAIhD,CAAE,IAAIgc,GAAMgB,EAAG/yB,CAAC,CAAC,IAAI6yB,GAAK/c,EAAG9V,CAAC,CAAC,IAAI0yB,IAAM;AAChF,QAAAJ,IAAKI,GAAIA,IAAK3c,GAAIA,IAAKiP,GAAKjM,GAAI,EAAE,IAAI,GAAGA,IAAK3C,GAAIA,IAAKY;AAAA,MACvE;AAEY,eAAShX,IAAI,GAAGA,IAAI,IAAIA,KAAK;AACzB,cAAM9X,IAAM88B,GAAKuN,IAAKV,GAAEe,GAAQJ,GAAIpV,GAAIqV,CAAE,IAAIV,GAAMiB,EAAGhzB,CAAC,CAAC,IAAI8yB,GAAKG,EAAGjzB,CAAC,CAAC,IAAI2yB,IAAM;AACjF,QAAAJ,IAAKI,GAAIA,IAAKF,GAAIA,IAAKzN,GAAK5H,GAAI,EAAE,IAAI,GAAGA,IAAKoV,GAAIA,IAAKtqC;AAAA,MACvE;AAAA,IACA;AAEQ,SAAK,IAAK,KAAK,KAAK6wB,IAAK0Z,IAAM,GAAI,KAAK,KAAK1c,IAAK4c,IAAM,GAAI,KAAK,KAAKD,IAAKH,IAAM,GAAI,KAAK,KAAKD,IAAKE,IAAM,GAAI,KAAK,KAAKpc,IAAKgH,IAAM,CAAC;AAAA,EAC5I;AAAA,EACI,aAAa;AACT,IAAA2U,GAAM,KAAK,CAAC;AAAA,EACpB;AAAA,EACI,UAAU;AACN,SAAK,YAAY,IACjB,KAAK,OAAO,KAAK,CAAC,GAClB,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,EAC9B;AACA;AAEO,MAAMmB,KAA4B,gBAAAxN,GAAgB,MAAM,IAAIsM,IAAW,GCzFxE,CAACmB,IAAWC,EAAS,IAA2BlE,GAAI,MAAM;AAAA,EAC5D;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAClE;AAAA,EAAsB;AAAA,EAAsB;AAAA,EAAsB;AACtE,EAAE,IAAI,CAAA5X,MAAK,OAAOA,CAAC,CAAC,CAAC,GAEf+b,KAA6B,oBAAI,YAAY,EAAE,GAC/CC,KAA6B,oBAAI,YAAY,EAAE;AAC9C,MAAMC,WAAepL,GAAO;AAAA,EAC/B,cAAc;AACV,UAAM,KAAK,IAAI,IAAI,EAAK,GAKxB,KAAK,KAAK,YACV,KAAK,KAAK,YACV,KAAK,KAAK,aACV,KAAK,KAAK,aACV,KAAK,KAAK,YACV,KAAK,KAAK,WACV,KAAK,KAAK,aACV,KAAK,KAAK,YACV,KAAK,KAAK,YACV,KAAK,KAAK,aACV,KAAK,KAAK,aACV,KAAK,KAAK,WACV,KAAK,KAAK,WACV,KAAK,KAAK,WACV,KAAK,KAAK,YACV,KAAK,KAAK;AAAA,EAClB;AAAA;AAAA,EAEI,MAAM;AACF,UAAM,EAAE,IAAA+E,GAAI,IAAAC,GAAI,IAAAgB,GAAI,IAAAC,GAAI,IAAAK,GAAI,IAAAH,GAAI,IAAAO,GAAI,IAAAF,GAAI,IAAAM,GAAI,IAAAF,GAAI,IAAAyE,GAAI,IAAAC,GAAI,IAAAC,GAAI,IAAAC,GAAI,IAAAC,GAAI,IAAAC,EAAE,IAAK;AAC3E,WAAO,CAAC3G,GAAIC,GAAIgB,GAAIC,GAAIK,GAAIH,GAAIO,GAAIF,GAAIM,GAAIF,GAAIyE,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,CAAE;AAAA,EAC9E;AAAA;AAAA,EAEI,IAAI3G,GAAIC,GAAIgB,GAAIC,GAAIK,GAAIH,GAAIO,GAAIF,GAAIM,GAAIF,GAAIyE,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAI;AAChE,SAAK,KAAK3G,IAAK,GACf,KAAK,KAAKC,IAAK,GACf,KAAK,KAAKgB,IAAK,GACf,KAAK,KAAKC,IAAK,GACf,KAAK,KAAKK,IAAK,GACf,KAAK,KAAKH,IAAK,GACf,KAAK,KAAKO,IAAK,GACf,KAAK,KAAKF,IAAK,GACf,KAAK,KAAKM,IAAK,GACf,KAAK,KAAKF,IAAK,GACf,KAAK,KAAKyE,IAAK,GACf,KAAK,KAAKC,IAAK,GACf,KAAK,KAAKC,IAAK,GACf,KAAK,KAAKC,IAAK,GACf,KAAK,KAAKC,IAAK,GACf,KAAK,KAAKC,IAAK;AAAA,EACvB;AAAA,EACI,QAAQrM,GAAM5gC,GAAQ;AAElB,aAASoZ,IAAI,GAAGA,IAAI,IAAIA,KAAKpZ,KAAU;AACnC,MAAAysC,GAAWrzB,CAAC,IAAIwnB,EAAK,UAAU5gC,CAAM,GACrC0sC,GAAWtzB,CAAC,IAAIwnB,EAAK,UAAW5gC,KAAU,CAAG;AAEjD,aAASoZ,IAAI,IAAIA,IAAI,IAAIA,KAAK;AAE1B,YAAM8zB,IAAOT,GAAWrzB,IAAI,EAAE,IAAI,GAC5B+zB,IAAOT,GAAWtzB,IAAI,EAAE,IAAI,GAC5Bg0B,IAAM9E,GAAI,OAAO4E,GAAMC,GAAM,CAAC,IAAI7E,GAAI,OAAO4E,GAAMC,GAAM,CAAC,IAAI7E,GAAI,MAAM4E,GAAMC,GAAM,CAAC,GACrFE,IAAM/E,GAAI,OAAO4E,GAAMC,GAAM,CAAC,IAAI7E,GAAI,OAAO4E,GAAMC,GAAM,CAAC,IAAI7E,GAAI,MAAM4E,GAAMC,GAAM,CAAC,GAErFG,IAAMb,GAAWrzB,IAAI,CAAC,IAAI,GAC1Bm0B,IAAMb,GAAWtzB,IAAI,CAAC,IAAI,GAC1Bo0B,IAAMlF,GAAI,OAAOgF,GAAKC,GAAK,EAAE,IAAIjF,GAAI,OAAOgF,GAAKC,GAAK,EAAE,IAAIjF,GAAI,MAAMgF,GAAKC,GAAK,CAAC,GACjFE,IAAMnF,GAAI,OAAOgF,GAAKC,GAAK,EAAE,IAAIjF,GAAI,OAAOgF,GAAKC,GAAK,EAAE,IAAIjF,GAAI,MAAMgF,GAAKC,GAAK,CAAC,GAEjFG,IAAOpF,GAAI,MAAM+E,GAAKI,GAAKf,GAAWtzB,IAAI,CAAC,GAAGszB,GAAWtzB,IAAI,EAAE,CAAC,GAChEu0B,IAAOrF,GAAI,MAAMoF,GAAMN,GAAKI,GAAKf,GAAWrzB,IAAI,CAAC,GAAGqzB,GAAWrzB,IAAI,EAAE,CAAC;AAC5E,MAAAqzB,GAAWrzB,CAAC,IAAIu0B,IAAO,GACvBjB,GAAWtzB,CAAC,IAAIs0B,IAAO;AAAA,IACnC;AACQ,QAAI,EAAE,IAAApH,GAAI,IAAAC,GAAI,IAAAgB,GAAI,IAAAC,GAAI,IAAAK,GAAI,IAAAH,GAAI,IAAAO,GAAI,IAAAF,GAAI,IAAAM,GAAI,IAAAF,GAAI,IAAAyE,GAAI,IAAAC,GAAI,IAAAC,GAAI,IAAAC,GAAI,IAAAC,GAAI,IAAAC,EAAE,IAAK;AAEzE,aAAS7zB,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAEzB,YAAMw0B,IAAUtF,GAAI,OAAOD,GAAIF,GAAI,EAAE,IAAIG,GAAI,OAAOD,GAAIF,GAAI,EAAE,IAAIG,GAAI,OAAOD,GAAIF,GAAI,EAAE,GACjF0F,IAAUvF,GAAI,OAAOD,GAAIF,GAAI,EAAE,IAAIG,GAAI,OAAOD,GAAIF,GAAI,EAAE,IAAIG,GAAI,OAAOD,GAAIF,GAAI,EAAE,GAEjF2F,IAAQzF,IAAKuE,IAAO,CAACvE,IAAKyE,GAC1BiB,IAAQ5F,IAAK0E,IAAO,CAAC1E,IAAK4E,GAG1BiB,IAAO1F,GAAI,MAAM2E,GAAIY,GAASE,GAAMvB,GAAUpzB,CAAC,GAAGszB,GAAWtzB,CAAC,CAAC,GAC/D60B,IAAM3F,GAAI,MAAM0F,GAAMhB,GAAIY,GAASE,GAAMvB,GAAUnzB,CAAC,GAAGqzB,GAAWrzB,CAAC,CAAC,GACpE80B,IAAMF,IAAO,GAEbG,IAAU7F,GAAI,OAAOhC,GAAIC,GAAI,EAAE,IAAI+B,GAAI,OAAOhC,GAAIC,GAAI,EAAE,IAAI+B,GAAI,OAAOhC,GAAIC,GAAI,EAAE,GACjF6H,IAAU9F,GAAI,OAAOhC,GAAIC,GAAI,EAAE,IAAI+B,GAAI,OAAOhC,GAAIC,GAAI,EAAE,IAAI+B,GAAI,OAAOhC,GAAIC,GAAI,EAAE,GACjF8H,IAAQ/H,IAAKiB,IAAOjB,IAAKuB,IAAON,IAAKM,GACrCyG,IAAQ/H,IAAKiB,IAAOjB,IAAKmB,IAAOF,IAAKE;AAC3C,MAAAsF,IAAKF,IAAK,GACVG,IAAKF,IAAK,GACVD,IAAKF,IAAK,GACVG,IAAKF,IAAK,GACVD,IAAKvE,IAAK,GACVwE,IAAK1E,IAAK,GACT,EAAE,GAAGE,GAAI,GAAGF,EAAE,IAAKG,GAAI,IAAIL,IAAK,GAAGF,IAAK,GAAGkG,IAAM,GAAGC,IAAM,CAAC,GAC5DjG,IAAKJ,IAAK,GACVE,IAAKL,IAAK,GACVG,IAAKN,IAAK,GACVG,IAAKF,IAAK,GACVD,IAAKjB,IAAK,GACVkB,IAAKjB,IAAK;AACV,YAAMgI,IAAMjG,GAAI,MAAM4F,GAAKE,GAASE,CAAI;AACxC,MAAAhI,IAAKgC,GAAI,MAAMiG,GAAKN,GAAKE,GAASE,CAAI,GACtC9H,IAAKgI,IAAM;AAAA,IACvB;AAEQ,KAAC,EAAE,GAAGjI,GAAI,GAAGC,MAAO+B,GAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAGhC,IAAK,GAAGC,IAAK,CAAC,IACnE,EAAE,GAAGgB,GAAI,GAAGC,MAAOc,GAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAGf,IAAK,GAAGC,IAAK,CAAC,GACnE,EAAE,GAAGK,GAAI,GAAGH,MAAOY,GAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAGT,IAAK,GAAGH,IAAK,CAAC,GACnE,EAAEO,GAAO,GAAGF,MAAOO,GAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAGL,IAAK,GAAGF,IAAK,CAAC,GACnE,EAAE,GAAGM,GAAI,GAAGF,MAAOG,GAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAGD,IAAK,GAAGF,IAAK,CAAC,GACnE,EAAE,GAAGyE,GAAI,GAAGC,MAAOvE,GAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAGsE,IAAK,GAAGC,IAAK,CAAC,GACnE,EAAE,GAAGC,GAAI,GAAGC,MAAOzE,GAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAGwE,IAAK,GAAGC,IAAK,CAAC,GACnE,EAAE,GAAGC,GAAI,GAAGC,MAAO3E,GAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG0E,IAAK,GAAGC,IAAK,CAAC,GACpE,KAAK,IAAI3G,GAAIC,GAAIgB,GAAIC,GAAIK,GAAIH,GAAIO,GAAIF,GAAIM,GAAIF,GAAIyE,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,CAAE;AAAA,EAC/E;AAAA,EACI,aAAa;AACT,IAAAR,GAAW,KAAK,CAAC,GACjBC,GAAW,KAAK,CAAC;AAAA,EACzB;AAAA,EACI,UAAU;AACN,SAAK,OAAO,KAAK,CAAC,GAClB,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,EAC/D;AACA;AAuEO,MAAM8B,KAAyB,gBAAA1P,GAAgB,MAAM,IAAI6N,IAAQ;AC1OxE,IAAIhzB,KAAY,OAAO,gBACnBC,KAAS,CAACC,GAAQvb,MAAUqb,GAAUE,GAAQ,QAAQ,EAAE,OAAAvb,GAAO,cAAc,IAAM,GAInF2nC,KAAyBrsB,gBAAAA,GAAO,CAAC60B,MAAW;AAC9C,QAAM,EAAE,UAAArO,GAAU,MAAAC,GAAM,GAAG,GAAAnZ,GAAG,GAAAxJ,GAAG,OAAAgxB,EAAK,IAAKD;AAE3C,SADmBE,GAAYvO,GAAUC,GAAM,EAAE,GAAG,GAAG,GAAA3iB,GAAG,GAAAwJ,GAAG,OAAOwnB,EAAK,CAAE;AAE7E,GAAG,QAAQ,GAIPE,KAA4Bh1B,gBAAAA,GAAO,CAACwd,MAASkT,GAAWlT,CAAI,GAAG,WAAW;AAK9E,SAASkV,GAAUuC,GAAO;AACxB,QAAMzX,IAAOc,EAAS2W,GAAO,MAAM;AACnC,SAAOC,GAAgB1X,CAAI;AAC7B;AACAxd,GAAO0yB,IAAW,WAAW;AAO7B,IAAIyC,KAAmCn1B,gBAAAA,GAAO,CAAC0D,GAAQ0xB,IAAW,aAAa;AAC7E,UAAQA,GAAQ;AAAA,IACd,KAAK;AACH,aAAO,IAAI,YAAW,EAAG,OAAO1xB,CAAM;AAAA,IAExC,KAAK,UAAU;AACb,YAAM2xB,IAAe,KAAK3xB,CAAM,GAC1BpiB,IAAM+zC,EAAa;AAEzB,aADc,IAAI,WAAW/zC,CAAG,EAAE,IAAI,CAACiiC,GAAG/jB,MAAM61B,EAAa,WAAW71B,CAAC,CAAC;AAAA,IAEhF;AAAA,IACI,KAAK;AAAA,IACL,SAAS;AACP,YAAM81B,IAAe5xB,EAAO,SAAS;AAMrC,aALe,IAAI,WAAW4xB,CAAY,EAAE,IAAI,CAAC/R,GAAG,MAAM;AACxD,cAAMgS,IAAa,IAAI;AAEvB,eADkB,SAAS7xB,EAAO,UAAU6xB,GAAYA,IAAa,CAAC,GAAG,EAAE;AAAA,MAEnF,CAAO;AAAA,IAEP;AAAA,EACA;AACA,GAAG,kBAAkB,GAOjBxO,KAAyB/mB,gBAAAA,GAAO,CAACwmB,GAAUC,GAAM+O,GAAYC,GAAQC,MAAS;AAChF,QAAMC,IAAY,EAAE1M,QAAAA,IAAQ,QAAA2L,GAAM,EAAGc,CAAI;AACzC,SAAOvW,EAAQyW,GAAGD,GAAWnP,GAAUC,GAAM,EAAE,GAAG+O,GAAY,OAAOC,EAAQ,CAAA,CAAC;AAChF,GAAG,QAAQ,GAIP,EAAE,QAAQI,UAASC,GAAI,IAAK;AAChC,IAAI,CAACD;AACH,QAAM,IAAIp0B;AAAA,IACRF,EAAU;AAAA,IACV;AAAA,EACD;AAEH,IAAI,CAACu0B;AACH,QAAM,IAAIr0B;AAAA,IACRF,EAAU;AAAA,IACV;AAAA,EACD;AAIH,IAAI8jB,KAA8BrlB,gBAAAA,GAAO,CAACoF,MACnBywB,GAAQ,gBAAgB,IAAI,WAAWzwB,CAAM,CAAC,GAElE,aAAa,GAGZ2wB,KAAmC/1B,gBAAAA,GAAO,CAAC6nB,GAAQuN,IAAW,aAAa;AAC7E,UAAQA,GAAQ;AAAA,IACd,KAAK;AACH,aAAO,IAAI,YAAW,EAAG,OAAOvN,CAAM;AAAA,IAExC,KAAK,UAAU;AACb,YAAMmO,IAAS,OAAO,aAAa,MAAM,MAAM,IAAI,WAAWnO,CAAM,CAAC;AACrE,aAAOiO,GAAKE,CAAM;AAAA,IACxB;AAAA,IACI,KAAK;AAAA,IACL,SAAS;AACP,UAAIC,IAAY;AAChB,eAASz2B,IAAI,GAAGA,IAAIqoB,EAAO,QAAQroB,KAAK,GAAG;AACzC,cAAM02B,IAAMrO,EAAOroB,CAAC,EAAE,SAAS,EAAE;AACjC,QAAAy2B,KAAaC,EAAI,WAAW,IAAI,IAAIA,CAAG,KAAKA;AAAA,MACpD;AACM,aAAOD;AAAA,IACb;AAAA,EACA;AACA,GAAG,kBAAkB,GAGjBE,KAAY,WACZC,KAAkCp2B,gBAAAA,GAAO,CAACwmB,GAAU6P,MAAe;AACrE,QAAMC,IAAanB,GAAiB,OAAO3O,CAAQ,EAAE,UAAU,MAAM,GAAG,OAAO,GACzEf,IAAMsB,GAAOuP,GAAYD,GAAY,KAAK,IAAI,QAAQ;AAC5D,SAAOE,EAAU9Q,CAAG;AACtB,GAAG,iBAAiB,GAChB+Q,KAA0Bx2B,gBAAAA,GAAO,OAAOwmB,GAAUhJ,MAAS;AAC7D,QAAMiZ,IAAKpR,GAAY,EAAE,GACnBoB,IAAOpB,GAAY,EAAE,GACrBqR,IAASN,GAAgB5P,GAAUC,CAAI,GACvCkQ,IAAa,KAAK,UAAUnZ,CAAI,GAChCoZ,IAAazB,GAAiBwB,GAAY,OAAO,GACjDE,IAAM;AAAA,IACV,MAAMV;AAAA,IACN,SAASM;AAAA,IACT,QAAQ;AAAA,EACT,GACKhR,IAAM,MAAM,OAAO,OAAO,UAAU,OAAOiR,GAAQG,GAAK,IAAO,CAAC,SAAS,CAAC,GAC1EC,IAAY,MAAM,OAAO,OAAO,QAAQD,GAAKpR,GAAKmR,CAAU;AAClE,SAAO;AAAA,IACL,MAAMb,GAAiB,IAAI,WAAWe,CAAS,CAAC;AAAA,IAChD,IAAIf,GAAiBU,CAAE;AAAA,IACvB,MAAMV,GAAiBtP,CAAI;AAAA,EAC5B;AACH,GAAG,SAAS,GACRsQ,KAA0B/2B,gBAAAA,GAAO,OAAOwmB,GAAUwQ,MAAa;AACjE,QAAMP,IAAKtB,GAAiB6B,EAAS,EAAE,GACjCvQ,IAAO0O,GAAiB6B,EAAS,IAAI,GACrCN,IAASN,GAAgB5P,GAAUC,CAAI,GACvCwQ,IAAgB9B,GAAiB6B,EAAS,IAAI,GAC9CH,IAAM;AAAA,IACV,MAAMV;AAAA,IACN,SAASM;AAAA,IACT,QAAQ;AAAA,EACT,GACKhR,IAAM,MAAM,OAAO,OAAO,UAAU,OAAOiR,GAAQG,GAAK,IAAO,CAAC,SAAS,CAAC,GAC1EK,IAAW,MAAM,OAAO,OAAO,QAAQL,GAAKpR,GAAKwR,CAAa,GAC9DE,IAAgB,IAAI,cAAc,OAAOD,CAAQ;AACvD,MAAI;AACF,WAAO,KAAK,MAAMC,CAAa;AAAA,EACnC,QAAU;AACN,UAAM,IAAI5X,EAAW/d,EAAW,qBAAqB,sBAAsB;AAAA,EAC/E;AACA,GAAG,SAAS,GAGR41B,KAAwCp3B,gBAAAA,GAAO,OAAOwd,GAAMiI,GAAKgR,MAAO;AAC1E,QAAMY,IAASxB,GAAQ,QACjByB,IAAY,IAAI,WAAW7R,EAAI,SAAS,GAAG,EAAE,CAAC,GAC9C8R,IAAWd,GACXG,IAAapZ,GACbga,IAAY,MAAMH,EAAO;AAAA,IAC7B;AAAA,IACAC;AAAA,IACA,EAAE,MAAM,WAAW,QAAQ,IAAK;AAAA,IAChC;AAAA,IACA,CAAC,WAAW,SAAS;AAAA,EACtB,GACKG,IAAY,MAAMJ,EAAO;AAAA,IAC7B,EAAE,MAAM,WAAW,SAASE,GAAU,QAAQ,IAAK;AAAA,IACnDC;AAAA,IACAZ;AAAA,EACD;AACD,SAAO,IAAI,WAAWa,CAAS;AACjC,GAAG,uBAAuB,GACtBC,KAAwC13B,gBAAAA,GAAO,OAAOwd,GAAMiI,GAAKgR,MAAO;AAC1E,QAAMY,IAASxB,GAAQ,QACjByB,IAAY,IAAI,WAAW7R,EAAI,SAAS,GAAG,EAAE,CAAC,EAAE,QAChD8R,IAAW,IAAI,WAAWd,CAAE,EAAE,QAC9BG,IAAa,IAAI,WAAWpZ,CAAI,EAAE,QAClCga,IAAY,MAAMH,EAAO;AAAA,IAC7B;AAAA,IACAC;AAAA,IACA,EAAE,MAAM,WAAW,QAAQ,IAAK;AAAA,IAChC;AAAA,IACA,CAAC,WAAW,SAAS;AAAA,EACtB,GACKK,IAAY,MAAMN,EAAO;AAAA,IAC7B,EAAE,MAAM,WAAW,SAASE,GAAU,QAAQ,IAAK;AAAA,IACnDC;AAAA,IACAZ;AAAA,EACD;AACD,SAAO,IAAI,WAAWe,CAAS;AACjC,GAAG,uBAAuB,GAOtBC,KAA8B53B,gBAAAA,GAAO,CAAC21B,GAAWlQ,GAAKjI,MAAS;AACjE,QAAM+H,IAAOoQ,MAAc,WAAWkC,KAAUC,IAC1CC,IAAY9R,GAAK,OAAOV,GAAME,CAAG,EAAE,OAAOjI,CAAI,EAAE,OAAQ;AAC9D,SAAOwa,EAASD,CAAS;AAC3B,GAAG,aAAa,GAGZE,KAA6Bj4B,gBAAAA,GAAO,MAAM61B,GAAQ,WAAU,GAAI,YAAY,GAG5EqC,KAAM;AAAA,EACR,kBAAA/C;AAAA,EACA,kBAAAY;AAAA,EACA,SAAAgB;AAAA,EACA,SAAAP;AAAA,EACA,iBAAAJ;AAAA,EACA,aAAA/Q;AAAA,EACA,QAAAgH;AAAA,EACA,WAAA2I;AAAA,EACA,uBAAA0C;AAAA,EACA,uBAAAN;AAAA,EACA,aAAAQ;AAAA,EACA,QAAA7Q;AAAA,EACA,WAAA2L;AAAA,EACA,YAAAuF;AACF,GACIE,KAAkBD,IAGlB;AAAA,EACF,kBAAkBE;AAAA,EAClB,SAASC;AAAA,EACT,SAASC;AAAA,EACT,iBAAiBC;AAAA,EACjB,aAAaC;AAAA,EACb,kBAAkBC;AAAA,EAClB,QAAQC;AAAA,EACR,WAAWC;AAAA,EACX,uBAAuBC;AAAA,EACvB,uBAAuBC;AAAA,EACvB,QAAQC;AAAA,EACR,aAAaC;AAAA,EACb,WAAWC;AAAA,EACX,YAAYC;AACd,IAAId,IClPAp4B,KAAY,OAAO,gBACnBC,KAAS,CAACC,GAAQvb,MAAUqb,GAAUE,GAAQ,QAAQ,EAAE,OAAAvb,GAAO,cAAc,IAAM,GAKnFw0C,KAAiB;AAAA;AACrB,SAASjQ,GAAOzL,GAAM;AACpB,SAAO2B,EAAQga,GAAc7a,EAASd,CAAI,CAAC,CAAC;AAC9C;AACAxd,GAAOipB,IAAQ,QAAQ;AACvB,SAAS1D,GAAK/H,GAAM;AAClB,SAAOyL,GAAOzL,CAAI;AACpB;AACAxd,GAAOulB,IAAM,MAAM;AACnB,SAAS6T,GAAgB10C,GAAO;AAC9B,QAAM20C,IAAc,OAAO30C,CAAK,GAC1BmjC,IAAS,IAAI,YAAY,CAAC,GAC1BE,IAAW,IAAI,SAASF,CAAM;AACpC,SAAAE,EAAS,aAAa,GAAGsR,GAAa,EAAK,GACpC,IAAI,WAAWtR,EAAS,MAAM;AACvC;AACA/nB,GAAOo5B,IAAiB,iBAAiB;AACzC,SAASE,GAAY13B,GAAS;AAC5B,MAAI,OAAOA,KAAY;AACrB,WAAOqnB,GAAOrH,GAAYhgB,CAAO,CAAC;AAEpC,QAAM,EAAE,cAAA23B,EAAY,IAAK33B,GACnB43B,IAAe,OAAOD,KAAiB,WAAW3X,GAAY2X,CAAY,IAAIA,GAC9EE,IAAUxa,GAAO;AAAA,IACrB2C,GAAYsX,EAAc;AAAA,IAC1BtX,GAAY,OAAO4X,EAAa,MAAM,CAAC;AAAA,IACvCA;AAAA,EACJ,CAAG;AACD,SAAOra,EAAQ8J,GAAOwQ,CAAO,CAAC;AAChC;AACAz5B,GAAOs5B,IAAa,aAAa;ACpCjC,IAAIv5B,KAAY,OAAO,gBACnBC,KAAS,CAACC,GAAQvb,MAAUqb,GAAUE,GAAQ,QAAQ,EAAE,OAAAvb,GAAO,cAAc,IAAM,OAGnFg1C,MAAQh4B,KAAA,MAAM;AAAA,EAOhB,YAAYQ,GAAMmU,GAAMsjB,GAAe;AAHvC,IAAA53B,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,OAAOG,GACZ,KAAK,OAAOmU,GACZ,KAAK,gBAAgBsjB;AAAA,EACzB;AACA,GAVI35B,GAAO0B,IAAM,OAAO,GAFZA,KAmBRk4B,KAAgB,MAChBC,KAAiB,OACjBC,KAAiB,OACjBC,KAAiB,OACjBC,KAAkB,QAClBC,KAAqB,mBACrBC,KAAuB,qBACvBC,KAAkB,QAClBC,KAAkB,QAClBC,KAAkB,0BAClBC,KAAoB,4BACpBC,KAAiB,wBACjBC,KAAmB,4BACnBC,KAAwB,8BACxBC,KAAuB,OACvBC,KAAY,MACZC,KAAc,kCACdC,KAAc,6BACdC,KAAa,mDACbC,KAAc,aACdC,KAAY,YACZC,KAAa,sBACbC,KAAe,eACfC,KAAqB,cACrBC,KAAc,KACdC,KAAY,GACZC,KAAW,IACXC,KAAcD,KAAW,GACzBE,KAAeF,IACfG,KAAkBH,IAClBI,KAAcJ,IAEdK,KAASN,KAAY,GACrBO,KAAiBP,KAAY,GAC7BQ,KAAY,KAAK,KAAK,GACtBC,KAAsC97B,gBAAAA,GAAO,CAAC,EAAE,WAAA+7B,EAAW,MAAKT;AACpEE;AAAA;AAEAO,KAAaP,KAAeH,MAAaA,IAAW,qBAAqB,GACrEW,KAAoBX;AACxBA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAC,IACIW,KAAwBZ;AAC5BM;AACAN;AACAK;AACAL;AACAG;AACAI;AACAP;AACAA;AACAA;AACAA,IAaIa,KAA+Bl8B,gBAAAA,GAAO,CAACtb,MAAUA,aAAiB,YAAY,cAAc,GAC5Fy3C,KAAkCn8B,gBAAAA,GAAO,CAACo8B,MAAW;AACvD,QAAMzd,IAAQ,MAAM,QAAQyd,CAAM,IAAIA,IAAS,OAAO,OAAOA,CAAM;AACnE,aAAWC,KAAQ1d;AAOjB,QANI0d,EAAK,SAAS/B,MAGd,WAAW+B,KAAQA,EAAK,MAAM,SAAS/B,MAGvC,YAAY+B,KACAF,GAAgBE,EAAK,MAAM;AAEvC,aAAO;AAIb,SAAO;AACT,GAAG,iBAAiB,WAGhBC,MAAa56B,KAAA,cAAcg4B,GAAM;AAAA,EAOnC,YAAY6C,GAAOn3B,GAAQ;AACzB,UAAM,SAAS,IAAIm3B,EAAM,IAAI,KAAKn3B,CAAM,KAAKA,IAASm3B,EAAM,aAAa;AAJ3E,IAAAx6B,EAAA;AACA,IAAAA,EAAA;AACA,IAAAy6B,GAAA,MAAAC;AAGE,SAAK,QAAQF,GACb,KAAK,SAASn3B,GACds3B,GAAA,MAAKD,IAAmBN,GAAgB,CAACI,CAAK,CAAC;AAAA,EACnD;AAAA,EACE,OAAO73C,GAAO;AACZ,QAAI,CAAC,MAAM,QAAQA,CAAK;AACtB,YAAM,IAAI+c,EAAUF,EAAU,cAAc,uBAAuB;AAErE,QAAI,KAAK,WAAW7c,EAAM;AACxB,YAAM,IAAI+c,EAAUF,EAAU,cAAc,+BAA+B;AAE7E,WAAO0d,GAAO,MAAM,KAAKv6B,CAAK,EAAE,IAAI,CAAC8b,MAAM,KAAK,MAAM,OAAOA,CAAC,CAAC,CAAC;AAAA,EACpE;AAAA,EACE,OAAOgd,GAAMp3B,GAAQ;AACnB,QAAI,CAACu2C,GAAA,MAAKF,OAAoBjf,EAAK,SAAS,KAAK,iBAAiBA,EAAK,SAASqe;AAC9E,YAAM,IAAIp6B,EAAUF,EAAU,cAAc,0BAA0B;AAExE,QAAIq7B,IAAYx2C;AAMhB,WAAO,CALc,MAAM,KAAK,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,MAAM;AACxD,UAAIy2C;AACJ,cAACA,GAASD,CAAS,IAAI,KAAK,MAAM,OAAOpf,GAAMof,CAAS,GACjDC;AAAA,IACb,CAAK,GACqBD,CAAS;AAAA,EACnC;AACA,GA5BEH,KAAA,eAJEz8B,GAAO0B,IAAM,YAAY,GAFZA,SAwCbo7B,MAAYp7B,KAAA,cAAcg4B,GAAM;AAAA,EAIlC,cAAc;AACZ,UAAM,QAAQ,QAAQ2B,KAAY,CAAC;AAAA,EACvC;AAAA,EACE,OAAO32C,GAAO;AACZ,QAAIq4C;AACJ,QAAI;AACF,MAAAA,IAAeze,EAAS55B,CAAK;AAAA,IAC9B,QAAe;AACd,YAAM,IAAI66B,EAAW/d,EAAW,cAAc,WAAW,KAAK,IAAI,GAAG;AAAA,IAC3E;AACI,QAAIu7B,EAAa,WAAW,KAAK;AAC/B,YAAM,IAAIxd,EAAW/d,EAAW,cAAc,WAAW,KAAK,IAAI,GAAG;AAEvE,WAAOu7B;AAAA,EACX;AAAA,EACE,OAAOvf,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS,KAAK;AACrB,YAAM,IAAI+B,EAAW/d,EAAW,cAAc,yBAAyB;AAEzE,QAAI1c,IAAQ04B,EAAK,MAAMp3B,GAAQA,IAAS,KAAK,aAAa;AAK1D,QAJgBqrB,EAAG3sB,CAAK,EACZ,aACVA,IAAQ,IAAI,WAAW,EAAE,IAEvBA,EAAM,WAAW,KAAK;AACxB,YAAM,IAAIy6B,EAAW/d,EAAW,cAAc,8BAA8B;AAE9E,WAAO,CAAC8Q,GAAMxtB,GAAO,EAAE,GAAGsB,IAAS,EAAE;AAAA,EACzC;AACA,GA/BI4Z,GAAO0B,IAAM,WAAW,GAFZA,SAuCZs7B,MAAYt7B,KAAA,cAAcg4B,GAAM;AAAA,EAIlC,cAAc;AACZ,UAAM,QAAQ,eAAe2B,KAAY,CAAC;AAAA,EAC9C;AAAA,EACE,OAAO32C,GAAO;AACZ,QAAIq4C;AACJ,QAAI;AACF,MAAAA,IAAexG,EAAU7xC,CAAK;AAAA,IAC/B,QAAe;AACd,YAAM,IAAI08B,EAAWC,EAAW,cAAc,WAAW,KAAK,IAAI,GAAG;AAAA,IAC3E;AACI,QAAI0b,EAAa,WAAW,KAAK;AAC/B,YAAM,IAAI3b,EAAWC,EAAW,cAAc,WAAW,KAAK,IAAI,GAAG;AAEvE,WAAO0b;AAAA,EACX;AAAA,EACE,OAAOvf,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS,KAAK;AACrB,YAAM,IAAI4D,EAAWC,EAAW,cAAc,yBAAyB;AAEzE,QAAIv8B,IAAQ04B,EAAK,MAAMp3B,GAAQA,IAAS,KAAK,aAAa;AAK1D,QAJgB62C,EAAIn4C,CAAK,EACb,aACVA,IAAQ,IAAI,WAAW,EAAE,IAEvBA,EAAM,WAAW,KAAK;AACxB,YAAM,IAAIs8B,EAAWC,EAAW,cAAc,8BAA8B;AAE9E,WAAO,CAAC6b,GAAOp4C,GAAO,KAAK,aAAa,GAAGsB,IAAS,KAAK,aAAa;AAAA,EAC1E;AACA,GA/BI4Z,GAAO0B,IAAM,WAAW,GAFZA,KAsCZy7B,KAAiB;AAAA,EACnB,KAAK9B;AAAA,EACL,MAAMA,KAAY;AACpB,OACI+B,MAAiB17B,KAAA,cAAcg4B,GAAM;AAAA,EAIvC,YAAY2D,GAAU;AACpB,UAAM,aAAaA,GAAUF,GAAeE,CAAQ,CAAC;AAAA,EACzD;AAAA,EACE,OAAO34C,GAAO;AACZ,QAAII;AACJ,QAAI,OAAOJ,KAAU,YAAYA,IAAQ,OAAO;AAC9C,YAAM,IAAIg9B;AAAAA,QACRC,EAAW;AAAA,QACX,WAAW,KAAK,IAAI;AAAA,MACrB;AAEH,QAAI;AACF,MAAA78B,IAAQytB,GAAQ7tB,GAAO,KAAK,aAAa;AAAA,IAC1C,QAAe;AACd,YAAM,IAAIg9B,EAAWC,EAAW,cAAc,WAAW,KAAK,IAAI,GAAG;AAAA,IAC3E;AACI,WAAO78B;AAAA,EACX;AAAA,EACE,OAAO04B,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS,KAAK;AACrB,YAAM,IAAIkE,EAAWC,EAAW,cAAc,WAAW,KAAK,IAAI,aAAa;AAEjF,QAAI78B,IAAQ04B,EAAK,MAAMp3B,GAAQA,IAAS,KAAK,aAAa;AAE1D,QADAtB,IAAQA,EAAM,MAAM,GAAG,KAAK,aAAa,GACrCA,EAAM,WAAW,KAAK;AACxB,YAAM,IAAI48B,EAAWC,EAAW,cAAc,WAAW,KAAK,IAAI,kBAAkB;AAEtF,WAAO,CAAC2b,EAAIx4C,CAAK,GAAGsB,IAAS,KAAK,aAAa;AAAA,EACnD;AACA,GA/BI4Z,GAAO0B,IAAM,gBAAgB,GAFZA,SAsCjB67B,MAAe77B,KAAA,cAAcg4B,GAAM;AAAA,EAKrC,YAAYjpB,IAAU;AAAA,IACpB,eAAe;AAAA,EACnB,GAAK;AACD,UAAMkpB,IAAgBlpB,EAAQ,gBAAgB4qB,KAAY;AAC1D,UAAM,WAAW,WAAW1B,CAAa;AAL3C,IAAA53B,EAAA;AAME,SAAK,UAAU0O;AAAA,EACnB;AAAA,EACE,OAAO/rB,GAAO;AAEZ,QAAI,EADeA,MAAU,MAAQA,MAAU;AAE7C,YAAM,IAAIs9B,EAAWC,EAAW,cAAc,wBAAwB;AAExE,WAAOub,GAAS94C,IAAQ,IAAI,GAAG,KAAK,aAAa;AAAA,EACrD;AAAA,EACE,OAAO84B,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS,KAAK;AACrB,YAAM,IAAIwE,EAAWC,EAAW,cAAc,4BAA4B;AAE5E,UAAMn9B,IAAQ24C,EAAIjgB,EAAK,MAAMp3B,GAAQA,IAAS,KAAK,aAAa,CAAC;AACjE,QAAItB,EAAM;AACR,aAAO,CAAC,IAAOsB,IAAS,KAAK,aAAa;AAE5C,QAAI,CAACtB,EAAM,GAAG24C,EAAI,CAAC,CAAC;AAClB,YAAM,IAAIzb,EAAWC,EAAW,cAAc,wBAAwB;AAExE,WAAO,CAAC,IAAM77B,IAAS,KAAK,aAAa;AAAA,EAC7C;AACA,GA9BI4Z,GAAO0B,IAAM,cAAc,GAFZA,SAqCfg8B,MAAYh8B,KAAA,cAAcg4B,GAAM;AAAA,EAKlC,cAAc;AACZ,UAAM,UAAU,gBAAgB2B,EAAS;AAAA,EAC7C;AAAA,EACE,OAAO32C,GAAO;AACZ,UAAMI,IAAQJ,aAAiB,aAAaA,IAAQ,IAAI,WAAWA,CAAK,GAClEi5C,IAAc,IAAIP,GAAe,KAAK,EAAE,OAAOt4C,EAAM,MAAM;AACjE,WAAO,IAAI,WAAW,CAAC,GAAG64C,GAAa,GAAG74C,CAAK,CAAC;AAAA,EACpD;AAAA,EACE,OAAO04B,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS6d;AAChB,YAAM,IAAIuC,EAAWC,EAAW,cAAc,yBAAyB;AAEzE,UAAMC,IAAkB13C,IAASi1C,IAC3BsC,IAAcngB,EAAK,MAAMp3B,GAAQ03C,CAAe,GAChD14B,IAAS24B,EAAI,IAAIX,GAAe,KAAK,EAAE,OAAOO,GAAa,CAAC,EAAE,CAAC,CAAC,EAAE,SAAU,GAC5EK,IAAYxgB,EAAK,MAAMsgB,GAAiBA,IAAkB14B,CAAM;AACtE,QAAI44B,EAAU,WAAW54B;AACvB,YAAM,IAAIw4B,EAAWC,EAAW,cAAc,+BAA+B;AAE/E,WAAO,CAACG,GAAWF,IAAkB14B,CAAM;AAAA,EAC/C;AACA,GAxBIpF,GAAO0B,IAAM,WAAW,GAE1BK,EAJcL,IAIP,cAAa,IAJNA,qCAgCZu8B,MAAYv8B,KAAA,cAAcg4B,GAAM;AAAA,EASlC,YAAYx3B,GAAMk6B,GAAQ;AACxB,UAAM8B,IAAiB,IAAId,GAAe,KAAK,GACzCe,IAAmB,OAAO,OAAO/B,CAAM,EAAE;AAAA,MAC7C,CAAClY,GAAKqY,MAAU,KAAK,IAAIrY,GAAKqY,EAAM,aAAa;AAAA,MACjD;AAAA,IACD;AACD,UAAM,QAAQr6B,CAAI,IAAI,QAAQA,CAAI,IAAIg8B,EAAe,gBAAgBC,CAAgB;AAfzE,IAAA3B,GAAA,MAAA4B;AAId,IAAAr8B,EAAA;AACA,IAAAA,EAAA;AACA,IAAAy6B,GAAA,MAAA6B;AACA,IAAA7B,GAAA,MAAA8B;AACA,IAAA9B,GAAA,MAAA+B;AAQE,SAAK,OAAOr8B,GACZ,KAAK,SAASk6B,GACdM,GAAA,MAAK2B,IAAkBH,IACvBxB,GAAA,MAAK4B,IAAoBH,IACzBzB,GAAA,MAAK6B,IAAwB,EAAE3D,GAAY,KAAK,KAAK,IAAI,KAAKuB,GAAgBC,CAAM;AAAA,EACxF;AAAA,EAYE,OAAO13C,GAAO;AACZ,QAAI,OAAOA,KAAU,YAAY,KAAK,OAAOA,CAAK;AAChD,aAAO85C,GAAA,MAAKJ,IAAAK,IAAL,WAAuB/5C;AAEhC,UAAM,CAACg6C,GAAS,GAAGC,CAAK,IAAI,OAAO,KAAKj6C,CAAK;AAC7C,QAAI,CAACg6C;AACH,YAAM,IAAIE,EAAWC,EAAW,sBAAsB,wCAAwC;AAEhG,QAAIF,EAAM,WAAW;AACnB,YAAM,IAAIC,EAAWC,EAAW,sBAAsB,kCAAkC;AAE1F,UAAMC,IAAa,KAAK,OAAOJ,CAAO,GAChCK,IAAY,OAAO,KAAK,KAAK,MAAM,EAAE,QAAQL,CAAO;AAC1D,QAAIK,MAAc,IAAI;AACpB,YAAMC,IAAa,OAAO,KAAK,KAAK,MAAM,EAAE,IAAI,CAACx+B,MAAM,IAAIA,CAAC,GAAG,EAAE,KAAK,IAAI;AAC1E,YAAM,IAAIo+B;AAAAA,QACRC,EAAW;AAAA,QACX,iBAAiBH,CAAO,mBAAmBM,CAAU;AAAA,MACtD;AAAA,IACP;AACI,UAAMjC,IAAe+B,EAAW,OAAOp6C,EAAMg6C,CAAO,CAAC;AACrD,WAAO,IAAI,WAAW,CAAC,GAAG/B,GAAA,MAAK0B,IAAgB,OAAOU,CAAS,GAAG,GAAGhC,CAAY,CAAC;AAAA,EACtF;AAAA,EAIE,OAAOvf,GAAMp3B,GAAQ;AACnB,QAAIu2C,GAAA,MAAK4B,OAAyB/gB,EAAK,SAAS,KAAK;AACnD,YAAM,IAAIohB,EAAWC,EAAW,cAAc,yBAAyB;AAEzE,UAAMI,IAAY,IAAI7B,GAAe,KAAK,EAAE,OAAO5f,GAAMp3B,CAAM,EAAE,CAAC,GAC5D24C,IAAY1sB,GAAS4sB,CAAS,GAC9BP,IAAU,OAAO,KAAK,KAAK,MAAM,EAAEK,CAAS;AAClD,QAAI,CAACL;AACH,YAAM,IAAIE;AAAAA,QACRC,EAAW;AAAA,QACX,sBAAsBE,CAAS,mBAAmB,OAAO,KAAK,KAAK,MAAM,CAAC;AAAA,MAC3E;AAEH,UAAMD,IAAa,KAAK,OAAOJ,CAAO,GAChCQ,IAAgB94C,IAASu2C,GAAA,MAAK0B,IAAgB;AACpD,QAAI1B,GAAA,MAAK4B,OAAyB/gB,EAAK,SAAS0hB,IAAgBJ,EAAW;AACzE,YAAM,IAAIF,EAAWC,EAAW,cAAc,yBAAyB;AAEzE,UAAM,CAAChC,GAASD,CAAS,IAAIkC,EAAW,OAAOthB,GAAM0hB,CAAa;AAClE,WAAIV,GAAA,MAAKJ,IAAAe,IAAL,WAAmB,KAAK,OAAOT,CAAO,KACjCF,GAAA,MAAKJ,IAAAgB,IAAL,WAAuBV,GAAS9B,KAElC,CAAC,EAAE,CAAC8B,CAAO,GAAG7B,EAAO,GAAID,CAAS;AAAA,EAC7C;AACA,GA7EEyB,KAAA,eACAC,KAAA,eACAC,KAAA,eARcH,KAAA;AAuBde,KAAa,SAAC5C,GAAO;AACnB,SAAO,KAAK,SAASjC,MAAqBiC,EAAM,SAAS5B;AAC7D,GACE8D,KAAiB,SAAC/5C,GAAO;AACvB,QAAMo6C,IAAa,KAAK,OAAOp6C,CAAK,GAC9Bq4C,IAAe+B,EAAW,OAAO,EAAE,GACnCC,IAAY,OAAO,KAAK,KAAK,MAAM,EAAE,QAAQr6C,CAAK,GAClDqgB,IAAU,IAAI,WAAW43B,GAAA,MAAK2B,MAAoBQ,EAAW,aAAa;AAChF,SAAOO,GAAQ,CAAC1C,GAAA,MAAK0B,IAAgB,OAAOU,CAAS,GAAGh6B,GAASg4B,CAAY,CAAC;AAClF,GAwBEqC,KAAiB,SAACV,GAAS9B,GAAW;AACpC,SAAO,CAAC8B,GAAS9B,CAAS;AAC9B,GAxDI58B,GAAO0B,IAAM,WAAW,GAFZA,KAwFZ49B,KAA4Bt/B,gBAAAA,GAAO,CAACq9B,MAAa;AACnD,UAAQA,GAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,YAAM,IAAIkC,EAAWC,EAAW,oBAAoB,wBAAwBnC,CAAQ,EAAE;AAAA,EAC5F;AACA,GAAG,WAAW,OACVoC,KAAc/9B,KAAA,cAAcg4B,GAAM;AAAA,EAMpC,YAAY2D,GAAU5sB,IAAU;AAAA,IAC9B,eAAe;AAAA,EACnB,GAAK;AACD,UAAMrL,IAASqL,EAAQ,gBAAgB4qB,KAAYiE,GAAUjC,CAAQ;AACrE,UAAM,UAAUA,GAAUj4B,CAAM;AANlC,IAAArD,EAAA;AACA,IAAAA,EAAA;AAME,SAAK,WAAWs7B,GAChB,KAAK,UAAU5sB;AAAA,EACnB;AAAA,EACE,OAAO/rB,GAAO;AACZ,QAAII;AACJ,QAAI;AACF,MAAAA,IAAQ46C,GAASh7C,CAAK;AAAA,IACvB,QAAe;AACd,YAAM,IAAI66C,EAAWC,EAAW,cAAc,WAAW,KAAK,QAAQ,GAAG;AAAA,IAC/E;AACI,QAAI16C,EAAM,SAAS,KAAK;AACtB,YAAM,IAAIy6C,EAAWC,EAAW,cAAc,WAAW,KAAK,QAAQ,mBAAmB;AAE3F,WAAOE,GAAS56C,GAAO,KAAK,aAAa;AAAA,EAC7C;AAAA,EACE,OAAO04B,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS,KAAK;AACrB,YAAM,IAAI+hB,EAAWC,EAAW,cAAc,2BAA2B;AAE3E,UAAM16C,IAAQ04B,EAAK,MAAMp3B,GAAQA,IAAS,KAAK,aAAa;AAC5D,QAAItB,EAAM,WAAW,KAAK;AACxB,YAAM,IAAIy6C,EAAWC,EAAW,cAAc,gCAAgC;AAEhF,WAAO,CAACG,GAAU76C,CAAK,GAAGsB,IAAS,KAAK,aAAa;AAAA,EACzD;AACA,GAlCI4Z,GAAO0B,IAAM,aAAa,GAFZA,SAuCdk+B,MAAcl+B,KAAA,cAAcu8B,GAAU;AAAA,EAIxC,OAAOv5C,GAAO;AAEZ,WADe,MAAM,OAAO,KAAK,aAAaA,CAAK,CAAC;AAAA,EAExD;AAAA,EACE,aAAakqB,GAAO;AAClB,WAAIA,MAAU,SACL,EAAE,MAAMA,EAAO,IAEjB,EAAE,MAAM,GAAI;AAAA,EACvB;AAAA,EACE,OAAO4O,GAAMp3B,GAAQ;AACnB,UAAM,CAACy2C,GAASD,CAAS,IAAI,MAAM,OAAOpf,GAAMp3B,CAAM;AACtD,WAAO,CAAC,KAAK,SAASy2C,CAAO,GAAGD,CAAS;AAAA,EAC7C;AAAA,EACE,SAAS/tB,GAAQ;AACf,QAAIA,KAAU,UAAUA;AACtB,aAAOA,EAAO;AAAA,EAGpB;AACA,GAtBI7O,GAAO0B,IAAM,aAAa,GAFZA,SA6Bdm+B,MAAgBn+B,KAAA,cAAcg4B,GAAM;AAAA,EAItC,cAAc;AACZ,UAAM,qBAAqB,qBAAqB2B,EAAS;AAAA,EAC7D;AAAA,EACE,OAAO32C,GAAO;AACZ,QAAI,CAAC,MAAM,QAAQA,CAAK;AACtB,YAAM,IAAIo7C,EAAWC,EAAW,cAAc,uBAAuB;AAGvE,UAAMj7C,IADgB,IAAIw3C,GAAW,IAAImD,EAAY,IAAI,GAAG/6C,EAAM,MAAM,EAC5C,OAAOA,CAAK,GAClCi5C,IAAc,IAAIP,GAAe,KAAK,EAAE,OAAOt4C,EAAM,MAAM;AACjE,WAAO,IAAI,WAAW,CAAC,GAAG64C,GAAa,GAAG74C,CAAK,CAAC;AAAA,EACpD;AAAA,EACE,OAAO04B,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS,KAAK;AACrB,YAAM,IAAIsiB,EAAWC,EAAW,cAAc,8BAA8B;AAE9E,UAAMjC,IAAkB13C,IAASi1C,IAC3BsC,IAAcngB,EAAK,MAAMp3B,GAAQ03C,CAAe,GAChD14B,IAAS46B,EAAI,IAAI5C,GAAe,KAAK,EAAE,OAAOO,GAAa,CAAC,EAAE,CAAC,CAAC,EAAE,SAAU,GAC5EK,IAAYxgB,EAAK,MAAMsgB,GAAiBA,IAAkB14B,CAAM;AACtE,QAAI44B,EAAU,WAAW54B;AACvB,YAAM,IAAI06B,EAAWC,EAAW,cAAc,mCAAmC;AAEnF,UAAME,IAAgB,IAAI3D,GAAW,IAAImD,EAAY,IAAI,GAAGr6B,CAAM,GAC5D,CAAC86B,CAAY,IAAID,EAAc,OAAOjC,GAAW,CAAC;AACxD,WAAO,CAACkC,GAAcpC,IAAkB14B,CAAM;AAAA,EAClD;AACA,GA7BIpF,GAAO0B,IAAM,eAAe,GAFZA,SAqChBy+B,MAAiBz+B,KAAA,cAAcg4B,GAAM;AAAA,EAKvC,cAAc;AACZ,UAAM,UAAU,iBAAiB2B,EAAS;AAAA,EAC9C;AAAA,EACE,OAAO32C,GAAO;AACZ,UAAMI,IAAQ88B,GAAYl9B,CAAK,GACzBi5C,IAAc,IAAIP,GAAe,KAAK,EAAE,OAAO14C,EAAM,MAAM;AACjE,WAAO,IAAI,WAAW,CAAC,GAAGi5C,GAAa,GAAG74C,CAAK,CAAC;AAAA,EACpD;AAAA,EACE,OAAO04B,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS,KAAK;AACrB,YAAM,IAAI4iB,EAAYC,EAAY,cAAc,+BAA+B;AAEjF,UAAMvC,IAAkB13C,IAASi1C,IAC3BsC,IAAcngB,EAAK,MAAMp3B,GAAQ03C,CAAe,GAChD14B,IAASk7B,EAAI,IAAIlD,GAAe,KAAK,EAAE,OAAOO,GAAa,CAAC,EAAE,CAAC,CAAC,EAAE,SAAU,GAC5EK,IAAYxgB,EAAK,MAAMsgB,GAAiBA,IAAkB14B,CAAM;AACtE,QAAI44B,EAAU,WAAW54B;AACvB,YAAM,IAAIg7B,EAAYC,EAAY,cAAc,oCAAoC;AAEtF,WAAO,CAACxd,GAAamb,CAAS,GAAGF,IAAkB14B,CAAM;AAAA,EAC7D;AACA,GAxBIpF,GAAO0B,IAAM,gBAAgB,GAE/BK,EAJmBL,IAIZ,cAAa,IAJDA,SAgCjB6+B,MAAgB7+B,KAAA,cAAcg4B,GAAM;AAAA,EAKtC,cAAc;AACZ,UAAM,YAAY,OAAO2B,EAAS;AAAA,EACtC;AAAA,EACE,OAAO32C,GAAO;AACZ,UAAMI,IAAQ07C,GAAa97C,CAAK,GAC1Bi5C,IAAc,IAAIP,GAAe,KAAK,EAAE,OAAO14C,EAAM,MAAM;AACjE,WAAO,IAAI,WAAW,CAAC,GAAGi5C,GAAa,GAAG74C,CAAK,CAAC;AAAA,EACpD;AAAA,EACE,OAAO04B,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS,KAAK;AACrB,YAAM,IAAIijB,EAAYC,EAAY,cAAc,iCAAiC;AAEnF,UAAM5C,IAAkB13C,IAASi1C,IAC3BsC,IAAcngB,EAAK,MAAMp3B,GAAQ03C,CAAe,GAChD14B,IAASu7B,EAAI,IAAIvD,GAAe,KAAK,EAAE,OAAOO,GAAa,CAAC,EAAE,CAAC,CAAC,EAAE,SAAU,GAC5E74C,IAAQ04B,EAAK,MAAMsgB,GAAiBA,IAAkB14B,CAAM;AAClE,QAAItgB,EAAM,WAAWsgB;AACnB,YAAM,IAAIq7B,EAAYC,EAAY,cAAc,sCAAsC;AAExF,WAAO,CAACE,GAAc97C,CAAK,GAAGg5C,IAAkB14B,CAAM;AAAA,EAC1D;AACA,GAxBIpF,GAAO0B,IAAM,eAAe,GAE9BK,EAJkBL,IAIX,cAAa,IAJFA,SA+BhBm/B,MAAcn/B,KAAA,cAAcg4B,GAAM;AAAA,EAIpC,YAAYt0B,GAAQ;AAClB,UAAM,UAAU,OAAOA,CAAM,KAAKA,CAAM;AAAA,EAC5C;AAAA,EACE,OAAO1gB,GAAO;AACZ,QAAIA,EAAM,WAAW,KAAK;AACxB,YAAM,IAAIo8C,EAAYC,EAAY,cAAc,sCAAsC;AAExF,WAAOC,GAAat8C,CAAK;AAAA,EAC7B;AAAA,EACE,OAAO84B,GAAMp3B,GAAQ;AACnB,QAAIo3B,EAAK,SAAS,KAAK;AACrB,YAAM,IAAIsjB,EAAYC,EAAY,cAAc,2BAA2B;AAE7E,UAAMj8C,IAAQ04B,EAAK,MAAMp3B,GAAQA,IAAS,KAAK,aAAa;AAC5D,QAAItB,EAAM,WAAW,KAAK;AACxB,YAAM,IAAIg8C,EAAYC,EAAY,cAAc,gCAAgC;AAElF,WAAO,CAACE,GAAcn8C,CAAK,GAAGsB,IAAS,KAAK,aAAa;AAAA,EAC7D;AACA,GArBI4Z,GAAO0B,IAAM,aAAa,GAFZA,aA4Bdw/B,MAAcx/B,KAAA,cAAcg4B,GAAM;AAAA,EAOpC,YAAYx3B,GAAMk6B,GAAQ;AACxB,UAAMzC,IAAgB,OAAO,OAAOyC,CAAM,EAAE;AAAA,MAC1C,CAAC/uB,GAAKkvB,MAAUlvB,IAAMkvB,EAAM;AAAA,MAC5B;AAAA,IACD;AACD,UAAM,UAAU,UAAUr6B,CAAI,IAAIy3B,CAAa;AARjD,IAAA53B,EAAA;AACA,IAAAA,EAAA;AACA,IAAAy6B,GAAA,MAAAC;AAOE,SAAK,OAAOv6B,GACZ,KAAK,SAASk6B,GACdM,GAAA,MAAKD,IAAmBN,GAAgBC,CAAM;AAAA,EAClD;AAAA,EACE,OAAO13C,GAAO;AACZ,WAAO85B;AAAAA,MACL,OAAO,KAAK,KAAK,MAAM,EAAE,IAAI,CAAC2iB,MAAc;AAC1C,cAAMC,IAAa,KAAK,OAAOD,CAAS,GAClCE,IAAa38C,EAAMy8C,CAAS;AAClC,YAAI,EAAEC,aAAsBxB,OAAgByB,KAAc;AACxD,gBAAM,IAAIC;AAAAA,YACRC,EAAY;AAAA,YACZ,WAAW,KAAK,IAAI,YAAYJ,CAAS;AAAA,UAC1C;AAEH,eAAOC,EAAW,OAAOC,CAAU;AAAA,MACpC,CAAA;AAAA,IACF;AAAA,EACL;AAAA,EACE,OAAO7jB,GAAMp3B,GAAQ;AACnB,QAAI,CAACu2C,GAAA,MAAKF,OAAoBjf,EAAK,SAAS,KAAK;AAC/C,YAAM,IAAI8jB,EAAYC,EAAY,cAAc,2BAA2B;AAE7E,QAAI3E,IAAYx2C;AAQhB,WAAO,CAPc,OAAO,KAAK,KAAK,MAAM,EAAE,OAAO,CAACkL,GAAK6vC,MAAc;AACvE,YAAMC,IAAa,KAAK,OAAOD,CAAS;AACxC,UAAItE;AACJ,cAACA,GAASD,CAAS,IAAIwE,EAAW,OAAO5jB,GAAMof,CAAS,GACxDtrC,EAAI6vC,CAAS,IAAItE,GACVvrC;AAAA,IACR,GAAE,EAAE,GACiBsrC,CAAS;AAAA,EACnC;AACA,GAxCEH,KAAA,eAJEz8B,GAAO0B,IAAM,aAAa,GAFZA,aAmDd8/B,MAAa9/B,KAAA,cAAcg4B,GAAM;AAAA,EAMnC,YAAY0C,GAAQ;AAClB,UAAMzC,IAAgByC,EAAO,OAAO,CAAC/uB,GAAKkvB,MAAUlvB,IAAMkvB,EAAM,eAAe,CAAC;AAChF,UAAM,SAAS,IAAIH,EAAO,IAAI,CAACG,MAAUA,EAAM,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK5C,CAAa;AAJnF,IAAA53B,EAAA;AACA,IAAAy6B,GAAA,MAAAC;AAIE,SAAK,SAASL,GACdM,GAAA,MAAKD,IAAmBN,GAAgBC,CAAM;AAAA,EAClD;AAAA,EACE,OAAO13C,GAAO;AACZ,QAAI,KAAK,OAAO,WAAWA,EAAM;AAC/B,YAAM,IAAI+8C,EAAYC,EAAY,cAAc,+BAA+B;AAEjF,WAAOC,GAAa,KAAK,OAAO,IAAI,CAACpF,GAAO/8B,MAAM+8B,EAAM,OAAO73C,EAAM8a,CAAC,CAAC,CAAC,CAAC;AAAA,EAC7E;AAAA,EACE,OAAOge,GAAMp3B,GAAQ;AACnB,QAAI,CAACu2C,GAAA,MAAKF,OAAoBjf,EAAK,SAAS,KAAK;AAC/C,YAAM,IAAIikB,EAAYC,EAAY,cAAc,0BAA0B;AAE5E,QAAI9E,IAAYx2C;AAMhB,WAAO,CALc,KAAK,OAAO,IAAI,CAACm2C,MAAU;AAC9C,UAAIM;AACJ,cAACA,GAASD,CAAS,IAAIL,EAAM,OAAO/e,GAAMof,CAAS,GAC5CC;AAAA,IACb,CAAK,GACqBD,CAAS;AAAA,EACnC;AACA,GAzBEH,KAAA,eAHEz8B,GAAO0B,IAAM,YAAY,GAFZA,aAoCbkgC,MAAWlgC,KAAA,cAAcg4B,GAAM;AAAA,EAMjC,YAAY6C,GAAO;AACjB,UAAM,UAAU,cAAclB,EAAS;AAHzC,IAAAt5B,EAAA;AACA,IAAAy6B,GAAA,MAAAC;AAGE,SAAK,QAAQF,GACbG,GAAA,MAAKD,IAAmBN,GAAgB,CAACI,CAAK,CAAC;AAAA,EACnD;AAAA,EACE,OAAO73C,GAAO;AACZ,QAAI,CAAC,MAAM,QAAQA,CAAK,KAAK,CAACw3C,GAAax3C,CAAK;AAC9C,YAAM,IAAIm9C;AAAAA,QACRC,EAAY;AAAA,QACZ;AAAA,MACD;AAEH,UAAMC,IAAc,IAAI3E,GAAe,KAAK;AAC5C,QAAIlB,GAAax3C,CAAK;AACpB,aAAO,IAAI,WAAW,CAAC,GAAGq9C,EAAY,OAAOr9C,EAAM,MAAM,GAAG,GAAGA,CAAK,CAAC;AAEvE,UAAMI,IAAQJ,EAAM,IAAI,CAAC8b,MAAM,KAAK,MAAM,OAAOA,CAAC,CAAC,GAC7Cm9B,IAAcoE,EAAY,OAAOr9C,EAAM,MAAM;AACnD,WAAO,IAAI,WAAW,CAAC,GAAGi5C,GAAa,GAAGqE,GAAal9C,CAAK,CAAC,CAAC;AAAA,EAClE;AAAA,EACE,OAAO04B,GAAMp3B,GAAQ;AACnB,QAAI,CAACu2C,GAAA,MAAKF,OAAoBjf,EAAK,SAAS,KAAK,iBAAiBA,EAAK,SAASqe;AAC9E,YAAM,IAAIgG,EAAYC,EAAY,cAAc,wBAAwB;AAE1E,UAAMhE,IAAkB13C,IAASi1C,IAC3BsC,IAAcngB,EAAK,MAAMp3B,GAAQ03C,CAAe,GAChD14B,IAAS68B,EAAI,IAAI7E,GAAe,KAAK,EAAE,OAAOO,GAAa,CAAC,EAAE,CAAC,CAAC,EAAE,SAAU,GAC5EuE,IAAa98B,IAAS,KAAK,MAAM,eACjC44B,IAAYxgB,EAAK,MAAMsgB,GAAiBA,IAAkBoE,CAAU;AAC1E,QAAI,CAACvF,GAAA,MAAKF,OAAoBuB,EAAU,WAAWkE;AACjD,YAAM,IAAIL,EAAYC,EAAY,cAAc,6BAA6B;AAE/E,QAAIlF,IAAYkB;AAChB,UAAM9f,IAAS,CAAE;AACjB,aAASxe,IAAI,GAAGA,IAAI4F,GAAQ5F,KAAK;AAC/B,YAAM,CAACq9B,GAASsF,CAAY,IAAI,KAAK,MAAM,OAAO3kB,GAAMof,CAAS;AACjE,MAAA5e,EAAO,KAAK6e,CAAO,GACnBD,IAAYuF;AAAA,IAClB;AACI,WAAO,CAACnkB,GAAQ4e,CAAS;AAAA,EAC7B;AACA,GA1CEH,KAAA,eAHEz8B,GAAO0B,IAAM,UAAU,GAFZA,KA0DX0gC,KAAqCpiC,gBAAAA,GAAO,CAACo1B,MAAa;AAC5D,UAAQA,GAAQ;AAAA,IACd,KAAK;AAAA,IACL,KAAKgG;AACH,aAAOA;AAAA,IACT;AACE,YAAM,IAAIiH;AAAAA,QACRC,EAAY;AAAA,QACZ,qBAAqBlN,CAAQ;AAAA,MAC9B;AAAA,EACP;AACA,GAAG,oBAAoB,GACnBmN,KAA+BviC,gBAAAA,GAAO,CAACwiC,GAAKC,MAAW;AACzD,QAAMpsB,IAAOmsB,EAAI,MAAM,KAAK,CAAC38B,MAAMA,EAAE,WAAW48B,CAAM;AACtD,MAAI,CAACpsB;AACH,UAAM,IAAIgsB;AAAAA,MACRC,EAAY;AAAA,MACZ,qBAAqBG,CAAM;AAAA,IAC5B;AAEH,SAAOpsB;AACT,GAAG,cAAc,GACbqsB,KAAoC1iC,gBAAAA,GAAO,CAACwiC,GAAKG,MAAWA,EAAO,OAAO,CAAC/zB,MAAU2zB,GAAaC,GAAK5zB,EAAM,IAAI,EAAE,SAAS+rB,EAAS,GAAG,mBAAmB,GAC3JiI,KAA2C5iC,gBAAAA,GAAO,CAAC6iC,MAAe;;AACpE,QAAMC,IAAkBD,EAAW,KAAK,CAACh8C,MAAMA,EAAE,SAAS,KAAK,GACzDk8C,KAAqBrhC,IAAAohC,KAAA,gBAAAA,EAAiB,0BAAjB,gBAAAphC,EAAyC;AACpE,MAAI,CAACohC,KAAmB,CAACC;AACvB,UAAM,IAAIV;AAAAA,MACRC,EAAY;AAAA,MACZ;AAAA,IACD;AAEH,SAAOS;AACT,GAAG,0BAA0B,OAGzBC,MAAkBthC,KAAA,MAAuB;AAAA,EAS3C,YAAY8gC,GAAKS,GAAU;AAL3B,IAAAlhC,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,MAAMygC,GACX,KAAK,OAAOS,EAAS;AACrB,UAAMC,IAAcX,GAAaC,GAAKS,EAAS,IAAI;AACnD,QAAIC,EAAY,KAAK,SAAS;AAC5B,YAAM,IAAIC;AAAAA,QACRC,EAAY;AAAA,QACZ,sCAAsCF,EAAY,IAAI;AAAA,MACvD;AAEH,SAAK,OAAOA,EAAY,MACxB,KAAK,wBAAwBD,EAAS,eACtC,KAAK,aAAavhC,GAAiB;AAAA,MACjC8gC;AAAA,MACAS;AAAA,MACAC,EAAY;AAAA,MACZA,EAAY,kBAAkBxhC,GAAiB,iCAAiC8gC,GAAKU,EAAY,UAAU;AAAA,IAC5G;AAAA,EACL;AAAA,EACE,OAAO,6BAA6BV,GAAKx+C,GAAK6+C,GAAYQ,GAAgB;AACxE,QAAIR,MAAe;AACjB,aAAO;AAET,QAAIQ,MAAmB,QAAQA,EAAe,WAAW;AACvD,aAAOR,EAAW,IAAI,CAACh8C,MAAM,IAAI6a,GAAiB8gC,GAAK37C,CAAC,CAAC;AAE3D,UAAMy8C,IAA2BD,EAAe;AAAA,MAC9C,CAAC/xC,GAAKiyC,GAAeC,MAAuB;;AAC1C,cAAM18B,IAAI,EAAE,GAAGxV,EAAK;AACpB,eAAAwV,EAAEy8B,CAAa,IAAI;AAAA,WACjB7hC,IAAA1d,EAAI,kBAAJ,gBAAA0d,EAAoB8hC;AAAA,QACrB,GACM18B;AAAA,MACR;AAAA,MACD,CAAA;AAAA,IACD;AAMD,WAL2B,KAAK;AAAA,MAC9B07B;AAAA,MACAK;AAAA,MACAS;AAAA,IACD,EACyB,IAAI,CAACz8C,MAAM,IAAI6a,GAAiB8gC,GAAK37C,CAAC,CAAC;AAAA,EACrE;AAAA,EACE,OAAO,uBAAuB27C,GAAK5gD,GAAM0hD,GAA0B;AACjE,WAAO1hD,EAAK,IAAI,CAACoC,MAAQ;AACvB,UAAIs/C,EAAyBt/C,EAAI,IAAI,MAAM;AACzC,eAAO;AAAA,UACL,GAAGs/C,EAAyBt/C,EAAI,IAAI;AAAA,UACpC,MAAMA,EAAI;AAAA,QACX;AAEH,UAAIA,EAAI;AACN,eAAO;AAAA,UACL,GAAG,gBAAgBA,CAAG;AAAA,UACtB,eAAe,KAAK;AAAA,YAClBw+C;AAAA,YACAx+C,EAAI;AAAA,YACJs/C;AAAA,UACZ;AAAA,QACS;AAEH,YAAMG,IAAUlB,GAAaC,GAAKx+C,EAAI,IAAI,GACpC0/C,IAAyB,KAAK,iCAAiClB,GAAKiB,EAAQ,UAAU;AAC5F,aAAIC,KAA0BA,EAAuB,SAAS,IACrD;AAAA,QACL,GAAG,gBAAgB1/C,CAAG;AAAA,QACtB,eAAe0/C,EAAuB,IAAI,CAACC,MAAQL,EAAyBK,CAAG,CAAC;AAAA,MACjF,IAEI3/C;AAAA,IACb,CAAK;AAAA,EACL;AAAA,EACE,OAAO,iCAAiCw+C,GAAK5gD,GAAMgiD,GAAgC;AACjF,QAAI,CAAC,MAAM,QAAQhiD,CAAI;AACrB,aAAO;AAET,UAAMiiD,IAA4BD,KAAkC,CAAE;AACtE,WAAAhiD,EAAK,QAAQ,CAAC+E,MAAM;AAClB,YAAM88C,IAAUlB,GAAaC,GAAK77C,EAAE,IAAI;AACxC,UAAIu0C,GAAa,KAAKuI,EAAQ,IAAI,GAAG;AACnC,QAAAI,EAA0B,KAAKJ,EAAQ,MAAM;AAC7C;AAAA,MACR;AACM,MAAK,MAAM,QAAQ98C,EAAE,aAAa,KAGlC,KAAK,iCAAiC67C,GAAK77C,EAAE,eAAek9C,CAAyB;AAAA,IAC3F,CAAK,GACMA,EAA0B,SAAS,IAAIA,IAA4B;AAAA,EAC9E;AAAA,EACE,eAAe;AACb,UAAMC,IAAS,KAAK,sBAAuB,GACrCC,IAAU,KAAK,uBAAwB;AAC7C,WAAO,GAAGD,CAAM,GAAGC,CAAO;AAAA,EAC9B;AAAA,EACE,wBAAwB;AAEtB,WADoBhJ,GAAY,KAAK,KAAK,IAAI,IAErC,MAEUD,GAAW,KAAK,KAAK,IAAI,IAEnC,MAESE,GAAU,KAAK,KAAK,IAAI,IAEjC,MAEF;AAAA,EACX;AAAA,EACE,yBAAyB;;AACvB,QAAI,KAAK,SAAS;AAChB,aAAO;AAET,QAAI,KAAK,SAAS;AAChB,aAAO;AAET,UAAMgJ,KAAWtiC,IAAAm5B,GAAY,KAAK,KAAK,IAAI,MAA1B,gBAAAn5B,EAA6B;AAC9C,QAAIsiC;AACF,aAAO,OAAOA,EAAS,MAAM;AAE/B,QAAI,KAAK,eAAe;AACtB,aAAO,KAAK;AAEd,UAAMC,KAAazwB,IAAAsnB,GAAW,KAAK,KAAK,IAAI,MAAzB,gBAAAtnB,EAA4B;AAC/C,QAAIywB;AACF,aAAO,IAAI,KAAK,WAAW,CAAC,EAAE,aAAY,CAAE,IAAIA,EAAW,MAAM;AAEnE,UAAMC,IAAyB,KAAK,0BAA0B,OAAO,IAAI,KAAK,sBAAsB,IAAI,CAACv9C,MAAM,IAAI+a,GAAiB,KAAK,KAAK/a,CAAC,EAAE,aAAY,CAAE,EAAE,KAAK,GAAG,CAAC,MAAM,IAC1Kw9C,IAAsB,IAAI,KAAK,WAAW,IAAI,CAACt9C,MAAMA,EAAE,aAAY,CAAE,EAAE,KAAK,GAAG,CAAC;AACtF,WAAO,GAAGq9C,CAAsB,GAAGC,CAAmB;AAAA,EAC1D;AACA,GA3IInkC,GAAO0B,IAAM,iBAAiB,GAFZA,SAsJlB0iC,MAAY1iC,KAAA,cAAcg4B,GAAM;AAAA,EAIlC,cAAc;AACZ,UAAM,QAAQiB,IAAW,CAAC;AAAA,EAC9B;AAAA,EACE,OAAOpZ,GAAQ;AACb,WAAO,IAAI,WAAW,EAAE;AAAA,EAC5B;AAAA,EACE,OAAO0T,GAAO7uC,GAAQ;AACpB,WAAO,CAAC,QAAQA,CAAM;AAAA,EAC1B;AACA,GAXI4Z,GAAO0B,IAAM,WAAW,GAFZA;AAgBhB,SAAS2iC,GAAUxB,GAAYpyB,GAAS;AACtC,QAAM,EAAE,UAAU6zB,EAAS,IAAK7zB;AAChC,SAAOoyB,EAAW,OAAO,CAACvxC,GAAKizC,MAAc;AAC3C,UAAMz9B,IAAIxV;AACV,WAAAwV,EAAEy9B,EAAU,IAAI,IAAID,EAAUC,GAAW9zB,CAAO,GACzC3J;AAAA,EACR,GAAE,EAAE;AACP;AACA9G,GAAOqkC,IAAW,WAAW;AAG7B,IAAIG,KAA2BxkC,gBAAAA,GAAO,CAACykC,GAAiBC,MAAa;;AACnE,UAAQD,EAAgB,MAAI;AAAA,IAC1B,KAAK7K;AAAA,IACL,KAAKC;AAAA,IACL,KAAKC;AACH,aAAO,IAAI2F,EAAYgF,EAAgB,IAAI;AAAA,IAC7C,KAAK1K;AAAA,IACL,KAAKE;AACH,aAAO,IAAImD,GAAe,KAAK;AAAA,IACjC,KAAKpD;AACH,aAAO,IAAIoD,GAAe,MAAM;AAAA,IAClC,KAAKlD;AACH,aAAO,IAAI2F,GAAe;AAAA,IAC5B,KAAK1F;AACH,aAAO,IAAIoD,GAAc;AAAA,IAC3B,KAAKnD;AACH,aAAO,IAAI0C,GAAW;AAAA,IACxB,KAAKzC;AACH,aAAO,IAAI2C,GAAW;AAAA,IACxB,KAAKxC;AACH,aAAO,IAAIkD,GAAW;AAAA,IACxB,KAAKjD;AACH,aAAO,IAAI0F,GAAgB;AAAA,IAC7B,KAAKzF;AACH,aAAO,IAAI6F,GAAe;AAAA,IAC5B,KAAK5F;AACH,aAAO,IAAIyJ,GAAW;AAAA,EAG5B;AACE,QAAMO,KAAcjjC,IAAAm5B,GAAY,KAAK4J,EAAgB,IAAI,MAArC,gBAAA/iC,EAAwC;AAC5D,MAAIijC,GAAa;AACf,UAAMv/B,IAAS,SAASu/B,EAAY,QAAQ,EAAE;AAC9C,WAAO,IAAI9D,GAAYz7B,CAAM;AAAA,EACjC;AACE,QAAMy9B,IAAa4B,EAAgB,YAC7BR,KAAazwB,IAAAsnB,GAAW,KAAK2J,EAAgB,IAAI,MAApC,gBAAAjxB,EAAuC;AAC1D,MAAIywB,GAAY;AACd,UAAM7+B,IAAS,SAAS6+B,EAAW,QAAQ,EAAE,GACvCjgD,IAAM6+C,EAAW,CAAC;AACxB,QAAI,CAAC7+C;AACH,YAAM,IAAI4gD;AAAAA,QACRC,EAAY;AAAA,QACZ;AAAA,MACD;AAEH,UAAMC,IAAoBN,GAASxgD,CAAG;AACtC,WAAO,IAAIs4C,GAAWwI,GAAmB1/B,CAAM;AAAA,EACnD;AACE,MAAIq/B,EAAgB,SAASlK,IAAgB;AAC3C,UAAMv2C,IAAM4+C,GAAyBC,CAAU,GACzCY,IAAU,IAAIT,GAAgByB,EAAgB,KAAKzgD,CAAG,GACtD+gD,IAAYP,GAASf,GAAS,EAAE,UAAUrI,GAAW,CAAE;AAC7D,WAAO,IAAIwG,GAASmD,CAAS;AAAA,EACjC;AACE,QAAMC,KAAYxrB,IAAAirB,EAAgB,KAAK,MAAMtJ,EAAkB,MAA7C,gBAAA3hB,EAAiD;AAEnE,MADoBuhB,GAAY,KAAK0J,EAAgB,IAAI,KACtCO,GAAW;AAC5B,UAAM5I,IAASiI,GAAUxB,GAAY,EAAE,UAAA2B,GAAQ,CAAE;AACjD,WAAO,IAAItD,GAAY8D,GAAW5I,CAAM;AAAA,EAC5C;AAEE,MADkBpB,GAAU,KAAKyJ,EAAgB,IAAI,KACpCO,GAAW;AAC1B,UAAM5I,IAASiI,GAAUxB,GAAY,EAAE,UAAA2B,GAAQ,CAAE;AAEjD,WADqBC,EAAgB,SAASnK,KAErC,IAAIsF,GAAYoF,GAAW5I,CAAM,IAEnC,IAAI6B,GAAU+G,GAAW5I,CAAM;AAAA,EAC1C;AAEE,OADmBziB,IAAAshB,GAAW,KAAKwJ,EAAgB,IAAI,MAApC,gBAAA9qB,EAAuC,QAC1C;AACd,UAAMyiB,IAASyG,EAAW,IAAI,CAAC0B,MAAcC,GAASD,GAAW,EAAE,UAAUnJ,GAAW,CAAE,CAAC;AAC3F,WAAO,IAAIoG,GAAWpF,CAAM;AAAA,EAChC;AACE,QAAM,IAAIwI;AAAAA,IACRC,EAAY;AAAA,IACZ,oBAAoB,KAAK,UAAUJ,CAAe,CAAC;AAAA,EACpD;AACH,GAAG,UAAU;AAGb,SAASQ,GAAoB7P,IAAWgG,IAAa;AACnD,UAAQhG,GAAQ;AAAA,IACd,KAAKgG;AACH,aAAOoJ;AAAA,IACT;AACE,YAAM,IAAIU;AAAAA,QACRC,EAAY;AAAA,QACZ,oBAAoB/P,CAAQ;AAAA,MAC7B;AAAA,EACP;AACA;AACAp1B,GAAOilC,IAAqB,qBAAqB;QAG7CG,MAAW1jC,KAAA,MAAM;AAAA,EAInB,OAAO,SAAS8gC,GAAKS,GAAUxyB,IAAU;AAAA,IACvC,eAAe;AAAA,EACnB,GAAK;AACD,UAAMg0B,IAAkB,IAAIzB,GAAgBR,GAAKS,CAAQ;AACzD,WAAOgC,GAAoBx0B,EAAQ,QAAQ,EAAEg0B,GAAiBh0B,CAAO;AAAA,EACzE;AAAA,EACE,OAAO,OAAO+xB,GAAKS,GAAUv+C,GAAO+rB,GAAS;AAC3C,WAAO,KAAK,SAAS+xB,GAAKS,GAAUxyB,CAAO,EAAE,OAAO/rB,CAAK;AAAA,EAC7D;AAAA,EACE,OAAO,OAAO89C,GAAKS,GAAUzlB,GAAMp3B,GAAQqqB,GAAS;AAClD,WAAO,KAAK,SAAS+xB,GAAKS,GAAUxyB,CAAO,EAAE,OAAO+M,GAAMp3B,CAAM;AAAA,EACpE;AACA,GAdI4Z,GAAO0B,IAAM,UAAU,GAFZA,KA0BX2jC,KAAoCrlC,gBAAAA,GAAO,CAAC60B,MAAW;AACzD,QAAM,EAAE,SAAAyQ,GAAS,QAAA3C,EAAM,IAAK9N;AAC5B,MAAI0Q,IAAc;AAClB,SAAO5C,EAAO,YAAY,CAACv9C,GAAQwpB,MAAU;AAC3C,UAAMyH,IAAOksB,GAAa+C,GAAS12B,EAAM,IAAI;AAC7C,WAAA22B,IAAcA,KAAelvB,EAAK,SAASskB,MAAa,CAACC,GAAY,KAAKvkB,EAAK,IAAI,GAC5E,CAAC,EAAE,GAAGzH,GAAO,YAAY,CAAC22B,EAAW,GAAI,GAAGngD,CAAM;AAAA,EAC1D,GAAE,EAAE;AACP,GAAG,mBAAmB,GAGlBogD,KAAyCxlC,gBAAAA,GAAO,CAACylC,GAAQ9C,MAAW;AACtE,MAAI8C,EAAO,UAAU9C,EAAO;AAC1B,WAAO8C;AAET,QAAMC,IAAeD,EAAO,MAAO;AACnC,SAAAC,EAAa,SAAS/C,EAAO,QAC7B+C,EAAa,KAAK,QAAQD,EAAO,MAAM,GAChCC;AACT,GAAG,wBAAwB,OAGvBC,MAAmBjkC,KAAA,MAAwB;AAAA,EAa7C,YAAY4jC,GAASroB,GAAI;AATzB,IAAAlb,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,SAASkb,GACd,KAAK,aAAaqoB,GAClB,KAAK,YAAYA,EAAQ,UAAU,KAAK,CAACjU,MAAMA,EAAE,SAASpU,EAAG,IAAI,GACjE,KAAK,OAAOA,EAAG,MACf,KAAK,YAAYvb,GAAkB,aAAa,KAAK,YAAY,KAAK,SAAS,GAC/E,KAAK,WAAWA,GAAkB,oBAAoB,KAAK,SAAS,GACpE,KAAK,gBAAgB,IAAIy+B,GAAgB,EAAC,OAAO,KAAK,IAAI,GAC1D,KAAK,WAAWiC,GAAmBkD,EAAQ,QAAQ,GACnD,KAAK,aAAa,KAAK,OAAO,cAAc,CAAE;AAAA,EAClD;AAAA,EACE,OAAO,aAAa9C,GAAKvlB,GAAI;AAC3B,UAAM2oB,IAAmB3oB,EAAG,OAAO;AAAA,MACjC,CAACrO,MAAU,IAAIo0B,GAAgBR,GAAK5zB,CAAK,EAAE,aAAY;AAAA,IACxD;AACD,WAAO,GAAGqO,EAAG,IAAI,IAAI2oB,EAAiB,KAAK,GAAG,CAAC;AAAA,EACnD;AAAA,EACE,OAAO,oBAAoBC,GAAmB;AAC5C,UAAMC,IAA0B7c,GAAOkM,GAAiB0Q,GAAmB,OAAO,CAAC;AACnF,WAAOE,EAAKD,EAAwB,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC;AAAA,EAC7D;AAAA,EACE,gBAAgBL,GAAQ;AAEtB,UAAMO,IADSX,GAAkB,EAAE,SAAS,KAAK,YAAY,QAAQ,KAAK,UAAU,QAAQ,EACxD,OAAO,CAAC7lC,MAAM,CAACA,EAAE,UAAU,EAAE;AACjE,QAAIimC,EAAO,SAASO;AAClB,YAAM,IAAIC;AAAAA,QACRC,EAAY;AAAA,QACZ,sDAAsDF,CAAoB,wBAAwBP,EAAO,MAAM;AAAA,MAChH;AAEH,UAAMrJ,IAAS,KAAK,UAAU,OAAO;AAAA,MACnC,CAACv2B,MAAMu/B,GAAS,SAAS,KAAK,YAAYv/B,GAAG;AAAA,QAC3C,UAAU,KAAK;AAAA,MAChB,CAAA;AAAA,IACF,GACKsgC,IAAiBX,GAAuBC,GAAQ,KAAK,OAAO,MAAM;AACxE,WAAO,IAAIjE,GAAWpF,CAAM,EAAE,OAAO+J,CAAc;AAAA,EACvD;AAAA,EACE,gBAAgB3oB,GAAM;AACpB,UAAM14B,IAAQshD,EAAU5oB,CAAI,GACtB6oB,IAAgB3D,GAAkB,KAAK,YAAY,KAAK,UAAU,MAAM;AAC9E,QAAI2D,EAAc,WAAW,GAAG;AAC9B,UAAIvhD,EAAM,WAAW;AACnB;AAEF,YAAM,IAAImhD;AAAAA,QACRC,EAAY;AAAA,QACZ,+CAA+C,KAAK,UAAU;AAAA,UAC5D,OAAO;AAAA,YACL,OAAO,KAAK,OAAO,OAAO;AAAA,YAC1B,eAAeG,EAAc;AAAA,YAC7B,QAAQvhD,EAAM;AAAA,UACf;AAAA,UACD,OAAO;AAAA,YACL,MAAM,KAAK,OAAO;AAAA,YAClB,eAAAuhD;AAAA,YACA,QAAQvhD;AAAA,UACpB;AAAA,QACA,CAAS,CAAC;AAAA,MACH;AAAA,IACP;AAYI,WAXe,KAAK,UAAU,OAAO;AAAA,MACnC,CAACwM,GAAKsd,MAAU;AACd,cAAM2tB,IAAQ6I,GAAS,SAAS,KAAK,YAAYx2B,GAAO,EAAE,UAAU,KAAK,UAAU,GAC7E,CAACsxB,GAAcoG,CAAa,IAAI/J,EAAM,OAAOz3C,GAAOwM,EAAI,MAAM;AACpE,eAAO;AAAA,UACL,SAAS,CAAC,GAAGA,EAAI,SAAS4uC,CAAY;AAAA,UACtC,QAAQoG;AAAA,QACT;AAAA,MACF;AAAA,MACD,EAAE,SAAS,IAAI,QAAQ,EAAC;AAAA,IACzB,EACa;AAAA,EAClB;AAAA,EACE,aAAa9oB,GAAM;AACjB,UAAM14B,IAAQshD,EAAU5oB,CAAI;AAI5B,WAHc4nB,GAAS,SAAS,KAAK,YAAY,KAAK,UAAU,QAAQ;AAAA,MACtE,UAAU,KAAK;AAAA,IACrB,CAAK,EACY,OAAOtgD,GAAO,CAAC;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,aAAa;;AACX,UAAMyhD,IAAmB,KAAK,WAAW,KAAK,CAACC,MAASA,EAAK,SAAS,SAAS;AAC/E,WAAO,GAAC9kC,IAAA6kC,KAAA,gBAAAA,EAAkB,cAAlB,QAAA7kC,EAA6B,SAAS;AAAA,EAClD;AACA,GArGI1B,GAAO0B,IAAM,kBAAkB,GAFZA,KA0GnB+kC,KAAuCzmC,gBAAAA,GAAO,CAAC0mC,GAAOC,MAAOD,EAAM,KAAK,CAACn5B,MAAMA,EAAE,mBAAmBo5B,CAAE,GAAG,sBAAsB,GAC/HC,KAAuC5mC,gBAAAA,GAAO,CAACwiC,GAAKmE,MAAOnE,EAAI,cAAc,KAAK,CAACj1B,MAAMA,EAAE,mBAAmBo5B,CAAE,GAAG,sBAAsB;AAC7I,SAASE,GAA8BrE,GAAKkE,GAAOC,GAAI;AACrD,QAAMG,IAAeF,GAAqBpE,GAAKmE,CAAE;AACjD,MAAIG,EAAa,mBAAmB;AAClC,WAAOA,EAAa;AAEtB,QAAMzwB,IAAOowB,GAAqBC,GAAOC,CAAE;AAC3C,SAAItwB,IACKA,EAAK,UAEdqwB,EAAM,KAAK;AAAA,IACT,QAAQA,EAAM;AAAA,IACd,MAAMI,EAAa;AAAA,IACnB,YAAYC,GAAgBD,EAAa,UAAU;AAAA,IACnD,gBAAgBH;AAAA,IAChB,gBAAgBG,EAAa,kBAAkB;AAAA,IAC/C,wBAAwBA,KAAA,gBAAAA,EAAc;AAAA,EAC1C,CAAG,GACMJ,EAAM,SAAS;AACxB;AACA1mC,GAAO6mC,IAA+B,+BAA+B;AACrE,SAASG,GAA2BxE,GAAKkE,GAAOI,GAAc;;AAC5D,WAAOplC,IAAAolC,EAAa,kBAAb,gBAAAplC,EAA4B,IAAI,CAACulC,MAAY;AAClD,UAAM1gC,IAAOqgC,GAAqBpE,GAAKyE,CAAO;AAE9C,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAHY,MAAMA,CAAO,IAAcJ,GAA8BrE,GAAKkE,GAAOO,CAAO,IAA3DA;AAAA;AAAA,MAK7B,eAAeD,GAA2BxE,GAAKkE,GAAOngC,CAAI;AAAA,IAC3D;AAAA,EACF,OAAK;AACR;AACAvG,GAAOgnC,IAA4B,4BAA4B;AAC/D,SAASE,GAAkB1E,GAAKkE,GAAOS,GAAgBjlC,GAAM;AAC3D,QAAMmU,IAAOwwB,GAA8BrE,GAAKkE,GAAOS,CAAc,GAC/DC,IAAWR,GAAqBpE,GAAK2E,CAAc;AACzD,SAAO;AAAA,IACL,MAAMjlC,KAAQ;AAAA,IACd,MAAAmU;AAAA;AAAA,IAEA,eAAe2wB,GAA2BxE,GAAKkE,GAAOU,CAAQ;AAAA,EAC/D;AACH;AACApnC,GAAOknC,IAAmB,mBAAmB;AAC7C,SAASH,GAAgBvE,GAAKkE,GAAO7D,GAAY;AAC/C,UAAOA,KAAA,gBAAAA,EAAY,IAAI,CAAC0B,MAAc;AACpC,UAAM,EAAE,QAAA9B,GAAQ,MAAAvgC,GAAM,eAAAmlC,EAAe,IAAG9C,GAClCluB,IAAQ,MAAMosB,CAAM,IAAaoE,GAA8BrE,GAAKkE,GAAOjE,CAAM,IAAzDA;AAC9B,WAAO;AAAA,MACL,MAAAvgC;AAAA,MACA,MAAAmU;AAAA;AAAA,MAEA,eAAe0wB,GAAgBvE,GAAKkE,GAAOW,CAAa;AAAA,IACzD;AAAA,EACF,OAAK;AACR;AACArnC,GAAO+mC,IAAiB,iBAAiB;AACzC,SAASO,GAAa9E,GAAK;AACzB,MAAI,CAACA,EAAI;AACP,WAAOA;AAET,QAAMkE,IAAQ,CAAE;AAChB,EAAAlE,EAAI,cAAc,QAAQ,CAAC11B,MAAM;AAC/B,UAAMjH,IAAI;AAAA,MACR,QAAQiH,EAAE;AAAA,MACV,MAAMA,EAAE;AAAA,MACR,YAAYA,EAAE,eAAeA,EAAE,SAAS,OAAO,CAAE,IAAG;AAAA,MACpD,gBAAgBA,EAAE,kBAAkB;AAAA,IACrC;AACD,IAAA45B,EAAM,KAAK7gC,CAAC;AAAA,EAChB,CAAG,GACD6gC,EAAM,QAAQ,CAAC7gC,MAAM;AACnB,IAAAA,EAAE,aAAakhC,GAAgBvE,GAAKkE,GAAO7gC,EAAE,UAAU;AAAA,EAC3D,CAAG;AACD,QAAM0hC,IAAY/E,EAAI,UAAU,IAAI,CAACvlB,MAAO;AAC1C,UAAM0lB,IAAS1lB,EAAG,OAAO;AAAA,MACvB,CAAC,EAAE,gBAAAkqB,GAAgB,MAAAjlC,EAAM,MAAKglC,GAAkB1E,GAAKkE,GAAOS,GAAgBjlC,CAAI;AAAA,IACjF,GACK2M,IAASq4B,GAAkB1E,GAAKkE,GAAOzpB,EAAG,QAAQ,EAAE;AAC1D,WAAO,EAAE,GAAGA,GAAI,QAAA0lB,GAAQ,QAAA9zB,EAAQ;AAAA,EACpC,CAAG,GACK24B,IAAgBhF,EAAI,cAAc,IAAI,CAACiF,OAAU;AAAA,IACrD,MAAMA,EAAK;AAAA,IACX,kBAAkBP,GAAkB1E,GAAKkE,GAAOe,EAAK,cAAc;AAAA,IACnE,QAAQA,EAAK;AAAA,EACjB,EAAI,GACIC,IAAclF,EAAI,YAAY,IAAI,CAAC97C,OAAS;AAAA,IAChD,OAAOA,EAAI;AAAA,IACX,YAAYwgD,GAAkB1E,GAAKkE,GAAOhgD,EAAI,cAAc;AAAA,EAChE,EAAI;AAUF,SATmB;AAAA,IACjB,UAAU87C,EAAI;AAAA,IACd,OAAAkE;AAAA,IACA,WAAAa;AAAA,IACA,aAAAG;AAAA,IACA,eAAelF,EAAI;AAAA,IACnB,eAAAgF;AAAA,IACA,YAAYhF,EAAI;AAAA,EACjB;AAEH;AACAxiC,GAAOsnC,IAAc,cAAc;QAG/BK,MAAYjmC,KAAA,MAAM;AAAA,EASpB,YAAY4jC,GAAS;AALrB,IAAAvjC,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAEE,SAAK,UAAUujC,GACf,KAAK,WAAWlD,GAAmBkD,EAAQ,eAAe,GAC1D,KAAK,aAAagC,GAAahC,CAAO,GACtC,KAAK,YAAY,OAAO;AAAA,MACtB,KAAK,QAAQ,UAAU,IAAI,CAACroB,MAAO,CAACA,EAAG,MAAM,IAAI0oB,GAAiB,KAAK,YAAY1oB,CAAE,CAAC,CAAC;AAAA,IACxF,GACD,KAAK,gBAAgB,OAAO,YAAY,KAAK,QAAQ,cAAc,IAAI,CAAC1P,MAAM,CAACA,EAAE,MAAMA,CAAC,CAAC,CAAC;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,YAAYq6B,GAA2B;AACrC,UAAM3qB,IAAK,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,MACvC,CAACoU,MAAMA,EAAE,SAASuW,KAA6BvW,EAAE,cAAcuW,KAA6BvW,EAAE,aAAauW;AAAA,IAC5G;AACD,QAAI3qB,MAAO;AACT,aAAOA;AAET,UAAM,IAAI4qB;AAAAA,MACRC,EAAY;AAAA,MACZ,YAAYF,CAAyB,eAAe,KAAK,UAAU3qB,CAAE,CAAC;AAAA,IACvE;AAAA,EACL;AAAA;AAAA,EAEE,qBAAqB8qB,GAAkBvqB,GAAM;AAE3C,YADiB,OAAOuqB,KAAqB,WAAW,KAAK,YAAYA,CAAgB,IAAIA,GAC7E,aAAavqB,CAAI;AAAA,EACrC;AAAA,EACE,UAAUA,GAAMwqB,GAAO;AACrB,UAAMC,IAAa,KAAK,WAAW,YAAY,KAAK,CAAC5xB,MAASA,EAAK,UAAU2xB,CAAK;AAClF,QAAI,CAACC;AACH,YAAM,IAAIJ;AAAAA,QACRC,EAAY;AAAA,QACZ,wBAAwBE,CAAK;AAAA,MAC9B;AAEH,WAAO5C,GAAS,OAAO,KAAK,YAAY6C,EAAW,YAAYC,EAAU1qB,CAAI,GAAG,GAAG;AAAA,MACjF,UAAU,KAAK;AAAA,IACrB,CAAK;AAAA,EACL;AAAA,EACE,mBAAmBtb,GAAMxd,GAAO;AAC9B,UAAMyjD,IAAe,KAAK,WAAW,cAAc,KAAK,CAACthD,MAAMA,EAAE,SAASqb,CAAI;AAC9E,QAAI,CAACimC;AACH,YAAM,IAAIN;AAAAA,QACRC,EAAY;AAAA,QACZ,4BAA4B5lC,CAAI;AAAA,MACjC;AAEH,WAAOkjC,GAAS,OAAO,KAAK,YAAY+C,EAAa,kBAAkBzjD,GAAO;AAAA,MAC5E,UAAU,KAAK;AAAA,IACrB,CAAK;AAAA,EACL;AAAA,EACE,WAAWyiD,GAAgBziD,GAAO;AAChC,UAAM0jD,IAAUlB;AAAA,MACd,KAAK;AAAA,MACL,KAAK,WAAW;AAAA,MAChBC;AAAA,MACA;AAAA,IACD;AACD,WAAO/B,GAAS,OAAO,KAAK,YAAYgD,GAAS1jD,GAAO;AAAA,MACtD,UAAU,KAAK;AAAA,IACrB,CAAK;AAAA,EACL;AAAA,EACE,WAAWyiD,GAAgB3pB,GAAM;AAC/B,UAAM4qB,IAAUlB;AAAA,MACd,KAAK;AAAA,MACL,KAAK,WAAW;AAAA,MAChBC;AAAA,MACA;AAAA,IACD;AACD,WAAO/B,GAAS,OAAO,KAAK,YAAYgD,GAAS5qB,GAAM,GAAG,EAAE,UAAU,KAAK,SAAQ,CAAE;AAAA,EACzF;AACA,GAjFIxd,GAAO0B,IAAM,WAAW,GAFZA,KAsFZ2mC,KAAmCroC,gBAAAA,GAAO,CAACsoC,GAAY9F,MAAQ;AACjE,QAAM,CAAC78C,GAAQ4iD,CAAY,IAAI,IAAInL,GAAe,KAAK,EAAE,OAAOkL,GAAY,CAAC,GACvE,CAACE,GAASC,CAAa,IAAI,IAAI3L,GAAS,EAAG,OAAOwL,GAAYC,CAAY,GAC1E,CAACG,GAAYC,CAAgB,IAAI,IAAI7L,GAAS,EAAG,OAAOwL,GAAYG,CAAa,GACjF,CAACG,GAAkBC,CAAsB,IAAI,IAAI1I,GAAgB,EAAC;AAAA,IACtEmI;AAAA,IACAK,IAAmBtN,KAAYA;AAAA,EAChC,GACKyN,IAAoBR,EAAW,MAAMO,CAAsB,GAC3DE,IAAevG,IAAM,IAAImF,GAAUnF,CAAG,EAAE,YAAYoG,CAAgB,EAAE,gBAAgBE,CAAiB,IAAI;AACjH,SAAO;AAAA,IACL,QAAAnjD;AAAA,IACA,SAAA6iD;AAAA,IACA,YAAAE;AAAA,IACA,kBAAAE;AAAA,IACA,cAAAG;AAAA,EACD;AACH,GAAG,kBAAkB,GCh7CjBhpC,KAAY,OAAO,gBACnBC,KAAS,CAACC,GAAQvb,MAAUqb,GAAUE,GAAQ,QAAQ,EAAE,OAAAvb,GAAO,cAAc,IAAM;AAYvF,SAASskD,GAAOC,GAAS;AACvB,SAAOA,EAAQ,WAAW,MAAM,qBAAqB,KAAKA,CAAO;AACnE;AACAjpC,GAAOgpC,IAAQ,QAAQ;AACvB,SAASE,GAAYD,GAAS;AAC5B,SAAOA,EAAQ,WAAW,OAAO,sBAAsB,KAAKA,CAAO;AACrE;AACAjpC,GAAOkpC,IAAa,aAAa;AACjC,SAASC,GAAaF,GAAS;AAC7B,SAAOA,EAAQ,WAAW,MAAM,qBAAqB,KAAKA,CAAO;AACnE;AACAjpC,GAAOmpC,IAAc,cAAc;AACnC,SAASC,GAAcH,GAAS;AAC9B,SAAOA,EAAQ,YAAa;AAC9B;AACAjpC,GAAOopC,IAAe,eAAe;AACrC,SAASC,GAAUJ,GAAS;AAC1B,SAAO,iBAAiBA;AAC1B;AACAjpC,GAAOqpC,IAAW,WAAW;AAC1B,IAACC,KAA6BtpC,gBAAAA,GAAO,CAACupC,MAAgB;AACvD,MAAIF,GAAUE,CAAW;AACvB,WAAOA;AAET,MAAI,aAAaA,KAAeF,GAAUE,EAAY,OAAO;AAC3D,WAAOA,EAAY;AAErB,MAAI,QAAQA,KAAeF,GAAUE,EAAY,EAAE;AACjD,WAAOA,EAAY;AAErB,QAAM,IAAI9nC,EAAUA,EAAU,MAAM,iBAAiB,iBAAiB;AACxE,GAAG,YAAY,GACX+nC,KAAgCxpC,gBAAAA,GAAO,MAAMmf,EAAQkG,GAAY,EAAE,CAAC,GAAG,eAAe,GACtFokB,KAAmCzpC,gBAAAA,GAAO,CAAC0pC,MAAS;AACtD,MAAI;AACF,QAAI,CAACV,GAAOU,CAAI;AACd,YAAM,IAAIjoC,EAAUA,EAAU,MAAM,sBAAsB,yBAAyBioC,CAAI,GAAG;AAE5F,UAAMC,IAAWrrB,EAASorB,CAAI,EAAE,MAAM,EAAE,GAClCE,IAAc,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC;AAC7C,WAAOzqB,EAAQF,GAAO,CAAC2qB,GAAaD,CAAQ,CAAC,CAAC;AAAA,EAC/C,QAAe;AACd,UAAM,IAAIloC;AAAA,MACRA,EAAU,MAAM;AAAA,MAChB,0CAA0CioC,CAAI;AAAA,IAC/C;AAAA,EACL;AACA,GAAG,kBAAkB,GACjBG,KAA8C7pC,gBAAAA,GAAO,CAACipC,MAAY;AACpE,MAAI,CAACE,GAAaF,CAAO;AACvB,UAAM,IAAIxnC,EAAUA,EAAU,MAAM,qBAAqB,6BAA6B;AAExF,SAAOwnC,EAAQ,QAAQ,MAAM,4BAA4B;AAC3D,GAAG,6BAA6B,GAC5Ba,KAAuC9pC,gBAAAA,GAAO,CAACipC,MAAYY,GAA4BZ,CAAO,GAAG,sBAAsB,GACvHc,KAAsC/pC,gBAAAA,GAAO,CAACgqC,MAAc;AAC9D,MAAI,CAACd,GAAYc,CAAS;AACxB,UAAM,IAAIvoC,EAAUA,EAAU,MAAM,oBAAoB,uBAAuBuoC,CAAS,GAAG;AAE7F,SAAO7qB,EAAQ8J,GAAO3K,EAAS0rB,CAAS,CAAC,CAAC;AAC5C,GAAG,qBAAqB,GACpBC,KAAyCjqC,gBAAAA,GAAO,CAACipC,MAAY;AAC/D,MAAI,OAAOA,KAAY,YAAY,YAAYA;AAC7C,WAAOA,EAAQ,OAAQ;AAEzB,MAAID,GAAOC,CAAO;AAChB,WAAOA;AAET,MAAIC,GAAYD,CAAO;AACrB,WAAOc,GAAoBd,CAAO;AAEpC,MAAIE,GAAaF,CAAO;AACtB,WAAOa,GAAqBb,CAAO;AAErC,QAAM,IAAIxnC;AAAA,IACRA,EAAU,MAAM;AAAA,IAChB;AAAA,EACD;AACH,GAAG,wBAAwB,OAGvByoC,MAAUxoC,KAAA,MAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAU3B,YAAYunC,GAAS;AALrB;AAAA,IAAAlnC,EAAA;AAME,UAAMooC,IAAcF,GAAuBhB,CAAO;AAClD,SAAK,cAAcG,GAAce,CAAW;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,aAAa;AACX,WAAOzoC,GAAS,WAAW,KAAK,WAAW;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAIE,YAAY;AACV,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,SAAS;AACP,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,UAAU;AACR,WAAO60B,EAAU,KAAK,WAAW;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,cAAc;AACZ,WAAO,KAAK,OAAQ;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,WAAW;AACT,WAAO,KAAK,WAAY;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,SAAS;AACP,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,eAAe;AACb,WAAO;AAAA,MACL,MAAMkT,GAAiB,KAAK,WAAW;AAAA,IACxC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,YAAY;AACV,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,IACZ;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,UAAU;AACR,WAAO,KAAK,WAAY;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,OAAOW,GAAO;AACZ,WAAO,KAAK,iBAAiBA,EAAM,WAAY;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,OAAO,cAAcJ,GAAW;AAC9B,UAAMG,IAAcJ,GAAoBC,CAAS;AACjD,WAAO,IAAItoC,GAASyoC,CAAW;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,OAAO,SAASA,GAAa;AAC3B,QAAI,CAACnB,GAAOmB,CAAW;AACrB,YAAM,IAAI5qB;AAAAA,QACRA,EAAW,MAAM;AAAA,QACjB,yBAAyB4qB,CAAW;AAAA,MACrC;AAEH,WAAO,IAAIzoC,GAASyoC,CAAW;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,OAAO,aAAa;AAClB,WAAO,IAAIzoC,GAAS8nC,IAAe;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,OAAO,WAAWP,GAAS;AACzB,WAAO,IAAIvnC,GAASunC,CAAO;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,OAAO,oBAAoBA,GAAS;AAClC,WAAO,IAAIvnC,GAASunC,CAAO;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUE,OAAO,iBAAiBA,GAAS;AAC/B,WAAO,IAAIvnC,GAASunC,CAAO;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,OAAO,eAAeoB,GAAY;AAChC,QAAI,CAAClB,GAAakB,CAAU;AAC1B,YAAM,IAAI9qB;AAAAA,QACRA,EAAW,MAAM;AAAA,QACjB,wBAAwB8qB,CAAU;AAAA,MACnC;AAEH,WAAO,IAAI3oC,GAAS2oC,CAAU;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,OAAO,gBAAgBpB,GAAS;AAC9B,QAAIqB,IAAgBrB;AAIpB,WAHKA,EAAQ,WAAW,IAAI,MAC1BqB,IAAgB,KAAKrB,CAAO,KAE1BqB,EAAc,OAAO,WAAW,KAC3B,KAEF5oC,GAAS,WAAWs2B,EAASsS,CAAa,CAAC,MAAMA;AAAA,EAC5D;AAAA;AAAA,EAEE,OAAO,WAAWrB,GAAS;AACzB,QAAI,CAACD,GAAOC,CAAO;AACjB,YAAM,IAAI1pB;AAAAA,QACRA,EAAW,MAAM;AAAA,QACjB,yBAAyB0pB,CAAO;AAAA,MACjC;AAEH,UAAMsB,IAAavS,EAASiR,CAAO,EAAE,YAAa,EAAC,MAAM,CAAC,GACpDuB,IAAW3S,GAAQ0S,CAAU;AACnC,QAAI1oD,IAAM;AACV,aAAS,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AAC3B,YAAM4oD,IAAOD,EAAS,CAAC,GACjBE,IAAKH,EAAW,OAAO,IAAI,CAAC,GAC5BI,IAAKJ,EAAW,OAAO,IAAI,IAAI,CAAC;AACtC,MAAA1oD,MAAQ4oD,IAAO,QAAQ,MAAMC,EAAG,YAAW,IAAKA,GAChD7oD,MAAQ4oD,IAAO,OAAO,IAAIE,EAAG,YAAW,IAAKA;AAAA,IACnD;AACI,WAAO9oD;AAAA,EACX;AACA,GA7NIme,GAAO0B,IAAM,SAAS,GAFZA,KC9FV3B,KAAY,OAAO,gBACnBC,KAAS,CAACC,GAAQvb,MAAUqb,GAAUE,GAAQ,QAAQ,EAAE,OAAAvb,GAAO,cAAc,IAAM,WAWnFkmD,MAAiBlpC,KAAA,cAAcg4B,GAAM;AAAA,EAMvC,YAAYt0B,GAAQ;AAClB,UAAMylC,KAAiB,IAAIzlC,IAAS,KAAK,GACnCu0B,IAAgBv0B,IAASylC;AAC/B;AAAA,MACE;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,SAASlR,IAAgB,CAAC;AAAA,MAC1BA;AAAA,IACD;AAbH,IAAA53B,EAAA;AACA,IAAAy6B,GAAA,MAAAsO;AAaE,SAAK,SAAS1lC,GACds3B,GAAA,MAAKoO,IAAiBD;AAAA,EAC1B;AAAA,EACE,OAAOnmD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE,GACVvtB,IAAOc,EAAS55B,CAAK;AAC3B,WAAAqmD,EAAM,KAAKvtB,CAAI,GACXmf,GAAA,MAAKmO,OACPC,EAAM,KAAK,IAAI,WAAWpO,GAAA,MAAKmO,GAAc,CAAC,GAEzC7rB,GAAO8rB,CAAK;AAAA,EACvB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,CAACqY,EAAQ3B,EAAK,MAAM1W,GAAGA,IAAI,KAAK,MAAM,CAAC,GAAGA,IAAI,KAAK,MAAM;AACxE,UAAMpiB,IAAQm4C;AACd,WAAIF,GAAA,MAAKmO,QACP,CAACjO,GAAS/1B,CAAC,IAAI,CAAC,MAAMA,IAAI61B,GAAA,MAAKmO,GAAc,IAExC,CAACpmD,GAAOoiB,CAAC;AAAA,EACpB;AACA,GAnCEgkC,KAAA,eAHE9qC,GAAO0B,IAAM,gBAAgB,GAFZA,SA6CjBspC,MAAiBtpC,KAAA,cAAcw/B,GAAY;AAAA,EAI7C,cAAc;AACZ,UAAM,aAAa;AAAA,MACjB,aAAa,IAAIzB,EAAY,OAAO,EAAE,eAAe,GAAI,CAAE;AAAA,MAC3D,SAAS,IAAIA,EAAY,OAAO,EAAE,eAAe,GAAM,CAAA;AAAA,IAC7D,CAAK;AAAA,EACL;AAAA,EACE,OAAO,oBAAoB/6C,GAAO;AAChC,QAAIA,EAAM,WAAW;AACnB,YAAM,IAAI+c;AAAA,QACRF,EAAU;AAAA,QACV,0CAA0C7c,EAAM,MAAM;AAAA,MACvD;AAEH,UAAM,CAACumD,GAAaC,CAAO,IAAI,CAACxmD,EAAM,UAAU,GAAG,CAAC,GAAGA,EAAM,UAAU,CAAC,CAAC;AACzE,WAAO;AAAA,MACL,aAAa,SAASumD,GAAa,EAAE;AAAA,MACrC,SAAS,SAASC,GAAS,EAAE;AAAA,IAC9B;AAAA,EACL;AACA,GArBIlrC,GAAO0B,IAAM,gBAAgB,GAFZA,KA0BjBypC,KAA6B,kBAACC,OAChCA,EAAWA,EAAW,OAAU,CAAC,IAAI,QACrCA,EAAWA,EAAW,WAAc,CAAC,IAAI,YACzCA,EAAWA,EAAW,UAAa,CAAC,IAAI,WACjCA,IACND,MAAa,CAAE,CAAA,OACdE,MAAiB3pC,KAAA,cAAc4pC,GAAO;AAAA,EAIxC,cAAc;AACZ,UAAM,aAAa,oBAAoB,CAAC;AAAA,EAC5C;AAAA,EACE,OAAO5mD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAIjO,GAAS,EAAG,OAAOp4C,EAAM,IAAI,CAAC,GAC7CqmD,EAAM,KAAK,IAAIQ,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO7mD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAIjO,GAAS,EAAG,OAAOp4C,EAAM,KAAK,CAAC,GAC9CqmD,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO14C,EAAM,MAAM,CAAC,GACzDqmD,EAAM,KAAK,IAAIjO,GAAS,EAAG,OAAOp4C,EAAM,OAAO,CAAC,GAChDqmD,EAAM,KAAK,IAAIC,GAAc,EAAG,OAAOtmD,EAAM,SAAS,CAAC,GACvDqmD,EAAM,KAAK,IAAIQ,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO7mD,EAAM,YAAY,CAAC,GACtFqmD,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO14C,EAAM,gBAAgB,CAAC,GACnEqmD,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO14C,EAAM,eAAe,CAAC,GAClEqmD,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO14C,EAAM,mBAAmB,CAAC,GACtEqmD,EAAM,KAAK,IAAIH,GAAelmD,EAAM,gBAAgB,SAAQ,CAAE,EAAE,OAAOA,EAAM,SAAS,CAAC,GACvFqmD,EAAM;AAAA,MACJ,IAAIH,GAAelmD,EAAM,oBAAoB,SAAQ,CAAE,EAAE,OAAOA,EAAM,aAAa;AAAA,IACpF,GACM26C,GAAQ0L,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC;AAC7C,UAAM0kC,IAAO3O;AACb,KAACA,GAAS/1B,CAAC,IAAI,IAAIykC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO/tB,GAAM1W,CAAC;AAC9E,UAAM2kC,IAAc5O;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC;AAC7C,UAAM4kC,IAAQ7O;AACd,KAACA,GAAS/1B,CAAC,IAAI,IAAIs2B,GAAe,KAAK,EAAE,OAAO5f,GAAM1W,CAAC;AACvD,UAAMnhB,IAASk3C;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC;AAC7C,UAAM0hC,IAAU3L;AAChB,KAACA,GAAS/1B,CAAC,IAAI,IAAIkkC,GAAc,EAAG,OAAOxtB,GAAM1W,CAAC;AAClD,UAAM6kC,IAAY9O;AAClB,KAACA,GAAS/1B,CAAC,IAAI,IAAIykC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO/tB,GAAM1W,CAAC;AAC9E,UAAM8kC,IAAe,OAAO/O,CAAO;AACnC,KAACA,GAAS/1B,CAAC,IAAI,IAAIs2B,GAAe,KAAK,EAAE,OAAO5f,GAAM1W,CAAC;AACvD,UAAM+kC,IAAmBhP;AACzB,KAACA,GAAS/1B,CAAC,IAAI,IAAIs2B,GAAe,KAAK,EAAE,OAAO5f,GAAM1W,CAAC;AACvD,UAAMglC,IAAkBjP;AACxB,KAACA,GAAS/1B,CAAC,IAAI,IAAIs2B,GAAe,KAAK,EAAE,OAAO5f,GAAM1W,CAAC;AACvD,UAAMilC,IAAsBlP;AAC5B,KAACA,GAAS/1B,CAAC,IAAI,IAAI8jC,GAAekB,EAAgB,SAAQ,CAAE,EAAE,OAAOtuB,GAAM1W,CAAC;AAC5E,UAAMklC,IAAYnP;AAClB,YAACA,GAAS/1B,CAAC,IAAI,IAAI8jC,GAAemB,EAAoB,SAAQ,CAAE,EAAE,OAAOvuB,GAAM1W,CAAC,GAEzE;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,MAAA0kC;AAAA,QACA,aAAAC;AAAA,QACA,OAAAC;AAAA,QACA,QAAA/lD;AAAA,QACA,SAAA6iD;AAAA,QACA,WAAAmD;AAAA,QACA,cAAAC;AAAA,QACA,kBAAAC;AAAA,QACA,iBAAAC;AAAA,QACA,qBAAAC;AAAA,QACA,WAAAC;AAAA,QACA,eAfkBnP;AAAA,MAgBnB;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GArEI9G,GAAO0B,IAAM,gBAAgB,GAFZA,SAwEjBuqC,MAAqBvqC,KAAA,cAAc4pC,GAAO;AAAA,EAI5C,cAAc;AACZ,UAAM,iBAAiB,wBAAwB,CAAC;AAAA,EACpD;AAAA,EACE,OAAO5mD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAIjO,GAAS,EAAG,OAAOp4C,EAAM,IAAI,CAAC,GAC7CqmD,EAAM,KAAK,IAAIQ,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO7mD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAIjO,GAAS,EAAG,OAAOp4C,EAAM,WAAW,CAAC,GACpDqmD,EAAM,KAAK,IAAIjO,GAAS,EAAG,OAAOp4C,EAAM,SAAS,CAAC,GAClDqmD,EAAM,KAAK,IAAIC,GAAc,EAAG,OAAOtmD,EAAM,SAAS,CAAC,GACvDqmD,EAAM,KAAK,IAAIjO,GAAS,EAAG,OAAOp4C,EAAM,UAAU,CAAC,GAC5C26C,GAAQ0L,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC;AAC7C,UAAM0kC,IAAO3O;AACb,KAACA,GAAS/1B,CAAC,IAAI,IAAIykC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO/tB,GAAM1W,CAAC;AAC9E,UAAM2kC,IAAc5O;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC;AAC7C,UAAMolC,IAAcrP;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC;AAC7C,UAAMqlC,IAAYtP;AAClB,KAACA,GAAS/1B,CAAC,IAAI,IAAIkkC,GAAc,EAAG,OAAOxtB,GAAM1W,CAAC;AAClD,UAAM6kC,IAAY9O;AAClB,YAACA,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC,GAEtC;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,MAAA0kC;AAAA,QACA,aAAAC;AAAA,QACA,aAAAS;AAAA,QACA,WAAAC;AAAA,QACA,WAAAR;AAAA,QACA,YATe9O;AAAA,MAUhB;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA3CI9G,GAAO0B,IAAM,oBAAoB,GAFZA,SA8CrB0qC,MAAoB1qC,KAAA,cAAiC4pC,GAAO;AAAA,EAI9D,cAAc;AACZ,UAAM,gBAAgB,uBAAuB,CAAC;AAAA,EAClD;AAAA,EACE,OAAO,aAAa5mD,GAAO;AACzB,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAIH,GAAe,EAAE,EAAE,OAAOlmD,EAAM,MAAM,CAAC,GACtDqmD,EAAM,KAAK,IAAIH,GAAe,EAAE,EAAE,OAAOlmD,EAAM,SAAS,CAAC,GACzDqmD,EAAM,KAAK,IAAIH,GAAe,EAAE,EAAE,OAAOlmD,EAAM,KAAK,CAAC,GACrDqmD,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO14C,EAAM,MAAM,CAAC,GACzDqmD,EAAM,KAAKxU,EAAU7xC,EAAM,QAAQ,IAAI,CAAC,GACjCukC,GAAOoW,GAAQ0L,CAAK,CAAC;AAAA,EAChC;AAAA,EACE,OAAO,WAAWsB,GAAa;AAC7B,UAAMvnD,IAAQyxC,EAAU8V,KAAe,IAAI,GACrCnK,IAAap9C,EAAM;AACzB,WAAO,IAAI8lD,GAAe1I,CAAU,EAAE,OAAOp9C,CAAK;AAAA,EACtD;AAAA,EACE,OAAOJ,GAAO;AACZ,UAAMqmD,IAAQ,CAAE,GACVvtB,IAAO9b,GAAmB,WAAWhd,EAAM,IAAI;AACrD,WAAAqmD,EAAM,KAAK,IAAIH,GAAe,EAAE,EAAE,OAAOlmD,EAAM,MAAM,CAAC,GACtDqmD,EAAM,KAAK,IAAIH,GAAe,EAAE,EAAE,OAAOlmD,EAAM,SAAS,CAAC,GACzDqmD,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO14C,EAAM,MAAM,CAAC,GACzDqmD,EAAM,KAAK,IAAIH,GAAe,EAAE,EAAE,OAAOlmD,EAAM,KAAK,CAAC,GACrDqmD,EAAM,KAAK,IAAIQ,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO7mD,EAAM,YAAY,CAAC,GACtFqmD,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO14C,EAAM,gBAAgB,CAAC,GACnEqmD,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO5f,EAAK,MAAM,CAAC,GACxDutB,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO14C,EAAM,eAAe,CAAC,GAClEqmD,EAAM,KAAK,IAAI3N,GAAe,KAAK,EAAE,OAAO14C,EAAM,mBAAmB,CAAC,GACtEqmD,EAAM,KAAK,IAAIH,GAAeptB,EAAK,MAAM,EAAE,OAAOA,CAAI,CAAC,GACvDutB,EAAM,KAAK,IAAIH,GAAelmD,EAAM,gBAAgB,SAAQ,CAAE,EAAE,OAAOA,EAAM,SAAS,CAAC,GACvFqmD,EAAM;AAAA,MACJ,IAAIH,GAAelmD,EAAM,oBAAoB,SAAQ,CAAE,EAAE,OAAOA,EAAM,aAAa;AAAA,IACpF,GACM26C,GAAQ0L,CAAK;AAAA,EACxB;AAAA,EACE,OAAO,WAAWsB,GAAa;AAC7B,UAAMvnD,IAAQyxC,EAAU8V,CAAW,GAC7BnK,IAAap9C,EAAM,QACnB,CAAC04B,CAAI,IAAI,IAAIotB,GAAe1I,CAAU,EAAE,OAAOp9C,GAAO,CAAC;AAC7D,WAAOyxC,EAAU/Y,CAAI;AAAA,EACzB;AAAA,EACE,OAAOA,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC;AAC7C,UAAMwlC,IAASzP;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC;AAC7C,UAAMylC,IAAY1P;AAClB,KAACA,GAAS/1B,CAAC,IAAI,IAAIs2B,GAAe,KAAK,EAAE,OAAO5f,GAAM1W,CAAC;AACvD,UAAMnhB,IAASk3C;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAIg2B,GAAS,EAAG,OAAOtf,GAAM1W,CAAC;AAC7C,UAAM0lC,IAAQ3P;AACd,KAACA,GAAS/1B,CAAC,IAAI,IAAIykC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO/tB,GAAM1W,CAAC;AAC9E,UAAM8kC,IAAe,OAAO/O,CAAO;AACnC,KAACA,GAAS/1B,CAAC,IAAI,IAAIs2B,GAAe,KAAK,EAAE,OAAO5f,GAAM1W,CAAC;AACvD,UAAM+kC,IAAmBhP;AACzB,KAACA,GAAS/1B,CAAC,IAAI,IAAIykC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO/tB,GAAM1W,CAAC;AAC9E,UAAMo7B,IAAarF;AACnB,KAACA,GAAS/1B,CAAC,IAAI,IAAIs2B,GAAe,KAAK,EAAE,OAAO5f,GAAM1W,CAAC;AACvD,UAAMglC,IAAkBjP;AACxB,KAACA,GAAS/1B,CAAC,IAAI,IAAIs2B,GAAe,KAAK,EAAE,OAAO5f,GAAM1W,CAAC;AACvD,UAAMilC,IAAsBlP;AAC5B,KAACA,GAAS/1B,CAAC,IAAI,IAAI8jC,GAAe1I,CAAU,EAAE,OAAO1kB,GAAM1W,CAAC;AAC5D,UAAMulC,IAAcxP;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI8jC,GAAekB,EAAgB,SAAQ,CAAE,EAAE,OAAOtuB,GAAM1W,CAAC;AAC5E,UAAMklC,IAAYnP;AAClB,YAACA,GAAS/1B,CAAC,IAAI,IAAI8jC,GAAemB,EAAoB,SAAQ,CAAE,EAAE,OAAOvuB,GAAM1W,CAAC,GAEzE;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,QAAAwlC;AAAA,QACA,WAAAC;AAAA,QACA,QAAA5mD;AAAA,QACA,cAAAimD;AAAA,QACA,OAAAY;AAAA,QACA,kBAAAX;AAAA,QACA,YAAA3J;AAAA,QACA,iBAAA4J;AAAA,QACA,qBAAAC;AAAA,QACA,MAAMM;AAAA,QACN,WAAAL;AAAA,QACA,eAfkBnP;AAAA,MAgBnB;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA1FI9G,GAAO0B,IAAM,mBAAmB,GAFZA,SA6FpB+qC,MAAa/qC,KAAA,cAAc4pC,GAAO;AAAA,EAIpC,cAAc;AACZ,UAAM,SAAS,gBAAgB,CAAC;AAAA,EACpC;AAAA,EACE,OAAO5mD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,IAAAA,EAAM,KAAK,IAAIQ,EAAa,MAAM,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO7mD,EAAM,IAAI,CAAC;AAC7E,UAAM,EAAE,MAAA2xB,EAAI,IAAK3xB;AACjB,YAAQ2xB,GAAI;AAAA,MACV,KAAK,GAAc;AACjB,QAAA00B,EAAM,KAAK,IAAIM,GAAgB,EAAC,OAAO3mD,CAAK,CAAC;AAC7C;AAAA,MACR;AAAA,MACM,KAAK,GAAkB;AACrB,QAAAqmD,EAAM,KAAK,IAAIkB,GAAoB,EAAC,OAAOvnD,CAAK,CAAC;AACjD;AAAA,MACR;AAAA,MACM,KAAK,GAAiB;AACpB,QAAAqmD,EAAM,KAAK,IAAIqB,GAAmB,EAAC,OAAO1nD,CAAK,CAAC;AAChD;AAAA,MACR;AAAA,MACM;AACE,cAAM,IAAI66B;AAAAA,UACR/d,EAAW;AAAA,UACX,mCAAmC6U,CAAI;AAAA,QACxC;AAAA,IAET;AACI,WAAOgpB,GAAQ0L,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIykC,EAAa,MAAM,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO/tB,GAAM1W,CAAC;AAC7E,UAAMuP,IAAOwmB;AACb,YAAQxmB,GAAI;AAAA,MACV,KAAK;AACH,gBAACwmB,GAAS/1B,CAAC,IAAI,IAAIukC,GAAc,EAAG,OAAO7tB,GAAM1W,CAAC,GAC3C,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAImlC,GAAkB,EAAG,OAAOzuB,GAAM1W,CAAC,GAC/C,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAIslC,GAAiB,EAAG,OAAO5uB,GAAM1W,CAAC,GAC9C,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB;AACE,cAAM,IAAIyY;AAAAA,UACR/d,EAAW;AAAA,UACX,mCAAmC6U,CAAI;AAAA,QACxC;AAAA,IAET;AAAA,EACA;AACA,GAzDIrW,GAAO0B,IAAM,YAAY,GAFZA,KAiEbgrC,KAA8B,kBAACC,OACjCA,EAAYA,EAAY,OAAU,CAAC,IAAI,QACvCA,EAAYA,EAAY,WAAc,CAAC,IAAI,YAC3CA,EAAYA,EAAY,SAAY,CAAC,IAAI,UACzCA,EAAYA,EAAY,WAAc,CAAC,IAAI,YAC3CA,EAAYA,EAAY,kBAAqB,CAAC,IAAI,mBAC3CA,IACND,MAAc,CAAE,CAAA,OACfE,MAAkBlrC,KAAA,cAAcmrC,GAAO;AAAA,EAIzC,cAAc;AACZ,UAAM,cAAc,qBAAqB,CAAC;AAAA,EAC9C;AAAA,EACE,OAAOnoD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,EAAE,CAAC,GAC5CqmD,EAAM,KAAK,IAAIgC,GAAgB,KAAK,EAAE,OAAOroD,EAAM,MAAM,CAAC,GAC1DqmD,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,OAAO,CAAC,GAC1CsoD,GAAQjC,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC;AAC9C,UAAM6e,IAAKkX;AACX,KAACA,GAAS/1B,CAAC,IAAI,IAAIimC,GAAgB,KAAK,EAAE,OAAOvvB,GAAM1W,CAAC;AACxD,UAAMnhB,IAASk3C;AACf,YAACA,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC,GAEvC;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,IAAA6e;AAAA,QACA,QAAAhgC;AAAA,QACA,SANYk3C;AAAA,MAOb;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA/BI9G,GAAO0B,IAAM,iBAAiB,GAFZA,SAkClBurC,MAAsBvrC,KAAA,cAAcmrC,GAAO;AAAA,EAI7C,cAAc;AACZ,UAAM,kBAAkB,yBAAyB,CAAC;AAAA,EACtD;AAAA,EACE,OAAOnoD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAImC,EAAa,MAAM,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOxoD,EAAM,UAAU,CAAC,GACnFqmD,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,WAAW,CAAC,GACrDqmD,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,SAAS,CAAC,GAC5CsoD,GAAQjC,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIomC,EAAa,MAAM,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO1vB,GAAM1W,CAAC;AAC7E,UAAMqmC,IAAatQ;AACnB,KAACA,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC;AAC9C,UAAMolC,IAAcrP;AACpB,YAACA,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC,GAEvC;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,YAAAqmC;AAAA,QACA,aAAAjB;AAAA,QACA,WANcrP;AAAA,MAOf;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA/BI9G,GAAO0B,IAAM,qBAAqB,GAFZA,SAkCtB0rC,MAAoB1rC,KAAA,cAAcmrC,GAAO;AAAA,EAI3C,cAAc;AACZ,UAAM,gBAAgB,uBAAuB,CAAC;AAAA,EAClD;AAAA,EACE,OAAOnoD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,EAAE,CAAC,GAC5CqmD,EAAM,KAAK,IAAIgC,GAAgB,KAAK,EAAE,OAAOroD,EAAM,MAAM,CAAC,GAC1DqmD,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,OAAO,CAAC,GAC1CsoD,GAAQjC,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC;AAC9C,UAAM6e,IAAKkX;AACX,KAACA,GAAS/1B,CAAC,IAAI,IAAIimC,GAAgB,KAAK,EAAE,OAAOvvB,GAAM1W,CAAC;AACxD,UAAMnhB,IAASk3C;AACf,YAACA,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC,GAEvC;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,IAAA6e;AAAA,QACA,QAAAhgC;AAAA,QACA,SANYk3C;AAAA,MAOb;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA/BI9G,GAAO0B,IAAM,mBAAmB,GAFZA,SAkCpB2rC,MAAsB3rC,KAAA,cAAcmrC,GAAO;AAAA,EAI7C,cAAc;AACZ,UAAM,kBAAkB,yBAAyB,CAAC;AAAA,EACtD;AAAA,EACE,OAAOnoD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,EAAE,CAAC,GAC5CqmD,EAAM,KAAK,IAAIgC,GAAgB,KAAK,EAAE,OAAOroD,EAAM,MAAM,CAAC,GAC1DqmD,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,OAAO,CAAC,GAC1CsoD,GAAQjC,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC;AAC9C,UAAM6e,IAAKkX;AACX,KAACA,GAAS/1B,CAAC,IAAI,IAAIimC,GAAgB,KAAK,EAAE,OAAOvvB,GAAM1W,CAAC;AACxD,UAAMnhB,IAASk3C;AACf,YAACA,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC,GAEvC;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,IAAA6e;AAAA,QACA,QAAAhgC;AAAA,QACA,SANYk3C;AAAA,MAOb;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA/BI9G,GAAO0B,IAAM,qBAAqB,GAFZA,SAkCtB4rC,MAA6B5rC,KAAA,cAAcmrC,GAAO;AAAA,EAIpD,cAAc;AACZ,UAAM,yBAAyB,gCAAgC,CAAC;AAAA,EACpE;AAAA,EACE,OAAOnoD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,UAAU,CAAC,GACpDqmD,EAAM,KAAK,IAAI+B,GAAU,EAAG,OAAOpoD,EAAM,SAAS,CAAC,GAC5CsoD,GAAQjC,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC;AAC9C,UAAM4hC,IAAa7L;AACnB,YAACA,GAAS/1B,CAAC,IAAI,IAAIgmC,GAAU,EAAG,OAAOtvB,GAAM1W,CAAC,GAEvC;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,YAAA4hC;AAAA,QACA,WALc7L;AAAA,MAMf;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA3BI9G,GAAO0B,IAAM,4BAA4B,GAFZA,SA8B7B6rC,MAAc7rC,KAAA,cAAcmrC,GAAO;AAAA,EAIrC,cAAc;AACZ,UAAM,UAAU,kBAAkB,CAAC;AAAA,EACvC;AAAA,EACE,OAAOnoD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,IAAAA,EAAM,KAAK,IAAImC,EAAa,MAAM,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOxoD,EAAM,IAAI,CAAC;AAC7E,UAAM,EAAE,MAAA2xB,EAAI,IAAK3xB;AACjB,YAAQ2xB,GAAI;AAAA,MACV,KAAK,GAAc;AACjB,QAAA00B,EAAM,KAAK,IAAI6B,GAAiB,EAAC,OAAOloD,CAAK,CAAC;AAC9C;AAAA,MACR;AAAA,MACM,KAAK,GAAkB;AACrB,QAAAqmD,EAAM,KAAK,IAAIkC,GAAqB,EAAC,OAAOvoD,CAAK,CAAC;AAClD;AAAA,MACR;AAAA,MACM,KAAK,GAAgB;AACnB,QAAAqmD,EAAM,KAAK,IAAIqC,GAAmB,EAAC,OAAO1oD,CAAK,CAAC;AAChD;AAAA,MACR;AAAA,MACM,KAAK,GAAkB;AACrB,QAAAqmD,EAAM,KAAK,IAAIsC,GAAqB,EAAC,OAAO3oD,CAAK,CAAC;AAClD;AAAA,MACR;AAAA,MACM,KAAK,GAAyB;AAC5B,QAAAqmD,EAAM,KAAK,IAAIuC,GAA4B,EAAC,OAAO5oD,CAAK,CAAC;AACzD;AAAA,MACR;AAAA,MACM;AACE,cAAM,IAAI08B;AAAAA,UACRC,EAAW;AAAA,UACX,oCAAoChL,CAAI;AAAA,QACzC;AAAA,IAET;AACI,WAAO22B,GAAQjC,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIomC,EAAa,MAAM,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO1vB,GAAM1W,CAAC;AAC7E,UAAMuP,IAAOwmB;AACb,YAAQxmB,GAAI;AAAA,MACV,KAAK;AACH,gBAACwmB,GAAS/1B,CAAC,IAAI,IAAI8lC,GAAe,EAAG,OAAOpvB,GAAM1W,CAAC,GAC5C,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAImmC,GAAmB,EAAG,OAAOzvB,GAAM1W,CAAC,GAChD,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAIsmC,GAAiB,EAAG,OAAO5vB,GAAM1W,CAAC,GAC9C,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAIumC,GAAmB,EAAG,OAAO7vB,GAAM1W,CAAC,GAChD,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAIwmC,GAA0B,EAAG,OAAO9vB,GAAM1W,CAAC,GACvD,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB;AACE,cAAM,IAAIsa;AAAAA,UACRC,EAAW;AAAA,UACX,oCAAoChL,CAAI;AAAA,QACzC;AAAA,IAET;AAAA,EACA;AACA,GAzEIrW,GAAO0B,IAAM,aAAa,GAFZA,KAiFd8rC,KAA8B,kBAACC,OACjCA,EAAYA,EAAY,MAAS,CAAC,IAAI,OACtCA,EAAYA,EAAY,eAAkB,CAAC,IAAI,gBAC/CA,EAAYA,EAAY,WAAc,CAAC,IAAI,YAC3CA,EAAYA,EAAY,SAAY,CAAC,IAAI,UACzCA,EAAYA,EAAY,aAAgB,EAAE,IAAI,cACvCA,IACND,MAAc,CAAE,CAAA,GACfE,KAA+B1tC,gBAAAA,GAAO,CAAC2tC,MAAaA,EAAS,KAAK,CAAChnD,GAAGC,MAAMD,EAAE,OAAOC,EAAE,IAAI,GAAG,cAAc;AAChH,SAASgnD,GAA2BD,GAAU;AAC5C,QAAME,IAA4B,oBAAI,IAAK;AAC3C,EAAAF,EAAS,QAAQ,CAACG,MAAW;AAC3B,QAAID,EAAU,IAAIC,EAAO,IAAI;AAC3B,YAAM,IAAIpsB;AAAAA,QACRC,EAAW;AAAA,QACX;AAAA,MACD;AAEH,IAAAksB,EAAU,IAAIC,EAAO,IAAI;AAAA,EAC7B,CAAG;AACH;AACA9tC,GAAO4tC,IAA4B,4BAA4B;QAC3DG,MAAgBrsC,KAAA,cAAcssC,GAAO;AAAA,EAIvC,cAAc;AACZ,UAAM,YAAY,gBAAgB,CAAC;AAAA,EACvC;AAAA,EACE,OAAOL,GAAU;AACf,IAAAC,GAA2BD,CAAQ;AACnC,UAAMM,IAAiBP,GAAaC,CAAQ,GACtC5C,IAAQ,CAAE;AAChB,WAAAkD,EAAe,QAAQ,CAAC,EAAE,MAAAzwB,GAAM,MAAAnH,EAAI,MAAO;AACzC,cAAQA,GAAI;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAA00B,EAAM,KAAK,IAAImD,GAAgB,KAAK,EAAE,OAAO1wB,CAAI,CAAC;AAClD;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,UAAAutB,EAAM,KAAK,IAAIoD,EAAa,OAAO,EAAE,eAAe,IAAM,EAAE,OAAO3wB,CAAI,CAAC;AACxE;AAAA,QACF;AACE,gBAAM,IAAIkE,EAAWC,EAAW,qBAAqB,wBAAwBtL,CAAI,EAAE;AAAA,MAE7F;AAAA,IACA,CAAK,GACM+3B,GAAQrD,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQioD,GAAa;AAChC,QAAIvnC,IAAI1gB;AACR,UAAMunD,IAAW,CAAE;AACnB,QAAIU,IAAc,GAAa;AAC7B,YAAM,CAACC,GAAKC,CAAU,IAAI,IAAIL,GAAgB,KAAK,EAAE,OAAO1wB,GAAM1W,CAAC;AACnE,MAAAA,IAAIynC,GACJZ,EAAS,KAAK,EAAE,MAAM,GAAa,MAAMW,GAAK;AAAA,IACpD;AACI,QAAID,IAAc,GAAsB;AACtC,YAAM,CAACG,GAAcD,CAAU,IAAI,IAAIL,GAAgB,KAAK,EAAE,OAAO1wB,GAAM1W,CAAC;AAC5E,MAAAA,IAAIynC,GACJZ,EAAS,KAAK,EAAE,MAAM,GAAsB,MAAMa,GAAc;AAAA,IACtE;AACI,QAAIH,IAAc,GAAkB;AAClC,YAAM,CAACI,GAAUF,CAAU,IAAI,IAAIJ,EAAa,OAAO,EAAE,eAAe,GAAM,CAAA,EAAE;AAAA,QAC9E3wB;AAAA,QACA1W;AAAA,MACD;AACD,MAAAA,IAAIynC,GACJZ,EAAS,KAAK,EAAE,MAAM,GAAkB,MAAMc,GAAU;AAAA,IAC9D;AACI,QAAIJ,IAAc,GAAgB;AAChC,YAAM,CAACK,GAAQH,CAAU,IAAI,IAAIL,GAAgB,KAAK,EAAE,OAAO1wB,GAAM1W,CAAC;AACtE,MAAAA,IAAIynC,GACJZ,EAAS,KAAK,EAAE,MAAM,GAAgB,MAAMe,GAAQ;AAAA,IAC1D;AACI,QAAIL,IAAc,IAAqB;AACrC,YAAM,CAACM,GAAYJ,CAAU,IAAI,IAAIJ,EAAa,OAAO,EAAE,eAAe,GAAM,CAAA,EAAE;AAAA,QAChF3wB;AAAA,QACA1W;AAAA,MACD;AACD,MAAAA,IAAIynC,GACJZ,EAAS,KAAK,EAAE,MAAM,IAAqB,MAAMgB,GAAY;AAAA,IACnE;AACI,WAAO,CAAChB,GAAU7mC,CAAC;AAAA,EACvB;AACA,GA/DI9G,GAAO0B,IAAM,eAAe,GAFZA,KAuEhBktC,KAA+B,kBAACC,OAClCA,EAAaA,EAAa,OAAU,CAAC,IAAI,QACzCA,EAAaA,EAAa,SAAY,CAAC,IAAI,UAC3CA,EAAaA,EAAa,aAAgB,CAAC,IAAI,cAC/CA,EAAaA,EAAa,QAAW,CAAC,IAAI,SAC1CA,EAAaA,EAAa,SAAY,CAAC,IAAI,UAC3CA,EAAaA,EAAa,MAAS,CAAC,IAAI,OACxCA,EAAaA,EAAa,UAAa,CAAC,IAAI,WAC5CA,EAAaA,EAAa,WAAc,CAAC,IAAI,YAC7CA,EAAaA,EAAa,cAAiB,CAAC,IAAI,eAChDA,EAAaA,EAAa,eAAkB,CAAC,IAAI,gBACjDA,EAAaA,EAAa,aAAgB,EAAE,IAAI,cAChDA,EAAaA,EAAa,OAAU,EAAE,IAAI,QAC1CA,EAAaA,EAAa,OAAU,EAAE,IAAI,QACnCA,IACND,MAAe,CAAE,CAAA,GAChBE,KAAmC9uC,gBAAAA,GAAO,CAAC0oC,GAAYqG,MAAU;AACnE,QAAMC,IAAkB5I,EAAUsC,CAAU,GACtCuG,IAAa7I,EAAU2I,CAAK;AAClC,SAAOlX,GAAQqX,GAAQ,CAACF,GAAiBC,CAAU,CAAC,CAAC;AACvD,GAAG,kBAAkB,GACjBE,KAAgCnvC,gBAAAA,GAAO,CAAC0oC,GAAYqG,OAAW;AAAA,EACjE,MAAMD,GAAiBpG,GAAYqG,CAAK;AAC1C,IAAI,eAAe,GACfK,KAA+BpvC,gBAAAA,GAAO,CAACtb,MAAU;AACnD,QAAMqmD,IAAQ,CAAE;AAChB,SAAAA,EAAM,KAAK,IAAIH,GAAe,EAAE,EAAE,OAAOlmD,EAAM,MAAM,CAAC,GACtDqmD,EAAM,KAAK,IAAIH,GAAe,EAAE,EAAE,OAAOlmD,EAAM,SAAS,CAAC,GACzDqmD,EAAM,KAAK,IAAIH,GAAe,EAAE,EAAE,OAAOlmD,EAAM,KAAK,CAAC,GACrDqmD,EAAM,KAAK,IAAIsE,GAAgB,KAAK,EAAE,OAAO3qD,EAAM,MAAM,CAAC,GAC1DqmD,EAAM,KAAK3E,EAAU1hD,EAAM,QAAQ,IAAI,CAAC,GACjCmzC,GAAQqX,GAAQnE,CAAK,CAAC;AAC/B,GAAG,cAAc,OAIbuE,MAAmB5tC,KAAA,cAAc6tC,GAAa;AAAA,EAIhD,cAAc;AACZ,UAAM,eAAe;AAAA,MACnB,KAAK,IAAIC,GAAY;AAAA,MACrB,OAAO,IAAIA,GAAU;AAAA,IAC3B,CAAK;AAAA,EACL;AACA,GARIxvC,GAAO0B,IAAM,kBAAkB,GAFZA,KAqBnB+tC,KAA0C,kBAACC,OAC7CA,EAAwBA,EAAwB,sBAAyB,CAAC,IAAI,uBAC9EA,EAAwBA,EAAwB,kBAAqB,CAAC,IAAI,mBACnEA,IACND,MAA0B,CAAE,CAAA,OAC3BE,MAAsBjuC,KAAA,cAAckuC,GAAO;AAAA,EAI7C,cAAc;AACZ,UAAM,kBAAkB,kBAAkB,CAAC;AAAA,EAC/C;AAAA,EACE,OAAOC,GAAoB;AACzB,UAAM9E,IAAQ,CAAE,GACV,EAAE,MAAA10B,EAAI,IAAKw5B;AAEjB,YADA9E,EAAM,KAAK,IAAI+E,EAAa,MAAM,EAAE,eAAe,IAAM,EAAE,OAAOz5B,CAAI,CAAC,GAC/DA,GAAI;AAAA,MACV,KAAK,GAA6B;AAChC,cAAMmH,IAAOqyB,EAAmB;AAChC,QAAA9E,EAAM,KAAK,IAAI+E,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOtyB,EAAK,YAAY,CAAC,GACrFutB,EAAM,KAAK,IAAIgF,GAAU,EAAG,OAAOvyB,EAAK,QAAQ,CAAC;AACjD;AAAA,MACR;AAAA,MACM,KAAK,GAAyB;AAC5B,cAAMA,IAAOqyB,EAAmB;AAChC,QAAA9E,EAAM,KAAK,IAAIgF,GAAU,EAAG,OAAOvyB,EAAK,YAAY,CAAC;AACrD;AAAA,MACR;AAAA,MACM;AACE,cAAM,IAAIwE;AAAAA,UACRC,EAAW;AAAA,UACX,iCAAiC5L,CAAI;AAAA,QACtC;AAAA,IAET;AACI,WAAO25B,GAAQjF,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAI0gB,IAAI1gB,GACJy2C;AACJ,KAACA,GAAS/1B,CAAC,IAAI,IAAIgpC,EAAa,MAAM,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOtyB,GAAM1W,CAAC;AAC7E,UAAMuP,IAAOwmB;AACb,YAAQxmB,GAAI;AAAA,MACV,KAAK,GAA6B;AAChC,SAACwmB,GAAS/1B,CAAC,IAAI,IAAIgpC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOtyB,GAAM1W,CAAC;AAC9E,cAAM8kC,IAAe/O;AACrB,gBAACA,GAAS/1B,CAAC,IAAI,IAAIipC,GAAU,EAAG,OAAOvyB,GAAM1W,CAAC,GAEvC,CAAC,EAAE,MAAAuP,GAAM,MAAM,EAAE,cAAAu1B,GAAc,UADrB/O,EAC6B,EAAI,GAAE/1B,CAAC;AAAA,MAC7D;AAAA,MACM,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAIipC,GAAU,EAAG,OAAOvyB,GAAM1W,CAAC,GAEvC,CAAC,EAAE,MAAAuP,GAAM,MAAM,EAAE,cADHwmB,EACe,EAAI,GAAE/1B,CAAC;AAAA,MAE7C;AACE,cAAM,IAAIkb;AAAAA,UACRC,EAAW;AAAA,UACX,iCAAiC5L,CAAI;AAAA,QACtC;AAAA,IAET;AAAA,EACA;AACA,GAxDIrW,GAAO0B,IAAM,qBAAqB,GAFZA,SA+DtBuuC,MAAevuC,KAAA,cAAcwuC,GAAO;AAAA,EAItC,cAAc;AACZ;AAAA,MACE;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,IACD;AAAA,EACL;AAAA,EACE,OAAOxrD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAIoF,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOzrD,EAAM,UAAU,CAAC,GACpFqmD,EAAM,KAAK,IAAIH,GAAelmD,EAAM,UAAU,EAAE,OAAOA,EAAM,IAAI,CAAC,GAC3D0rD,GAAQrF,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIqpC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAO3yB,GAAM1W,CAAC;AAC9E,UAAMo7B,IAAarF;AACnB,YAACA,GAAS/1B,CAAC,IAAI,IAAI8jC,GAAe1I,CAAU,EAAE,OAAO1kB,GAAM1W,CAAC,GAErD;AAAA,MACL;AAAA,QACE,YAAAo7B;AAAA,QACA,MAJgBrF;AAAA,MAKjB;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA/BI9G,GAAO0B,IAAM,cAAc,GAFZA,KAoCf2uC,KAAmC,kBAACC,OACtCA,EAAiBA,EAAiB,SAAY,CAAC,IAAI,UACnDA,EAAiBA,EAAiB,SAAY,CAAC,IAAI,UACnDA,EAAiBA,EAAiB,OAAU,CAAC,IAAI,QACjDA,EAAiBA,EAAiB,UAAa,CAAC,IAAI,WACpDA,EAAiBA,EAAiB,SAAY,CAAC,IAAI,UACnDA,EAAiBA,EAAiB,OAAU,CAAC,IAAI,QAC1CA,IACND,MAAmB,CAAE,CAAA,OACpBE,MAAyB7uC,KAAA,cAAc8uC,GAAO;AAAA,EAIhD,cAAc;AACZ,UAAM,qBAAqB,4BAA4B,CAAC;AAAA,EAC5D;AAAA,EACE,OAAO9rD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAI0F,GAAgB,KAAK,EAAE,OAAO/rD,EAAM,cAAc,CAAC,GAClEqmD,EAAM,KAAK,IAAI2F,GAAU,EAAG,OAAOhsD,EAAM,YAAY,CAAC,GACtDqmD,EAAM,KAAK,IAAI0F,GAAgB,KAAK,EAAE,OAAO/rD,EAAM,YAAY,CAAC,GAChEqmD,EAAM,KAAK,IAAI0F,GAAgB,KAAK,EAAE,OAAO/rD,EAAM,gBAAgB,CAAC,GACpEqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,YAAY,CAAC,GACtFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,cAAc,CAAC,GACxFqmD,EAAM,KAAK,IAAIH,GAAelmD,EAAM,aAAa,SAAQ,CAAE,EAAE,OAAOA,EAAM,MAAM,CAAC,GACjFqmD,EAAM,KAAK,IAAIH,GAAelmD,EAAM,iBAAiB,SAAQ,CAAE,EAAE,OAAOA,EAAM,UAAU,CAAC,GACzFqmD,EAAM,KAAK,IAAIgD,GAAa,EAAG,OAAOrpD,EAAM,QAAQ,CAAC,GACrDqmD,EAAM,KAAK,IAAIzO,GAAW,IAAImQ,GAAY,GAAE/nD,EAAM,WAAW,EAAE,OAAOA,EAAM,MAAM,CAAC,GACnFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAIiR,GAAa,GAAE7oD,EAAM,YAAY,EAAE,OAAOA,EAAM,OAAO,CAAC,GACtFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAI2T,GAAc,GAAEvrD,EAAM,cAAc,EAAE,OAAOA,EAAM,SAAS,CAAC,GACpFksD,GAAQ7F,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAI2pC,GAAgB,KAAK,EAAE,OAAOjzB,GAAM1W,CAAC;AACxD,UAAM+pC,IAAiBhU;AACvB,KAACA,GAAS/1B,CAAC,IAAI,IAAI4pC,GAAU,EAAG,OAAOlzB,GAAM1W,CAAC;AAC9C,UAAMgqC,IAAejU;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAI2pC,GAAgB,KAAK,EAAE,OAAOjzB,GAAM1W,CAAC;AACxD,UAAMiqC,IAAelU;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAI2pC,GAAgB,KAAK,EAAE,OAAOjzB,GAAM1W,CAAC;AACxD,UAAMkqC,IAAmBnU;AACzB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMunC,IAAcxR;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMmqC,IAAcpU;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMoqC,IAAerU;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMqqC,IAAiBtU;AACvB,KAACA,GAAS/1B,CAAC,IAAI,IAAI8jC,GAAemG,EAAa,SAAQ,CAAE,EAAE,OAAOvzB,GAAM1W,CAAC;AACzE,UAAMsqC,IAASvU;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAI8jC,GAAeoG,EAAiB,SAAQ,CAAE,EAAE,OAAOxzB,GAAM1W,CAAC;AAC7E,UAAMwhC,IAAazL;AACnB,KAACA,GAAS/1B,CAAC,IAAI,IAAIinC,GAAe,EAAC,OAAOvwB,GAAM1W,GAAGunC,CAAW;AAC9D,UAAMV,IAAW9Q;AACjB,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAImQ,GAAY,GAAEwE,CAAW,EAAE,OAAOzzB,GAAM1W,CAAC;AAC3E,UAAM67B,IAAS9F;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAIiR,GAAa,GAAE2D,CAAY,EAAE,OAAO1zB,GAAM1W,CAAC;AAC7E,UAAMuqC,IAAUxU;AAChB,YAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAI2T,GAAc,GAAEkB,CAAc,EAAE,OAAO3zB,GAAM1W,CAAC,GAEzE;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,gBAAA+pC;AAAA,QACA,cAAAE;AAAA,QACA,kBAAAC;AAAA,QACA,aAAA3C;AAAA,QACA,aAAA4C;AAAA,QACA,cAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,cAAAL;AAAA,QACA,QAAAM;AAAA,QACA,YAAA9I;AAAA,QACA,UAAAqF;AAAA,QACA,QAAAhL;AAAA,QACA,SAAA0O;AAAA,QACA,WAjBcxU;AAAA,MAkBf;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA3EI9G,GAAO0B,IAAM,wBAAwB,GAFZA,SA8EzB4vC,MAAyB5vC,KAAA,cAAc8uC,GAAO;AAAA,EAIhD,cAAc;AACZ,UAAM,qBAAqB,4BAA4B,CAAC;AAAA,EAC5D;AAAA,EACE,OAAO9rD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,oBAAoB,CAAC,GAC9FqmD,EAAM,KAAK,IAAI2F,GAAU,EAAG,OAAOhsD,EAAM,IAAI,CAAC,GAC9CqmD,EAAM,KAAK,IAAI0F,GAAgB,KAAK,EAAE,OAAO/rD,EAAM,iBAAiB,CAAC,GACrEqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,YAAY,CAAC,GACtFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,cAAc,CAAC,GACxFqmD,EAAM;AAAA,MACJ,IAAIzO,GAAW,IAAIgT,GAAkB,GAAE5qD,EAAM,kBAAkB,SAAU,CAAA,EAAE;AAAA,QACzEA,EAAM;AAAA,MACd;AAAA,IACK,GACDqmD,EAAM,KAAK,IAAIgD,GAAa,EAAG,OAAOrpD,EAAM,QAAQ,CAAC,GACrDqmD,EAAM,KAAK,IAAIzO,GAAW,IAAImQ,GAAY,GAAE/nD,EAAM,WAAW,EAAE,OAAOA,EAAM,MAAM,CAAC,GACnFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAIiR,GAAa,GAAE7oD,EAAM,YAAY,EAAE,OAAOA,EAAM,OAAO,CAAC,GACtFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAI2T,GAAc,GAAEvrD,EAAM,cAAc,EAAE,OAAOA,EAAM,SAAS,CAAC,GACpFksD,GAAQ7F,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMyqC,IAAuB1U;AAC7B,KAACA,GAAS/1B,CAAC,IAAI,IAAI4pC,GAAU,EAAG,OAAOlzB,GAAM1W,CAAC;AAC9C,UAAM2f,IAAOoW;AACb,KAACA,GAAS/1B,CAAC,IAAI,IAAI2pC,GAAgB,KAAK,EAAE,OAAOjzB,GAAM1W,CAAC;AACxD,UAAM0qC,IAAoB3U;AAC1B,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMunC,IAAcxR;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMmqC,IAAcpU;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMoqC,IAAerU;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMqqC,IAAiBtU;AACvB,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAIgT,GAAgB,GAAIkC,EAAkB,SAAU,CAAA,EAAE;AAAA,MAClFh0B;AAAA,MACA1W;AAAA,IACD;AACD,UAAM2qC,IAAe5U;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAIinC,GAAe,EAAC,OAAOvwB,GAAM1W,GAAGunC,CAAW;AAC9D,UAAMV,IAAW9Q;AACjB,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAImQ,GAAY,GAAEwE,CAAW,EAAE,OAAOzzB,GAAM1W,CAAC;AAC3E,UAAM67B,IAAS9F;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAIiR,GAAa,GAAE2D,CAAY,EAAE,OAAO1zB,GAAM1W,CAAC;AAC7E,UAAMuqC,IAAUxU;AAChB,YAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAI2T,GAAc,GAAEkB,CAAc,EAAE,OAAO3zB,GAAM1W,CAAC,GAEzE;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,sBAAAyqC;AAAA,QACA,aAAAlD;AAAA,QACA,mBAAAmD;AAAA,QACA,aAAAP;AAAA,QACA,cAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,MAAA1qB;AAAA,QACA,UAAAknB;AAAA,QACA,cAAA8D;AAAA,QACA,QAAA9O;AAAA,QACA,SAAA0O;AAAA,QACA,WAfcxU;AAAA,MAgBf;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA1EI9G,GAAO0B,IAAM,wBAAwB,GAFZA,SA6EzBgwC,MAAuBhwC,KAAA,cAAc8uC,GAAO;AAAA,EAI9C,cAAc;AACZ,UAAM,mBAAmB,0BAA0B,CAAC;AAAA,EACxD;AAAA,EACE,OAAO9rD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAIC,GAAc,EAAG,OAAOtmD,EAAM,SAAS,CAAC,GACvDqmD,EAAM,KAAK,IAAIkB,GAAkB,EAAG,OAAOvnD,EAAM,aAAa,CAAC,GAC/DqmD,EAAM,KAAK,IAAIkC,GAAmB,EAAG,OAAOvoD,EAAM,cAAc,CAAC,GACjEqmD,EAAM,KAAK,IAAI0F,GAAgB,KAAK,EAAE,OAAO/rD,EAAM,UAAU,CAAC,GAC9DqmD,EAAM,KAAK,IAAI2F,GAAU,EAAG,OAAOhsD,EAAM,WAAW,CAAC,GACrDqmD,EAAM,KAAK,IAAI0F,GAAgB,KAAK,EAAE,OAAO/rD,EAAM,QAAQ,CAAC,GACrDksD,GAAQ7F,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAIkkC,GAAc,EAAG,OAAOxtB,GAAM1W,CAAC;AAClD,UAAM6kC,IAAY9O;AAClB,KAACA,GAAS/1B,CAAC,IAAI,IAAImlC,GAAkB,EAAG,OAAOzuB,GAAM1W,CAAC;AACtD,UAAM6qC,IAAgB9U;AACtB,KAACA,GAAS/1B,CAAC,IAAI,IAAImmC,GAAmB,EAAG,OAAOzvB,GAAM1W,CAAC;AACvD,UAAM8qC,IAAiB/U;AACvB,KAACA,GAAS/1B,CAAC,IAAI,IAAI2pC,GAAgB,KAAK,EAAE,OAAOjzB,GAAM1W,CAAC;AACxD,UAAM+qC,IAAahV;AACnB,KAACA,GAAS/1B,CAAC,IAAI,IAAI4pC,GAAU,EAAG,OAAOlzB,GAAM1W,CAAC;AAC9C,UAAMgrC,IAAcjV;AACpB,YAACA,GAAS/1B,CAAC,IAAI,IAAI2pC,GAAgB,KAAK,EAAE,OAAOjzB,GAAM1W,CAAC,GAEjD;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,WAAA6kC;AAAA,QACA,eAAAgG;AAAA,QACA,gBAAAC;AAAA,QACA,YAAAC;AAAA,QACA,aAAAC;AAAA,QACA,UATajV;AAAA,MAUd;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA3CI9G,GAAO0B,IAAM,sBAAsB,GAFZA,SA8CvBqwC,MAA0BrwC,KAAA,cAAc8uC,GAAO;AAAA,EAIjD,cAAc;AACZ,UAAM,sBAAsB,6BAA6B,CAAC;AAAA,EAC9D;AAAA,EACE,OAAO9rD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAI4E,GAAmB,EAAG,OAAOjrD,EAAM,cAAc,CAAC,GACjEqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,YAAY,CAAC,GACtFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,cAAc,CAAC,GACxFqmD,EAAM,KAAK,IAAIgD,GAAa,EAAG,OAAOrpD,EAAM,QAAQ,CAAC,GACrDqmD,EAAM,KAAK,IAAIzO,GAAW,IAAImQ,GAAY,GAAE/nD,EAAM,WAAW,EAAE,OAAOA,EAAM,MAAM,CAAC,GACnFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAIiR,GAAa,GAAE7oD,EAAM,YAAY,EAAE,OAAOA,EAAM,OAAO,CAAC,GACtFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAI2T,GAAc,GAAEvrD,EAAM,cAAc,EAAE,OAAOA,EAAM,SAAS,CAAC,GACpFksD,GAAQ7F,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAI6oC,GAAmB,EAAG,OAAOnyB,GAAM1W,CAAC;AACvD,UAAMkrC,IAAiBnV;AACvB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMunC,IAAcxR;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMmqC,IAAcpU;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMoqC,IAAerU;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMqqC,IAAiBtU;AACvB,KAACA,GAAS/1B,CAAC,IAAI,IAAIinC,GAAe,EAAC,OAAOvwB,GAAM1W,GAAGunC,CAAW;AAC9D,UAAMV,IAAW9Q;AACjB,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAImQ,GAAY,GAAEwE,CAAW,EAAE,OAAOzzB,GAAM1W,CAAC;AAC3E,UAAM67B,IAAS9F;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAIiR,GAAa,GAAE2D,CAAY,EAAE,OAAO1zB,GAAM1W,CAAC;AAC7E,UAAMuqC,IAAUxU;AAChB,YAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAI2T,GAAc,GAAEkB,CAAc,EAAE,OAAO3zB,GAAM1W,CAAC,GAEzE;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,gBAAAkrC;AAAA,QACA,aAAA3D;AAAA,QACA,aAAA4C;AAAA,QACA,cAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,UAAAxD;AAAA,QACA,QAAAhL;AAAA,QACA,SAAA0O;AAAA,QACA,WAZcxU;AAAA,MAaf;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GAvDI9G,GAAO0B,IAAM,yBAAyB,GAFZA,SA0D1BuwC,MAAyBvwC,KAAA,cAAc8uC,GAAO;AAAA,EAIhD,cAAc;AACZ,UAAM,qBAAqB,4BAA4B,CAAC;AAAA,EAC5D;AAAA,EACE,OAAO9rD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAI2F,GAAU,EAAG,OAAOhsD,EAAM,IAAI,CAAC,GAC9CqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,YAAY,CAAC,GACtFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,eAAe,CAAC,GACzFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,iBAAiB,CAAC,GAC3FqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,aAAa,CAAC,GACvFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,YAAY,CAAC,GACtFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,cAAc,CAAC,GACxFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAIoU,GAAY,GAAEhsD,EAAM,aAAa,EAAE,OAAOA,EAAM,QAAQ,CAAC,GACvFqmD,EAAM,KAAK,IAAIgD,GAAa,EAAG,OAAOrpD,EAAM,QAAQ,CAAC,GACrDqmD,EAAM,KAAK,IAAIzO,GAAW,IAAImQ,GAAY,GAAE/nD,EAAM,WAAW,EAAE,OAAOA,EAAM,MAAM,CAAC,GACnFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAIiR,GAAa,GAAE7oD,EAAM,YAAY,EAAE,OAAOA,EAAM,OAAO,CAAC,GACtFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAI2T,GAAc,GAAEvrD,EAAM,cAAc,EAAE,OAAOA,EAAM,SAAS,CAAC,GACpFksD,GAAQ7F,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAI4pC,GAAU,EAAG,OAAOlzB,GAAM1W,CAAC;AAC9C,UAAMorC,IAAOrV;AACb,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAM8kC,IAAe/O;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMqrC,IAAkBtV;AACxB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMsrC,IAAoBvV;AAC1B,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMurC,IAAgBxV;AACtB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMunC,IAAcxR;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMmqC,IAAcpU;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMoqC,IAAerU;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMqqC,IAAiBtU;AACvB,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAIoU,GAAY,GAAE2B,CAAa,EAAE,OAAO70B,GAAM1W,CAAC;AAC7E,UAAMwrC,IAAWzV;AACjB,KAACA,GAAS/1B,CAAC,IAAI,IAAIinC,GAAe,EAAC,OAAOvwB,GAAM1W,GAAGunC,CAAW;AAC9D,UAAMV,IAAW9Q;AACjB,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAImQ,GAAY,GAAEwE,CAAW,EAAE,OAAOzzB,GAAM1W,CAAC;AAC3E,UAAM67B,IAAS9F;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAIiR,GAAa,GAAE2D,CAAY,EAAE,OAAO1zB,GAAM1W,CAAC;AAC7E,UAAMuqC,IAAUxU;AAChB,YAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAI2T,GAAc,GAAEkB,CAAc,EAAE,OAAO3zB,GAAM1W,CAAC,GAEzE;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,MAAAorC;AAAA,QACA,cAAAtG;AAAA,QACA,iBAAAuG;AAAA,QACA,mBAAAC;AAAA,QACA,eAAAC;AAAA,QACA,aAAAhE;AAAA,QACA,aAAA4C;AAAA,QACA,cAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,UAAAmB;AAAA,QACA,UAAA3E;AAAA,QACA,QAAAhL;AAAA,QACA,SAAA0O;AAAA,QACA,WAjBcxU;AAAA,MAkBf;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA3EI9G,GAAO0B,IAAM,wBAAwB,GAFZA,SA8EzB6wC,MAAuB7wC,KAAA,cAAc8uC,GAAO;AAAA,EAI9C,cAAc;AACZ,UAAM,mBAAmB,0BAA0B,CAAC;AAAA,EACxD;AAAA,EACE,OAAO9rD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,WAAAA,EAAM,KAAK,IAAI2F,GAAU,EAAG,OAAOhsD,EAAM,MAAM,CAAC,GAChDqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,YAAY,CAAC,GACtFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,WAAW,CAAC,GACrFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,YAAY,CAAC,GACtFqmD,EAAM,KAAK,IAAI4F,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,cAAc,CAAC,GACxFqmD,EAAM,KAAK,IAAIgD,GAAa,EAAG,OAAOrpD,EAAM,QAAQ,CAAC,GACrDqmD,EAAM,KAAK,IAAIzO,GAAW,IAAImQ,GAAY,GAAE/nD,EAAM,WAAW,EAAE,OAAOA,EAAM,MAAM,CAAC,GACnFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAIiR,GAAa,GAAE7oD,EAAM,YAAY,EAAE,OAAOA,EAAM,OAAO,CAAC,GACtFqmD,EAAM,KAAK,IAAIzO,GAAW,IAAI2T,GAAc,GAAEvrD,EAAM,cAAc,EAAE,OAAOA,EAAM,SAAS,CAAC,GACpFksD,GAAQ7F,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAI4pC,GAAU,EAAG,OAAOlzB,GAAM1W,CAAC;AAC9C,UAAM0rC,IAAS3V;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAM8kC,IAAe/O;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMunC,IAAcxR;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMmqC,IAAcpU;AACpB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMoqC,IAAerU;AACrB,KAACA,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,OAAO,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC9E,UAAMqqC,IAAiBtU;AACvB,KAACA,GAAS/1B,CAAC,IAAI,IAAIinC,GAAe,EAAC,OAAOvwB,GAAM1W,GAAGunC,CAAW;AAC9D,UAAMV,IAAW9Q;AACjB,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAImQ,GAAY,GAAEwE,CAAW,EAAE,OAAOzzB,GAAM1W,CAAC;AAC3E,UAAM67B,IAAS9F;AACf,KAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAIiR,GAAa,GAAE2D,CAAY,EAAE,OAAO1zB,GAAM1W,CAAC;AAC7E,UAAMuqC,IAAUxU;AAChB,YAACA,GAAS/1B,CAAC,IAAI,IAAIw1B,GAAW,IAAI2T,GAAc,GAAEkB,CAAc,EAAE,OAAO3zB,GAAM1W,CAAC,GAEzE;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,QAAA0rC;AAAA,QACA,cAAA5G;AAAA,QACA,aAAAyC;AAAA,QACA,aAAA4C;AAAA,QACA,cAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,UAAAxD;AAAA,QACA,QAAAhL;AAAA,QACA,SAAA0O;AAAA,QACA,WAbcxU;AAAA,MAcf;AAAA,MACD/1B;AAAA,IACD;AAAA,EACL;AACA,GA3DI9G,GAAO0B,IAAM,sBAAsB,GAFZA,SA8DvB+wC,MAAmB/wC,KAAA,cAAc8uC,GAAO;AAAA,EAI1C,cAAc;AACZ,UAAM,eAAe,sBAAsB,CAAC;AAAA,EAChD;AAAA,EACE,OAAO9rD,GAAO;AACZ,UAAMqmD,IAAQ,CAAE;AAChB,IAAAA,EAAM,KAAK,IAAI4F,EAAa,MAAM,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOjsD,EAAM,IAAI,CAAC;AAC7E,UAAM,EAAE,MAAA2xB,EAAI,IAAK3xB;AACjB,YAAQA,EAAM,MAAI;AAAA,MAChB,KAAK,GAAgB;AACnB,QAAAqmD,EAAM;AAAA,UACJ,IAAIwF,GAAsB,EAAG,OAAO7rD,CAAK;AAAA,QAC1C;AACD;AAAA,MACR;AAAA,MACM,KAAK,GAAgB;AACnB,QAAAqmD,EAAM;AAAA,UACJ,IAAIuG,GAAsB,EAAG,OAAO5sD,CAAK;AAAA,QAC1C;AACD;AAAA,MACR;AAAA,MACM,KAAK,GAAc;AACjB,QAAAqmD,EAAM,KAAK,IAAI2G,GAAsB,EAAC,OAAOhtD,CAAK,CAAC;AACnD;AAAA,MACR;AAAA,MACM,KAAK,GAAiB;AACpB,QAAAqmD,EAAM;AAAA,UACJ,IAAIgH,GAAuB,EAAG,OAAOrtD,CAAK;AAAA,QAC3C;AACD;AAAA,MACR;AAAA,MACM,KAAK,GAAgB;AACnB,QAAAqmD,EAAM;AAAA,UACJ,IAAIkH,GAAsB,EAAG,OAAOvtD,CAAK;AAAA,QAC1C;AACD;AAAA,MACR;AAAA,MACM,KAAK,GAAc;AACjB,QAAAqmD,EAAM,KAAK,IAAIwH,GAAsB,EAAC,OAAO7tD,CAAK,CAAC;AACnD;AAAA,MACR;AAAA,MACM;AACE,cAAM,IAAIk5C;AAAAA,UACRC,EAAW;AAAA,UACX,iCAAiCxnB,CAAI;AAAA,QACtC;AAAA,IAET;AACI,WAAOu6B,GAAQ7F,CAAK;AAAA,EACxB;AAAA,EACE,OAAOvtB,GAAMp3B,GAAQ;AACnB,QAAIy2C,GACA/1B,IAAI1gB;AACR,KAACy2C,GAAS/1B,CAAC,IAAI,IAAI6pC,EAAa,MAAM,EAAE,eAAe,GAAI,CAAE,EAAE,OAAOnzB,GAAM1W,CAAC;AAC7E,UAAMuP,IAAOwmB;AACb,YAAQxmB,GAAI;AAAA,MACV,KAAK;AACH,gBAACwmB,GAAS/1B,CAAC,IAAI,IAAIypC,GAAsB,EAAG,OAAO/yB,GAAM1W,CAAC,GACnD,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAIwqC,GAAsB,EAAG,OAAO9zB,GAAM1W,CAAC,GACnD,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAI4qC,GAAoB,EAAG,OAAOl0B,GAAM1W,CAAC,GACjD,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAIirC,GAAuB,EAAG,OAAOv0B,GAAM1W,CAAC,GACpD,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAImrC,GAAsB,EAAG,OAAOz0B,GAAM1W,CAAC,GACnD,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB,KAAK;AACH,gBAAC+1B,GAAS/1B,CAAC,IAAI,IAAIyrC,GAAoB,EAAG,OAAO/0B,GAAM1W,CAAC,GACjD,CAAC+1B,GAAS/1B,CAAC;AAAA,MAEpB;AACE,cAAM,IAAI82B;AAAAA,UACRC,EAAW;AAAA,UACX,iCAAiCxnB,CAAI;AAAA,QACtC;AAAA,IAET;AAAA,EACA;AACA,GAzFIrW,GAAO0B,IAAM,kBAAkB,GAFZA,SA+FnBgxC,MAAchxC,KAAA,cAAcixC,GAAa;AAAA,EAI3C,cAAc;AACZ,UAAM,UAAU;AAAA,MACd,eAAe,IAAIC,GAAY;AAAA,MAC/B,aAAa,IAAIC,EAAa,OAAO,EAAE,eAAe,GAAM,CAAA;AAAA,IAClE,CAAK;AAAA,EACL;AACA,GARI7yC,GAAO0B,IAAM,aAAa,GAFZA;ACj2CH,SAASoxC,GAAensD,GAAG;AACxC,SAAOA,KAAK,QAAQ,OAAOA,KAAM,YAAYA,EAAE,0BAA0B,MAAM;AACjF;ACQe,SAASosD,GAAQ91B,GAAI;AAClC,SAAO,SAAS+1B,EAAGrsD,GAAG;AACpB,WAAI,UAAU,WAAW,KAAKmsD,GAAensD,CAAC,IACrCqsD,IAEA/1B,EAAG,MAAM,MAAM,SAAS;AAAA,EAElC;AACH;ACWA,IAAI5G,KAAoB,gBAAA08B,GAAQ,SAAcnoD,GAAK;AACjD,SAAOA,MAAQ,OAAO,SAASA,MAAQ,SAAY,cAAc,OAAO,UAAU,SAAS,KAAKA,CAAG,EAAE,MAAM,GAAG,EAAE;AAClH,CAAC;AC/Bc,SAASqoD,GAAaC,GAAS;AAC5C,SAAO,IAAI,OAAOA,EAAQ,QAAQA,EAAQ,QAAQA,EAAQ,SAASA,EAAQ,SAAS,MAAM,OAAOA,EAAQ,aAAa,MAAM,OAAOA,EAAQ,YAAY,MAAM,OAAOA,EAAQ,SAAS,MAAM,OAAOA,EAAQ,UAAU,MAAM,OAAOA,EAAQ,SAAS,MAAM,GAAG;AAC7P;ACSe,SAASC,GAAOzuD,GAAO0uD,GAAMC,GAAK;AAI/C,MAHAA,MAAQA,IAAM,IAAIC,OAGdC,GAAa7uD,CAAK;AACpB,WAAOA;AAET,MAAI65B,IAAO,SAAci1B,GAAa;AAEpC,QAAIC,IAAaJ,EAAI,IAAI3uD,CAAK;AAC9B,QAAI+uD;AACF,aAAOA;AAET,IAAAJ,EAAI,IAAI3uD,GAAO8uD,CAAW;AAC1B,aAAS/tB,KAAO/gC;AACd,MAAI,OAAO,UAAU,eAAe,KAAKA,GAAO+gC,CAAG,MACjD+tB,EAAY/tB,CAAG,IAAW0tB,GAAOzuD,EAAM+gC,CAAG,GAAG,IAAM4tB,CAAG;AAG1D,WAAOG;AAAA,EACR;AACD,UAAQn9B,GAAK3xB,CAAK,GAAC;AAAA,IACjB,KAAK;AACH,aAAO65B,EAAK,OAAO,OAAO,OAAO,eAAe75B,CAAK,CAAC,CAAC;AAAA,IACzD,KAAK;AACH,aAAO65B,EAAK,MAAM75B,EAAM,MAAM,CAAC;AAAA,IACjC,KAAK;AACH,aAAO,IAAI,KAAKA,EAAM,SAAS;AAAA,IACjC,KAAK;AACH,aAAOuuD,GAAavuD,CAAK;AAAA,IAC3B,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAOA,EAAM,MAAO;AAAA,IACtB;AACE,aAAOA;AAAA,EACb;AACA;AACA,SAAS6uD,GAAaG,GAAO;AAC3B,MAAIr9B,IAAO,OAAOq9B;AAClB,SAAOA,KAAS,QAAQr9B,KAAQ,YAAYA,KAAQ;AACtD;AACA,IAAIi9B,KAA0B,2BAAY;AACxC,WAASA,IAAa;AACpB,SAAK,MAAM,CAAE,GACb,KAAK,SAAS;AAAA,EAClB;AACE,SAAAA,EAAW,UAAU,MAAM,SAAU7tB,GAAK/gC,GAAO;AAC/C,QAAIivD,IAAY,KAAK,KAAKluB,CAAG,GACzBmuB,IAAS,KAAK,IAAID,CAAS;AAC/B,IAAKC,MACH,KAAK,IAAID,CAAS,IAAIC,IAAS,CAAE,IAEnCA,EAAO,KAAK,CAACnuB,GAAK/gC,CAAK,CAAC,GACxB,KAAK,UAAU;AAAA,EAChB,GACD4uD,EAAW,UAAU,OAAO,SAAU7tB,GAAK;AACzC,QAAIkuB,IAAY,CAAE;AAClB,aAASjvD,KAAS+gC;AAChB,MAAAkuB,EAAU,KAAK,OAAO,UAAU,SAAS,KAAKluB,EAAI/gC,CAAK,CAAC,CAAC;AAE3D,WAAOivD,EAAU,KAAM;AAAA,EACxB,GACDL,EAAW,UAAU,MAAM,SAAU7tB,GAAK;AAKxC,QAAI,KAAK,UAAU,KAAK;AACtB,eAASnY,KAAK,KAAK;AAEjB,iBADIsmC,IAAS,KAAK,IAAItmC,CAAC,GACd9N,IAAI,GAAGA,IAAIo0C,EAAO,QAAQp0C,KAAK,GAAG;AACzC,cAAIq0C,IAAUD,EAAOp0C,CAAC;AACtB,cAAIq0C,EAAQ,CAAC,MAAMpuB;AACjB,mBAAOouB,EAAQ,CAAC;AAAA,QAE5B;AAEM;AAAA,IACN;AACI,QAAIF,IAAY,KAAK,KAAKluB,CAAG,GACzBmuB,IAAS,KAAK,IAAID,CAAS;AAC/B,QAAKC;AAGL,eAASp0C,IAAI,GAAGA,IAAIo0C,EAAO,QAAQp0C,KAAK,GAAG;AACzC,YAAIq0C,IAAUD,EAAOp0C,CAAC;AACtB,YAAIq0C,EAAQ,CAAC,MAAMpuB;AACjB,iBAAOouB,EAAQ,CAAC;AAAA,MAExB;AAAA,EACG,GACMP;AACT,EAAG,GClFCQ,KAAqB,gBAAAf,GAAQ,SAAeruD,GAAO;AACrD,SAAOA,KAAS,QAAQ,OAAOA,EAAM,SAAU,aAAaA,EAAM,MAAK,IAAKyuD,GAAOzuD,CAAW;AAChG,CAAC;AChCM,MAAMqvD,KAAwB,MCAxBC,KAAY,CAAC/vC,MAAQA,EAAI,YAAa,GAItCgwC,KAA+B,CAACC,MAAY;AACrD,QAAMptC,IAAI,CAAE;AACZ,SAAAotC,EAAQ,QAAQ,CAAC1zC,GAAGiG,MAAM;AACtB,IAAAK,EAAEL,CAAC,IAAIjG;AAAA,EACf,CAAK,GACMsG;AACX,GCVaqtC,KAAmB,CAACC,GAAmBC,GAAWC,MACpDF,EAAkB,WACnBA,IACA;AAAA,EACE,UAAUA;AAAA,EACV,WAAWC;AAAA,EACX,gBAAgBC;AAAA,EAChB,QAAQ;AACX,GAEIC,KAAsB,CAACC,GAAgBH,GAAWC,MACpDE,EAAe,QAChBA,IACA;AAAA,EACE,OAAOA;AAAA,EACP,WAAWH;AAAA,EACX,gBAAgBC;AAAA,EAChB,QAAQ;AACX,GAEIG,KAAwB,CAACC,GAAoBJ,MAC/CI,EAAmB,YACpBA,IACA;AAAA,EACE,WAAWA;AAAA,EACX,gBAAgBJ;AAAA,EAChB,QAAQ;AACX;AC3BF,SAASK,GAAUC,GAAWhzC,GAAS;AAG5C,MAAI,CAFqB,EAAQgzC;AAG/B,UAAM,IAAI,MAAMhzC,CAAO;AAE3B;ACFO,SAASizC,GAAanwD,GAAO;AAClC,SAAO,OAAOA,KAAS,YAAYA,MAAU;AAC/C;ACNO,SAASowD,GAAUF,GAAWhzC,GAAS;AAG5C,MAAI,CAFqB,EAAQgzC;AAG/B,UAAM,IAAI;AAAA,MACoB;AAAA,IAC7B;AAEL;ACPA,MAAMG,KAAa;AASZ,SAASC,GAAYC,GAAQtvC,GAAU;AAC5C,MAAIuvC,IAAgB,GAChBC,IAAO;AAEX,aAAW91B,KAAS41B,EAAO,KAAK,SAASF,EAAU,GAAG;AAGpD,QAFA,OAAO11B,EAAM,SAAU,YAAYy1B,GAAU,EAAK,GAE9Cz1B,EAAM,SAAS1Z;AACjB;AAGF,IAAAuvC,IAAgB71B,EAAM,QAAQA,EAAM,CAAC,EAAE,QACvC81B,KAAQ;AAAA,EACZ;AAEE,SAAO;AAAA,IACL,MAAAA;AAAA,IACA,QAAQxvC,IAAW,IAAIuvC;AAAA,EACxB;AACH;ACxBO,SAASE,GAAcC,GAAU;AACtC,SAAOC;AAAA,IACLD,EAAS;AAAA,IACTL,GAAYK,EAAS,QAAQA,EAAS,KAAK;AAAA,EAC5C;AACH;AAKO,SAASC,GAAoBL,GAAQM,GAAgB;AAC1D,QAAMC,IAAwBP,EAAO,eAAe,SAAS,GACvDQ,IAAO,GAAG,SAASD,CAAqB,IAAIP,EAAO,MACnDS,IAAYH,EAAe,OAAO,GAClCI,IAAaV,EAAO,eAAe,OAAO,GAC1CW,IAAUL,EAAe,OAAOI,GAChCE,IAAeN,EAAe,SAAS,IAAIC,IAAwB,GACnEM,IAAYP,EAAe,SAASM,GACpCE,IAAc,GAAGd,EAAO,IAAI,IAAIW,CAAO,IAAIE,CAAS;AAAA,GACpDE,IAAQP,EAAK,MAAM,cAAc,GACjCQ,IAAeD,EAAMN,CAAS;AAEpC,MAAIO,EAAa,SAAS,KAAK;AAC7B,UAAMC,IAAe,KAAK,MAAMJ,IAAY,EAAE,GACxCK,IAAmBL,IAAY,IAC/BM,IAAW,CAAE;AAEnB,aAAS52C,IAAI,GAAGA,IAAIy2C,EAAa,QAAQz2C,KAAK;AAC5C,MAAA42C,EAAS,KAAKH,EAAa,MAAMz2C,GAAGA,IAAI,EAAE,CAAC;AAG7C,WACEu2C,IACAM,GAAmB;AAAA,MACjB,CAAC,GAAGT,CAAO,MAAMQ,EAAS,CAAC,CAAC;AAAA,MAC5B,GAAGA,EAAS,MAAM,GAAGF,IAAe,CAAC,EAAE,IAAI,CAACI,MAAY,CAAC,KAAKA,CAAO,CAAC;AAAA,MACtE,CAAC,KAAK,IAAI,SAASH,CAAgB,CAAC;AAAA,MACpC,CAAC,KAAKC,EAASF,IAAe,CAAC,CAAC;AAAA,IACjC,CAAA;AAAA,EAEP;AAEE,SACEH,IACAM,GAAmB;AAAA;AAAA,IAEjB,CAAC,GAAGT,IAAU,CAAC,MAAMI,EAAMN,IAAY,CAAC,CAAC;AAAA,IACzC,CAAC,GAAGE,CAAO,MAAMK,CAAY;AAAA,IAC7B,CAAC,KAAK,IAAI,SAASH,CAAS,CAAC;AAAA,IAC7B,CAAC,GAAGF,IAAU,CAAC,MAAMI,EAAMN,IAAY,CAAC,CAAC;AAAA,EAC1C,CAAA;AAEL;AAEA,SAASW,GAAmBL,GAAO;AACjC,QAAMO,IAAgBP,EAAM,OAAO,CAAC,CAACzyB,GAAG4xB,CAAI,MAAMA,MAAS,MAAS,GAC9DqB,IAAS,KAAK,IAAI,GAAGD,EAAc,IAAI,CAAC,CAACzS,CAAM,MAAMA,EAAO,MAAM,CAAC;AACzE,SAAOyS,EACJ,IAAI,CAAC,CAACzS,GAAQqR,CAAI,MAAMrR,EAAO,SAAS0S,CAAM,KAAKrB,IAAO,MAAMA,IAAO,GAAG,EAC1E,KAAK;AAAA,CAAI;AACd;AC1DA,SAASsB,GAAoB70D,GAAM;AACjC,QAAM80D,IAAW90D,EAAK,CAAC;AAEvB,SAAI80D,KAAY,QAAQ,UAAUA,KAAY,YAAYA,IACjD;AAAA,IACL,OAAOA;AAAA,IACP,QAAQ90D,EAAK,CAAC;AAAA,IACd,WAAWA,EAAK,CAAC;AAAA,IACjB,MAAMA,EAAK,CAAC;AAAA,IACZ,eAAeA,EAAK,CAAC;AAAA,IACrB,YAAYA,EAAK,CAAC;AAAA,EACnB,IAGI80D;AACT;AAQO,MAAMC,WAAqB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8CtC,YAAY/0C,MAAYg1C,GAAS;AAC/B,QAAIC,GAAaC,GAAiBC;AAElC,UAAM,EAAE,OAAAC,GAAO,QAAA/B,GAAQ,WAAAgC,GAAW,MAAAC,GAAM,eAAAC,GAAe,YAAAC,EAAY,IACjEX,GAAoBG,CAAO;AAC7B,UAAMh1C,CAAO,GACb,KAAK,OAAO,gBACZ,KAAK,OAAOs1C,KAA0C,QACtD,KAAK,gBACHC,KAEI,QAEN,KAAK,QAAQE;AAAA,MACX,MAAM,QAAQL,CAAK,IAAIA,IAAQA,IAAQ,CAACA,CAAK,IAAI;AAAA,IAClD;AACD,UAAMM,IAAgBD;AAAA,OACnBR,IAAc,KAAK,WAAW,QAAQA,MAAgB,SACnD,SACAA,EAAY,IAAI,CAACxa,MAASA,EAAK,GAAG,EAAE,OAAO,CAACkb,MAAQA,KAAO,IAAI;AAAA,IACzE;AAEI,SAAK,SACHtC,MAEIqC,KAAkB,SAEjBR,IAAkBQ,EAAc,CAAC,OAAO,QACzCR,MAAoB,SAFpB,SAIAA,EAAgB,SACtB,KAAK,YACHG,MAEIK,KAAkB,OAClB,SACAA,EAAc,IAAI,CAACC,MAAQA,EAAI,KAAK,IAC1C,KAAK,YACHN,KAAahC,IACTgC,EAAU,IAAI,CAAClhC,MAAQi/B,GAAYC,GAAQl/B,CAAG,CAAC,IAC/CuhC,KAAkB,OAClB,SACAA,EAAc,IAAI,CAACC,MAAQvC,GAAYuC,EAAI,QAAQA,EAAI,KAAK,CAAC;AACnE,UAAMC,IAAqB3C;AAAA,MACzBsC,KAAkB,OACd,SACAA,EAAc;AAAA,IACxB,IACQA,KAAkB,OAChB,SACAA,EAAc,aAChB;AACJ,SAAK,cACFJ,IACCK,KAEII,OAAwB,QAAQT,MAAS,SAC3CA,IACA,uBAAO,OAAO,IAAI,GAGxB,OAAO,iBAAiB,MAAM;AAAA,MAC5B,SAAS;AAAA,QACP,UAAU;AAAA,QACV,YAAY;AAAA,MACb;AAAA,MACD,MAAM;AAAA,QACJ,YAAY;AAAA,MACb;AAAA,MACD,OAAO;AAAA,QACL,YAAY;AAAA,MACb;AAAA,MACD,QAAQ;AAAA,QACN,YAAY;AAAA,MACb;AAAA,MACD,WAAW;AAAA,QACT,YAAY;AAAA,MACb;AAAA,MACD,eAAe;AAAA,QACb,YAAY;AAAA,MACb;AAAA,IACP,CAAK,GAMCI,KAAkB,QAElBA,EAAc,QAEd,OAAO,eAAe,MAAM,SAAS;AAAA,MACnC,OAAOA,EAAc;AAAA,MACrB,UAAU;AAAA,MACV,cAAc;AAAA,IACtB,CAAO,IACQ,MAAM,oBACf,MAAM,kBAAkB,MAAMR,EAAY,IAE1C,OAAO,eAAe,MAAM,SAAS;AAAA,MACnC,OAAO,MAAK,EAAG;AAAA,MACf,UAAU;AAAA,MACV,cAAc;AAAA,IACtB,CAAO;AAAA,EAGP;AAAA,EAEE,KAAK,OAAO,WAAW,IAAI;AACzB,WAAO;AAAA,EACX;AAAA,EAEE,WAAW;AACT,QAAI9nC,IAAS,KAAK;AAElB,QAAI,KAAK;AACP,iBAAWwtB,KAAQ,KAAK;AACtB,QAAIA,EAAK,QACPxtB,KAAU;AAAA;AAAA,IAASumC,GAAc/Y,EAAK,GAAG;AAAA,aAGpC,KAAK,UAAU,KAAK;AAC7B,iBAAWgZ,KAAY,KAAK;AAC1B,QAAAxmC,KAAU;AAAA;AAAA,IAASymC,GAAoB,KAAK,QAAQD,CAAQ;AAIhE,WAAOxmC;AAAA,EACX;AAAA,EAEE,SAAS;AACP,UAAM4oC,IAAiB;AAAA,MACrB,SAAS,KAAK;AAAA,IACf;AAED,WAAI,KAAK,aAAa,SACpBA,EAAe,YAAY,KAAK,YAG9B,KAAK,QAAQ,SACfA,EAAe,OAAO,KAAK,OAGzB,KAAK,cAAc,QAAQ,OAAO,KAAK,KAAK,UAAU,EAAE,SAAS,MACnEA,EAAe,aAAa,KAAK,aAG5BA;AAAA,EACX;AACA;AAEA,SAASJ,GAAiB14B,GAAO;AAC/B,SAAOA,MAAU,UAAaA,EAAM,WAAW,IAAI,SAAYA;AACjE;AC/NO,SAAS+4B,GAAYzC,GAAQtvC,GAAUgyC,GAAa;AACzD,SAAO,IAAIhB,GAAa,iBAAiBgB,CAAW,IAAI;AAAA,IACtD,QAAA1C;AAAA,IACA,WAAW,CAACtvC,CAAQ;AAAA,EACxB,CAAG;AACH;ACPO,MAAMiyC,GAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBpB,YAAYC,GAAYC,GAAU7C,GAAQ;AACxC,SAAK,QAAQ4C,EAAW,OACxB,KAAK,MAAMC,EAAS,KACpB,KAAK,aAAaD,GAClB,KAAK,WAAWC,GAChB,KAAK,SAAS7C;AAAA,EAClB;AAAA,EAEE,KAAK,OAAO,WAAW,IAAI;AACzB,WAAO;AAAA,EACX;AAAA,EAEE,SAAS;AACP,WAAO;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,KAAK,KAAK;AAAA,IACX;AAAA,EACL;AACA;AAMO,MAAM8C,GAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiCjB,YAAYC,GAAM30C,GAAOa,GAAKixC,GAAM8C,GAAQvzD,GAAO;AACjD,SAAK,OAAOszD,GACZ,KAAK,QAAQ30C,GACb,KAAK,MAAMa,GACX,KAAK,OAAOixC,GACZ,KAAK,SAAS8C,GAEd,KAAK,QAAQvzD,GACb,KAAK,OAAO,MACZ,KAAK,OAAO;AAAA,EAChB;AAAA,EAEE,KAAK,OAAO,WAAW,IAAI;AACzB,WAAO;AAAA,EACX;AAAA,EAEE,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,IACd;AAAA,EACL;AACA;AAQO,MAAMwzD,KAAoB;AAAA,EAC/B,MAAM,CAAE;AAAA,EACR,UAAU,CAAC,aAAa;AAAA,EACxB,qBAAqB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACD,oBAAoB,CAAC,YAAY,QAAQ,gBAAgB,YAAY;AAAA,EACrE,UAAU,CAAC,MAAM;AAAA,EACjB,cAAc,CAAC,YAAY;AAAA,EAC3B,OAAO,CAAC,SAAS,QAAQ,aAAa,cAAc,cAAc;AAAA,EAClE,UAAU,CAAC,QAAQ,OAAO;AAAA,EAC1B,gBAAgB,CAAC,QAAQ,YAAY;AAAA,EACrC,gBAAgB,CAAC,iBAAiB,cAAc,cAAc;AAAA,EAC9D,oBAAoB;AAAA,IAClB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACD,UAAU,CAAE;AAAA,EACZ,YAAY,CAAE;AAAA,EACd,aAAa,CAAE;AAAA,EACf,cAAc,CAAE;AAAA,EAChB,WAAW,CAAE;AAAA,EACb,WAAW,CAAE;AAAA,EACb,WAAW,CAAC,QAAQ;AAAA,EACpB,aAAa,CAAC,QAAQ;AAAA,EACtB,aAAa,CAAC,QAAQ,OAAO;AAAA,EAC7B,WAAW,CAAC,QAAQ,WAAW;AAAA,EAC/B,WAAW,CAAC,MAAM;AAAA,EAClB,UAAU,CAAC,MAAM;AAAA,EACjB,aAAa,CAAC,MAAM;AAAA,EACpB,kBAAkB,CAAC,eAAe,cAAc,gBAAgB;AAAA,EAChE,yBAAyB,CAAC,MAAM;AAAA,EAChC,sBAAsB,CAAC,eAAe,QAAQ,YAAY;AAAA,EAC1D,sBAAsB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACD,iBAAiB,CAAC,eAAe,QAAQ,aAAa,QAAQ,YAAY;AAAA,EAC1E,sBAAsB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACD,yBAAyB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACD,qBAAqB,CAAC,eAAe,QAAQ,cAAc,OAAO;AAAA,EAClE,oBAAoB,CAAC,eAAe,QAAQ,cAAc,QAAQ;AAAA,EAClE,qBAAqB,CAAC,eAAe,QAAQ,YAAY;AAAA,EACzD,2BAA2B,CAAC,eAAe,QAAQ,cAAc,QAAQ;AAAA,EACzE,qBAAqB,CAAC,eAAe,QAAQ,aAAa,WAAW;AAAA,EACrE,iBAAiB,CAAC,cAAc,gBAAgB;AAAA,EAChD,qBAAqB,CAAC,QAAQ,YAAY;AAAA,EAC1C,qBAAqB,CAAC,QAAQ,cAAc,cAAc,QAAQ;AAAA,EAClE,wBAAwB,CAAC,QAAQ,cAAc,cAAc,QAAQ;AAAA,EACrE,oBAAoB,CAAC,QAAQ,cAAc,OAAO;AAAA,EAClD,mBAAmB,CAAC,QAAQ,cAAc,QAAQ;AAAA,EAClD,0BAA0B,CAAC,QAAQ,cAAc,QAAQ;AAC3D,GACMC,KAAa,IAAI,IAAI,OAAO,KAAKD,EAAiB,CAAC;AAKlD,SAAS74C,GAAO+4C,GAAW;AAChC,QAAMC,IACJD,KAAc,OAA+B,SAASA,EAAU;AAClE,SAAO,OAAOC,KAAc,YAAYF,GAAW,IAAIE,CAAS;AAClE;AAGA,IAAIC;AAAA,CAEH,SAAUA,GAAmB;AAC5B,EAAAA,EAAkB,QAAW,SAC7BA,EAAkB,WAAc,YAChCA,EAAkB,eAAkB;AACtC,GAAGA,OAAsBA,KAAoB,CAAA,EAAG;AC1MhD,IAAIC;AAAA,CAEH,SAAUA,GAAmB;AAC5B,EAAAA,EAAkB,QAAW,SAC7BA,EAAkB,WAAc,YAChCA,EAAkB,eAAkB,gBACpCA,EAAkB,QAAW,SAC7BA,EAAkB,sBAAyB,uBAC3CA,EAAkB,kBAAqB,mBACvCA,EAAkB,kBAAqB,mBACvCA,EAAkB,sBAAyB,uBAC3CA,EAAkB,SAAY,UAC9BA,EAAkB,SAAY,UAC9BA,EAAkB,SAAY,UAC9BA,EAAkB,mBAAsB,oBACxCA,EAAkB,sBAAyB,uBAC3CA,EAAkB,YAAe,aACjCA,EAAkB,QAAW,SAC7BA,EAAkB,OAAU,QAC5BA,EAAkB,aAAgB,cAClCA,EAAkB,eAAkB,gBACpCA,EAAkB,yBAA4B;AAChD,GAAGA,OAAsBA,KAAoB,CAAA,EAAG;ACtBhD,IAAIC;AAAA,CAEH,SAAUA,GAAM;AACf,EAAAA,EAAK,OAAU,QACfA,EAAK,WAAc,YACnBA,EAAK,uBAA0B,uBAC/BA,EAAK,sBAAyB,sBAC9BA,EAAK,gBAAmB,gBACxBA,EAAK,QAAW,SAChBA,EAAK,WAAc,YACnBA,EAAK,kBAAqB,kBAC1BA,EAAK,kBAAqB,kBAC1BA,EAAK,sBAAyB,sBAC9BA,EAAK,WAAc,YACnBA,EAAK,MAAS,YACdA,EAAK,QAAW,cAChBA,EAAK,SAAY,eACjBA,EAAK,UAAa,gBAClBA,EAAK,OAAU,aACfA,EAAK,OAAU,aACfA,EAAK,OAAU,aACfA,EAAK,SAAY,eACjBA,EAAK,eAAkB,eACvBA,EAAK,YAAe,aACpBA,EAAK,aAAgB,aACrBA,EAAK,YAAe,YACpBA,EAAK,gBAAmB,eACxBA,EAAK,oBAAuB,oBAC5BA,EAAK,4BAA+B,2BACpCA,EAAK,yBAA4B,wBACjCA,EAAK,yBAA4B,wBACjCA,EAAK,mBAAsB,mBAC3BA,EAAK,yBAA4B,wBACjCA,EAAK,4BAA+B,2BACpCA,EAAK,wBAA2B,uBAChCA,EAAK,uBAA0B,sBAC/BA,EAAK,wBAA2B,uBAChCA,EAAK,+BAAkC,6BACvCA,EAAK,uBAA0B,uBAC/BA,EAAK,mBAAsB,mBAC3BA,EAAK,wBAA2B,uBAChCA,EAAK,wBAA2B,uBAChCA,EAAK,2BAA8B,0BACnCA,EAAK,uBAA0B,sBAC/BA,EAAK,sBAAyB,qBAC9BA,EAAK,8BAAiC;AACxC,GAAGA,OAASA,KAAO,CAAA,EAAG;ACzCf,SAASC,GAAa92C,GAAM;AACjC,SAAOA,MAAS,KAAUA,MAAS;AACrC;AASO,SAAS+2C,GAAQ/2C,GAAM;AAC5B,SAAOA,KAAQ,MAAUA,KAAQ;AACnC;AAYO,SAASg3C,GAASh3C,GAAM;AAC7B,SACGA,KAAQ,MAAUA,KAAQ;AAAA,EAC1BA,KAAQ,MAAUA,KAAQ;AAE/B;AAUO,SAASi3C,GAAYj3C,GAAM;AAChC,SAAOg3C,GAASh3C,CAAI,KAAKA,MAAS;AACpC;AAWO,SAASk3C,GAAel3C,GAAM;AACnC,SAAOg3C,GAASh3C,CAAI,KAAK+2C,GAAQ/2C,CAAI,KAAKA,MAAS;AACrD;ACrDO,SAASm3C,GAAuB9C,GAAO;AAC5C,MAAI+C;AAEJ,MAAIC,IAAe,OAAO,kBACtBC,IAAoB,MACpBC,IAAmB;AAEvB,WAAS15C,IAAI,GAAGA,IAAIw2C,EAAM,QAAQ,EAAEx2C,GAAG;AACrC,QAAI25C;AAEJ,UAAMhE,IAAOa,EAAMx2C,CAAC,GACd45C,IAASC,GAAkBlE,CAAI;AAErC,IAAIiE,MAAWjE,EAAK,WAIpB8D,KACGE,IAAqBF,OAAuB,QAC7CE,MAAuB,SACnBA,IACA35C,GACN05C,IAAmB15C,GAEfA,MAAM,KAAK45C,IAASJ,MACtBA,IAAeI;AAAA,EAErB;AAEE,SAAOpD,EACJ,IAAI,CAACb,GAAM31C,MAAOA,MAAM,IAAI21C,IAAOA,EAAK,MAAM6D,CAAY,CAAE,EAC5D;AAAA,KACED,IAAsBE,OAAuB,QAC5CF,MAAwB,SACtBA,IACA;AAAA,IACJG,IAAmB;AAAA,EACpB;AACL;AAEA,SAASG,GAAkBp1C,GAAK;AAC9B,MAAIzE,IAAI;AAER,SAAOA,IAAIyE,EAAI,UAAUw0C,GAAax0C,EAAI,WAAWzE,CAAC,CAAC;AACrD,MAAEA;AAGJ,SAAOA;AACT;AAgFO,SAAS85C,GAAiB50D,GAAO+rB,GAAS;AAC/C,QAAM8oC,IAAe70D,EAAM,QAAQ,QAAQ,OAAO,GAE5CsxD,IAAQuD,EAAa,MAAM,cAAc,GACzCC,IAAexD,EAAM,WAAW,GAEhCyD,IACJzD,EAAM,SAAS,KACfA,EACG,MAAM,CAAC,EACP,MAAM,CAACb,MAASA,EAAK,WAAW,KAAKsD,GAAatD,EAAK,WAAW,CAAC,CAAC,CAAC,GAEpEuE,IAA0BH,EAAa,SAAS,OAAO,GAEvDI,IAAmBj1D,EAAM,SAAS,GAAG,KAAK,CAACg1D,GAC3CE,IAAmBl1D,EAAM,SAAS,IAAI,GACtCm1D,IAAuBF,KAAoBC,GAC3CE;AAAA;AAAA,IAEH,CAACN,KACA90D,EAAM,SAAS,MACfm1D,KACAJ,KACAC;AAAA;AACJ,MAAIt0D,IAAS;AAEb,QAAM20D,IAAqBP,KAAgBf,GAAa/zD,EAAM,WAAW,CAAC,CAAC;AAE3E,UAAKo1D,KAAwB,CAACC,KAAuBN,OACnDr0D,KAAU;AAAA,IAGZA,KAAUm0D,IAENO,KAAwBD,OAC1Bz0D,KAAU;AAAA,IAGL,QAAQA,IAAS;AAC1B;AC7KA,IAAI40D;AAAA,CAEH,SAAUA,GAAW;AACpB,EAAAA,EAAU,MAAS,SACnBA,EAAU,MAAS,SACnBA,EAAU,OAAU,KACpBA,EAAU,SAAY,KACtBA,EAAU,MAAS,KACnBA,EAAU,UAAa,KACvBA,EAAU,UAAa,KACvBA,EAAU,SAAY,OACtBA,EAAU,QAAW,KACrBA,EAAU,SAAY,KACtBA,EAAU,KAAQ,KAClBA,EAAU,YAAe,KACzBA,EAAU,YAAe,KACzBA,EAAU,UAAa,KACvBA,EAAU,OAAU,KACpBA,EAAU,UAAa,KACvBA,EAAU,OAAU,QACpBA,EAAU,MAAS,OACnBA,EAAU,QAAW,SACrBA,EAAU,SAAY,UACtBA,EAAU,eAAkB,eAC5BA,EAAU,UAAa;AACzB,GAAGA,MAAcA,IAAY,CAAA,EAAG;ACfzB,MAAMC,GAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBjB,YAAYhF,GAAQ;AAClB,UAAMiF,IAAmB,IAAInC,GAAMiC,EAAU,KAAK,GAAG,GAAG,GAAG,CAAC;AAC5D,SAAK,SAAS/E,GACd,KAAK,YAAYiF,GACjB,KAAK,QAAQA,GACb,KAAK,OAAO,GACZ,KAAK,YAAY;AAAA,EACrB;AAAA,EAEE,KAAK,OAAO,WAAW,IAAI;AACzB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKE,UAAU;AACR,gBAAK,YAAY,KAAK,OACP,KAAK,QAAQ,KAAK,UAAS;AAAA,EAE9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,YAAY;AACV,QAAIC,IAAQ,KAAK;AAEjB,QAAIA,EAAM,SAASH,EAAU;AAC3B;AACE,YAAIG,EAAM;AACR,UAAAA,IAAQA,EAAM;AAAA,aACT;AAEL,gBAAMC,IAAYC,GAAc,MAAMF,EAAM,GAAG;AAE/C,UAAAA,EAAM,OAAOC,GAEbA,EAAU,OAAOD,GACjBA,IAAQC;AAAA,QAClB;AAAA,aACeD,EAAM,SAASH,EAAU;AAGpC,WAAOG;AAAA,EACX;AACA;AAKO,SAASG,GAAsBtC,GAAM;AAC1C,SACEA,MAASgC,EAAU,QACnBhC,MAASgC,EAAU,UACnBhC,MAASgC,EAAU,OACnBhC,MAASgC,EAAU,WACnBhC,MAASgC,EAAU,WACnBhC,MAASgC,EAAU,UACnBhC,MAASgC,EAAU,SACnBhC,MAASgC,EAAU,UACnBhC,MAASgC,EAAU,MACnBhC,MAASgC,EAAU,aACnBhC,MAASgC,EAAU,aACnBhC,MAASgC,EAAU,WACnBhC,MAASgC,EAAU,QACnBhC,MAASgC,EAAU;AAEvB;AAUA,SAASO,GAAqB54C,GAAM;AAClC,SACGA,KAAQ,KAAUA,KAAQ,SAAYA,KAAQ,SAAUA,KAAQ;AAErE;AAUA,SAAS64C,GAAyB/E,GAAMJ,GAAU;AAChD,SACEoF,GAAmBhF,EAAK,WAAWJ,CAAQ,CAAC,KAC5CqF,GAAoBjF,EAAK,WAAWJ,IAAW,CAAC,CAAC;AAErD;AAEA,SAASoF,GAAmB94C,GAAM;AAChC,SAAOA,KAAQ,SAAUA,KAAQ;AACnC;AAEA,SAAS+4C,GAAoB/4C,GAAM;AACjC,SAAOA,KAAQ,SAAUA,KAAQ;AACnC;AASA,SAASg5C,GAAiBC,GAAOvF,GAAU;AACzC,QAAM1zC,IAAOi5C,EAAM,OAAO,KAAK,YAAYvF,CAAQ;AAEnD,MAAI1zC,MAAS;AACX,WAAOq4C,EAAU;AACZ,MAAIr4C,KAAQ,MAAUA,KAAQ,KAAQ;AAE3C,UAAMk5C,IAAO,OAAO,cAAcl5C,CAAI;AACtC,WAAOk5C,MAAS,MAAM,QAAS,IAAIA,CAAI;AAAA,EACxC;AAED,SAAO,OAAOl5C,EAAK,SAAS,EAAE,EAAE,cAAc,SAAS,GAAG,GAAG;AAC/D;AAKA,SAASm5C,GAAYF,GAAO5C,GAAM30C,GAAOa,GAAKxf,GAAO;AACnD,QAAMywD,IAAOyF,EAAM,MACbG,IAAM,IAAI13C,IAAQu3C,EAAM;AAC9B,SAAO,IAAI7C,GAAMC,GAAM30C,GAAOa,GAAKixC,GAAM4F,GAAKr2D,CAAK;AACrD;AASA,SAAS21D,GAAcO,GAAOv3C,GAAO;AACnC,QAAMoyC,IAAOmF,EAAM,OAAO,MACpBI,IAAavF,EAAK;AACxB,MAAI9vC,IAAWtC;AAEf,SAAOsC,IAAWq1C,KAAY;AAC5B,UAAMr5C,IAAO8zC,EAAK,WAAW9vC,CAAQ;AAErC,YAAQhE,GAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAeV,KAAK;AAAA;AAAA,MAEL,KAAK;AAAA;AAAA,MAEL,KAAK;AAAA;AAAA,MAEL,KAAK;AAEH,UAAEgE;AACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMF,KAAK;AAEH,UAAEA,GACF,EAAEi1C,EAAM,MACRA,EAAM,YAAYj1C;AAClB;AAAA,MAEF,KAAK;AAEH,QAAI8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,KACpCA,KAAY,IAEZ,EAAEA,GAGJ,EAAEi1C,EAAM,MACRA,EAAM,YAAYj1C;AAClB;AAAA;AAAA,MAGF,KAAK;AAEH,eAAOs1C,GAAYL,GAAOj1C,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUpC,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,MAAMr0C,GAAUA,IAAW,CAAC;AAAA,MAElE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,QAAQr0C,GAAUA,IAAW,CAAC;AAAA,MAEpE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,KAAKr0C,GAAUA,IAAW,CAAC;AAAA,MAEjE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,SAASr0C,GAAUA,IAAW,CAAC;AAAA,MAErE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,SAASr0C,GAAUA,IAAW,CAAC;AAAA,MAErE,KAAK;AAEH,YACE8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,MAClC8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM;AAElC,iBAAOm1C,GAAYF,GAAOZ,EAAU,QAAQr0C,GAAUA,IAAW,CAAC;AAGpE;AAAA,MAEF,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,OAAOr0C,GAAUA,IAAW,CAAC;AAAA,MAEnE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,QAAQr0C,GAAUA,IAAW,CAAC;AAAA,MAEpE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,IAAIr0C,GAAUA,IAAW,CAAC;AAAA,MAEhE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,WAAWr0C,GAAUA,IAAW,CAAC;AAAA,MAEvE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,WAAWr0C,GAAUA,IAAW,CAAC;AAAA,MAEvE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,SAASr0C,GAAUA,IAAW,CAAC;AAAA,MAErE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,MAAMr0C,GAAUA,IAAW,CAAC;AAAA,MAElE,KAAK;AAEH,eAAOm1C,GAAYF,GAAOZ,EAAU,SAASr0C,GAAUA,IAAW,CAAC;AAAA;AAAA,MAGrE,KAAK;AAEH,eACE8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,MAClC8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,KAE3Bu1C,GAAgBN,GAAOj1C,CAAQ,IAGjCw1C,GAAWP,GAAOj1C,CAAQ;AAAA,IACpC;AAED,QAAI+yC,GAAQ/2C,CAAI,KAAKA,MAAS;AAC5B,aAAOy5C,GAAWR,GAAOj1C,GAAUhE,CAAI;AAGzC,QAAIi3C,GAAYj3C,CAAI;AAClB,aAAO05C,GAAST,GAAOj1C,CAAQ;AAGjC,UAAM+xC;AAAA,MACJkD,EAAM;AAAA,MACNj1C;AAAA,MACAhE,MAAS,KACL,mFACA44C,GAAqB54C,CAAI,KAAK64C,GAAyB/E,GAAM9vC,CAAQ,IACrE,yBAAyBg1C,GAAiBC,GAAOj1C,CAAQ,CAAC,MAC1D,sBAAsBg1C,GAAiBC,GAAOj1C,CAAQ,CAAC;AAAA,IAC5D;AAAA,EACL;AAEE,SAAOm1C,GAAYF,GAAOZ,EAAU,KAAKgB,GAAYA,CAAU;AACjE;AAWA,SAASC,GAAYL,GAAOv3C,GAAO;AACjC,QAAMoyC,IAAOmF,EAAM,OAAO,MACpBI,IAAavF,EAAK;AACxB,MAAI9vC,IAAWtC,IAAQ;AAEvB,SAAOsC,IAAWq1C,KAAY;AAC5B,UAAMr5C,IAAO8zC,EAAK,WAAW9vC,CAAQ;AAErC,QAAIhE,MAAS,MAAUA,MAAS;AAC9B;AAGF,QAAI44C,GAAqB54C,CAAI;AAC3B,QAAEgE;AAAA,aACO60C,GAAyB/E,GAAM9vC,CAAQ;AAChD,MAAAA,KAAY;AAAA;AAEZ;AAAA,EAEN;AAEE,SAAOm1C;AAAA,IACLF;AAAA,IACAZ,EAAU;AAAA,IACV32C;AAAA,IACAsC;AAAA,IACA8vC,EAAK,MAAMpyC,IAAQ,GAAGsC,CAAQ;AAAA,EAC/B;AACH;AA+BA,SAASy1C,GAAWR,GAAOv3C,GAAOi4C,GAAW;AAC3C,QAAM7F,IAAOmF,EAAM,OAAO;AAC1B,MAAIj1C,IAAWtC,GACX1B,IAAO25C,GACPC,IAAU;AAMd,MAJI55C,MAAS,OACXA,IAAO8zC,EAAK,WAAW,EAAE9vC,CAAQ,IAG/BhE,MAAS;AAGX,QAFAA,IAAO8zC,EAAK,WAAW,EAAE9vC,CAAQ,GAE7B+yC,GAAQ/2C,CAAI;AACd,YAAM+1C;AAAA,QACJkD,EAAM;AAAA,QACNj1C;AAAA,QACA,6CAA6Cg1C;AAAA,UAC3CC;AAAA,UACAj1C;AAAA,QACD,CAAA;AAAA,MACF;AAAA;AAGH,IAAAA,IAAW61C,GAAWZ,GAAOj1C,GAAUhE,CAAI,GAC3CA,IAAO8zC,EAAK,WAAW9vC,CAAQ;AAsBjC,MAnBIhE,MAAS,OACX45C,IAAU,IACV55C,IAAO8zC,EAAK,WAAW,EAAE9vC,CAAQ,GACjCA,IAAW61C,GAAWZ,GAAOj1C,GAAUhE,CAAI,GAC3CA,IAAO8zC,EAAK,WAAW9vC,CAAQ,KAG7BhE,MAAS,MAAUA,MAAS,SAC9B45C,IAAU,IACV55C,IAAO8zC,EAAK,WAAW,EAAE9vC,CAAQ,IAE7BhE,MAAS,MAAUA,MAAS,QAC9BA,IAAO8zC,EAAK,WAAW,EAAE9vC,CAAQ,IAGnCA,IAAW61C,GAAWZ,GAAOj1C,GAAUhE,CAAI,GAC3CA,IAAO8zC,EAAK,WAAW9vC,CAAQ,IAG7BhE,MAAS,MAAUi3C,GAAYj3C,CAAI;AACrC,UAAM+1C;AAAA,MACJkD,EAAM;AAAA,MACNj1C;AAAA,MACA,2CAA2Cg1C;AAAA,QACzCC;AAAA,QACAj1C;AAAA,MACD,CAAA;AAAA,IACF;AAGH,SAAOm1C;AAAA,IACLF;AAAA,IACAW,IAAUvB,EAAU,QAAQA,EAAU;AAAA,IACtC32C;AAAA,IACAsC;AAAA,IACA8vC,EAAK,MAAMpyC,GAAOsC,CAAQ;AAAA,EAC3B;AACH;AAKA,SAAS61C,GAAWZ,GAAOv3C,GAAOi4C,GAAW;AAC3C,MAAI,CAAC5C,GAAQ4C,CAAS;AACpB,UAAM5D;AAAA,MACJkD,EAAM;AAAA,MACNv3C;AAAA,MACA,2CAA2Cs3C;AAAA,QACzCC;AAAA,QACAv3C;AAAA,MACD,CAAA;AAAA,IACF;AAGH,QAAMoyC,IAAOmF,EAAM,OAAO;AAC1B,MAAIj1C,IAAWtC,IAAQ;AAEvB,SAAOq1C,GAAQjD,EAAK,WAAW9vC,CAAQ,CAAC;AACtC,MAAEA;AAGJ,SAAOA;AACT;AAsBA,SAASw1C,GAAWP,GAAOv3C,GAAO;AAChC,QAAMoyC,IAAOmF,EAAM,OAAO,MACpBI,IAAavF,EAAK;AACxB,MAAI9vC,IAAWtC,IAAQ,GACnBo4C,IAAa91C,GACbjhB,IAAQ;AAEZ,SAAOihB,IAAWq1C,KAAY;AAC5B,UAAMr5C,IAAO8zC,EAAK,WAAW9vC,CAAQ;AAErC,QAAIhE,MAAS;AACX,aAAAjd,KAAS+wD,EAAK,MAAMgG,GAAY91C,CAAQ,GACjCm1C,GAAYF,GAAOZ,EAAU,QAAQ32C,GAAOsC,IAAW,GAAGjhB,CAAK;AAGxE,QAAIid,MAAS,IAAQ;AACnB,MAAAjd,KAAS+wD,EAAK,MAAMgG,GAAY91C,CAAQ;AACxC,YAAM+1C,IACJjG,EAAK,WAAW9vC,IAAW,CAAC,MAAM,MAC9B8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,MAChCg2C,GAAgCf,GAAOj1C,CAAQ,IAC/Ci2C,GAA6BhB,GAAOj1C,CAAQ,IAC9Ck2C,GAAqBjB,GAAOj1C,CAAQ;AAC1C,MAAAjhB,KAASg3D,EAAO,OAChB/1C,KAAY+1C,EAAO,MACnBD,IAAa91C;AACb;AAAA,IACD;AAED,QAAIhE,MAAS,MAAUA,MAAS;AAC9B;AAGF,QAAI44C,GAAqB54C,CAAI;AAC3B,QAAEgE;AAAA,aACO60C,GAAyB/E,GAAM9vC,CAAQ;AAChD,MAAAA,KAAY;AAAA;AAEZ,YAAM+xC;AAAA,QACJkD,EAAM;AAAA,QACNj1C;AAAA,QACA,oCAAoCg1C;AAAA,UAClCC;AAAA,UACAj1C;AAAA,QACD,CAAA;AAAA,MACF;AAAA,EAEP;AAEE,QAAM+xC,GAAYkD,EAAM,QAAQj1C,GAAU,sBAAsB;AAClE;AAEA,SAASg2C,GAAgCf,GAAOj1C,GAAU;AACxD,QAAM8vC,IAAOmF,EAAM,OAAO;AAC1B,MAAIkB,IAAQ,GACRp3C,IAAO;AAEX,SAAOA,IAAO,MAAI;AAChB,UAAM/C,IAAO8zC,EAAK,WAAW9vC,IAAWjB,GAAM;AAE9C,QAAI/C,MAAS,KAAQ;AAEnB,UAAI+C,IAAO,KAAK,CAAC61C,GAAqBuB,CAAK;AACzC;AAGF,aAAO;AAAA,QACL,OAAO,OAAO,cAAcA,CAAK;AAAA,QACjC,MAAAp3C;AAAA,MACD;AAAA,IACF;AAID,QAFAo3C,IAASA,KAAS,IAAKC,GAAap6C,CAAI,GAEpCm6C,IAAQ;AACV;AAAA,EAEN;AAEE,QAAMpE;AAAA,IACJkD,EAAM;AAAA,IACNj1C;AAAA,IACA,qCAAqC8vC,EAAK;AAAA,MACxC9vC;AAAA,MACAA,IAAWjB;AAAA,IACZ,CAAA;AAAA,EACF;AACH;AAEA,SAASk3C,GAA6BhB,GAAOj1C,GAAU;AACrD,QAAM8vC,IAAOmF,EAAM,OAAO,MACpBj5C,IAAOq6C,GAAiBvG,GAAM9vC,IAAW,CAAC;AAEhD,MAAI40C,GAAqB54C,CAAI;AAC3B,WAAO;AAAA,MACL,OAAO,OAAO,cAAcA,CAAI;AAAA,MAChC,MAAM;AAAA,IACP;AAIH,MAAI84C,GAAmB94C,CAAI,KAGvB8zC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,MAClC8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,KAClC;AACA,UAAMs2C,IAAeD,GAAiBvG,GAAM9vC,IAAW,CAAC;AAExD,QAAI+0C,GAAoBuB,CAAY;AAOlC,aAAO;AAAA,QACL,OAAO,OAAO,cAAct6C,GAAMs6C,CAAY;AAAA,QAC9C,MAAM;AAAA,MACP;AAAA,EAET;AAGE,QAAMvE;AAAA,IACJkD,EAAM;AAAA,IACNj1C;AAAA,IACA,qCAAqC8vC,EAAK,MAAM9vC,GAAUA,IAAW,CAAC,CAAC;AAAA,EACxE;AACH;AASA,SAASq2C,GAAiBvG,GAAM9vC,GAAU;AAGxC,SACGo2C,GAAatG,EAAK,WAAW9vC,CAAQ,CAAC,KAAK,KAC3Co2C,GAAatG,EAAK,WAAW9vC,IAAW,CAAC,CAAC,KAAK,IAC/Co2C,GAAatG,EAAK,WAAW9vC,IAAW,CAAC,CAAC,KAAK,IAChDo2C,GAAatG,EAAK,WAAW9vC,IAAW,CAAC,CAAC;AAE9C;AAgBA,SAASo2C,GAAap6C,GAAM;AAC1B,SAAOA,KAAQ,MAAUA,KAAQ,KAC7BA,IAAO,KACPA,KAAQ,MAAUA,KAAQ,KAC1BA,IAAO,KACPA,KAAQ,MAAUA,KAAQ,MAC1BA,IAAO,KACP;AACN;AAcA,SAASk6C,GAAqBjB,GAAOj1C,GAAU;AAC7C,QAAM8vC,IAAOmF,EAAM,OAAO;AAG1B,UAFanF,EAAK,WAAW9vC,IAAW,CAAC,GAE7B;AAAA,IACV,KAAK;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,IAEH,KAAK;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,IAEH,KAAK;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,IAEH,KAAK;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,IAEH,KAAK;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,IAEH,KAAK;AAEH,aAAO;AAAA,QACL,OAAO;AAAA;AAAA,QACP,MAAM;AAAA,MACP;AAAA,IAEH,KAAK;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,IAEH,KAAK;AAEH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,EACP;AAEE,QAAM+xC;AAAA,IACJkD,EAAM;AAAA,IACNj1C;AAAA,IACA,uCAAuC8vC,EAAK;AAAA,MAC1C9vC;AAAA,MACAA,IAAW;AAAA,IACZ,CAAA;AAAA,EACF;AACH;AAcA,SAASu1C,GAAgBN,GAAOv3C,GAAO;AACrC,QAAMoyC,IAAOmF,EAAM,OAAO,MACpBI,IAAavF,EAAK;AACxB,MAAIyG,IAAYtB,EAAM,WAClBj1C,IAAWtC,IAAQ,GACnBo4C,IAAa91C,GACbw2C,IAAc;AAClB,QAAMC,IAAa,CAAE;AAErB,SAAOz2C,IAAWq1C,KAAY;AAC5B,UAAMr5C,IAAO8zC,EAAK,WAAW9vC,CAAQ;AAErC,QACEhE,MAAS,MACT8zC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,MAClC8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,IAClC;AACA,MAAAw2C,KAAe1G,EAAK,MAAMgG,GAAY91C,CAAQ,GAC9Cy2C,EAAW,KAAKD,CAAW;AAC3B,YAAMhC,IAAQW;AAAA,QACZF;AAAA,QACAZ,EAAU;AAAA,QACV32C;AAAA,QACAsC,IAAW;AAAA;AAAA,QACXmzC,GAAuBsD,CAAU,EAAE,KAAK;AAAA,CAAI;AAAA,MAC7C;AACD,aAAAxB,EAAM,QAAQwB,EAAW,SAAS,GAClCxB,EAAM,YAAYsB,GACX/B;AAAA,IACR;AAED,QACEx4C,MAAS,MACT8zC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,MAClC8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,MAClC8vC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,IAClC;AACA,MAAAw2C,KAAe1G,EAAK,MAAMgG,GAAY91C,CAAQ,GAC9C81C,IAAa91C,IAAW,GAExBA,KAAY;AACZ;AAAA,IACD;AAED,QAAIhE,MAAS,MAAUA,MAAS,IAAQ;AACtC,MAAAw6C,KAAe1G,EAAK,MAAMgG,GAAY91C,CAAQ,GAC9Cy2C,EAAW,KAAKD,CAAW,GAEvBx6C,MAAS,MAAU8zC,EAAK,WAAW9vC,IAAW,CAAC,MAAM,KACvDA,KAAY,IAEZ,EAAEA,GAGJw2C,IAAc,IACdV,IAAa91C,GACbu2C,IAAYv2C;AACZ;AAAA,IACD;AAED,QAAI40C,GAAqB54C,CAAI;AAC3B,QAAEgE;AAAA,aACO60C,GAAyB/E,GAAM9vC,CAAQ;AAChD,MAAAA,KAAY;AAAA;AAEZ,YAAM+xC;AAAA,QACJkD,EAAM;AAAA,QACNj1C;AAAA,QACA,oCAAoCg1C;AAAA,UAClCC;AAAA,UACAj1C;AAAA,QACD,CAAA;AAAA,MACF;AAAA,EAEP;AAEE,QAAM+xC,GAAYkD,EAAM,QAAQj1C,GAAU,sBAAsB;AAClE;AAUA,SAAS01C,GAAST,GAAOv3C,GAAO;AAC9B,QAAMoyC,IAAOmF,EAAM,OAAO,MACpBI,IAAavF,EAAK;AACxB,MAAI9vC,IAAWtC,IAAQ;AAEvB,SAAOsC,IAAWq1C,KAAY;AAC5B,UAAMr5C,IAAO8zC,EAAK,WAAW9vC,CAAQ;AAErC,QAAIkzC,GAAel3C,CAAI;AACrB,QAAEgE;AAAA;AAEF;AAAA,EAEN;AAEE,SAAOm1C;AAAA,IACLF;AAAA,IACAZ,EAAU;AAAA,IACV32C;AAAA,IACAsC;AAAA,IACA8vC,EAAK,MAAMpyC,GAAOsC,CAAQ;AAAA,EAC3B;AACH;ACr4BA,MAAM02C,KAAmB,IACnBC,KAAsB;AAKrB,SAAS33C,GAAQjgB,GAAO;AAC7B,SAAO63D,GAAY73D,GAAO,EAAE;AAC9B;AAEA,SAAS63D,GAAY73D,GAAO83D,GAAY;AACtC,UAAQ,OAAO93D,GAAK;AAAA,IAClB,KAAK;AACH,aAAO,KAAK,UAAUA,CAAK;AAAA,IAE7B,KAAK;AACH,aAAOA,EAAM,OAAO,aAAaA,EAAM,IAAI,MAAM;AAAA,IAEnD,KAAK;AACH,aAAO+3D,GAAkB/3D,GAAO83D,CAAU;AAAA,IAE5C;AACE,aAAO,OAAO93D,CAAK;AAAA,EACzB;AACA;AAEA,SAAS+3D,GAAkB/3D,GAAOg4D,GAAsB;AACtD,MAAIh4D,MAAU;AACZ,WAAO;AAGT,MAAIg4D,EAAqB,SAASh4D,CAAK;AACrC,WAAO;AAGT,QAAM83D,IAAa,CAAC,GAAGE,GAAsBh4D,CAAK;AAElD,MAAIi4D,GAAWj4D,CAAK,GAAG;AACrB,UAAMk4D,IAAYl4D,EAAM;AAExB,QAAIk4D,MAAcl4D;AAChB,aAAO,OAAOk4D,KAAc,WACxBA,IACAL,GAAYK,GAAWJ,CAAU;AAAA,EAExC,WAAU,MAAM,QAAQ93D,CAAK;AAC5B,WAAOm4D,GAAYn4D,GAAO83D,CAAU;AAGtC,SAAOM,GAAap4D,GAAO83D,CAAU;AACvC;AAEA,SAASG,GAAWj4D,GAAO;AACzB,SAAO,OAAOA,EAAM,UAAW;AACjC;AAEA,SAASo4D,GAAa99B,GAAQw9B,GAAY;AACxC,QAAMO,IAAU,OAAO,QAAQ/9B,CAAM;AAErC,SAAI+9B,EAAQ,WAAW,IACd,OAGLP,EAAW,SAASF,KACf,MAAMU,GAAah+B,CAAM,IAAI,MAM/B,OAHY+9B,EAAQ;AAAA,IACzB,CAAC,CAACt3B,GAAK/gC,CAAK,MAAM+gC,IAAM,OAAO82B,GAAY73D,GAAO83D,CAAU;AAAA,EAC7D,EACwB,KAAK,IAAI,IAAI;AACxC;AAEA,SAASK,GAAYl+B,GAAO69B,GAAY;AACtC,MAAI79B,EAAM,WAAW;AACnB,WAAO;AAGT,MAAI69B,EAAW,SAASF;AACtB,WAAO;AAGT,QAAMh7D,IAAM,KAAK,IAAI+6D,IAAkB19B,EAAM,MAAM,GAC7Cs+B,IAAYt+B,EAAM,SAASr9B,GAC3B47D,IAAQ,CAAE;AAEhB,WAAS,IAAI,GAAG,IAAI57D,GAAK,EAAE;AACzB,IAAA47D,EAAM,KAAKX,GAAY59B,EAAM,CAAC,GAAG69B,CAAU,CAAC;AAG9C,SAAIS,MAAc,IAChBC,EAAM,KAAK,iBAAiB,IACnBD,IAAY,KACrBC,EAAM,KAAK,OAAOD,CAAS,aAAa,GAGnC,MAAMC,EAAM,KAAK,IAAI,IAAI;AAClC;AAEA,SAASF,GAAah+B,GAAQ;AAC5B,QAAMm+B,IAAM,OAAO,UAAU,SAC1B,KAAKn+B,CAAM,EACX,QAAQ,cAAc,EAAE,EACxB,QAAQ,MAAM,EAAE;AAEnB,MAAIm+B,MAAQ,YAAY,OAAOn+B,EAAO,eAAgB,YAAY;AAChE,UAAM9c,IAAO8c,EAAO,YAAY;AAEhC,QAAI,OAAO9c,KAAS,YAAYA,MAAS;AACvC,aAAOA;AAAA,EAEb;AAEE,SAAOi7C;AACT;AC/GA,MAAMC,KACJ,WAAW;AACX,IAQWC;AAAA;AAAA;AAAA,EAGXD,KACI,SAAoB14D,GAAO44D,GAAa;AACtC,WAAO54D,aAAiB44D;AAAA,EAAA,IAE1B,SAAoB54D,GAAO44D,GAAa;AACtC,QAAI54D,aAAiB44D;AACZ,aAAA;AAGT,QAAI,OAAO54D,KAAU,YAAYA,MAAU,MAAM;AAC3C,UAAA64D;AAGJ,YAAMC,IAAYF,EAAY,UAAU,OAAO,WAAW,GACpDG;AAAA;AAAA,QACJ,OAAO,eAAe/4D,IAClBA,EAAM,OAAO,WAAW,KACvB64D,IAAqB74D,EAAM,iBAAiB,QAC7C64D,MAAuB,SACvB,SACAA,EAAmB;AAAA;AAEzB,UAAIC,MAAcC,GAAgB;AAC1B,cAAAC,IAAmB/4C,GAAQjgB,CAAK;AACtC,cAAM,IAAI,MAAM,cAAc84D,CAAS,KAAKE,CAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAWtD;AAAA,MAAA;AAAA,IACR;AAGK,WAAA;AAAA,EAAA;AAAA;AC5CR,MAAMC,GAAO;AAAA,EAClB,YACElI,GACAvzC,IAAO,mBACP07C,IAAiB;AAAA,IACf,MAAM;AAAA,IACN,QAAQ;AAAA,EACT,GACD;AACA,WAAOnI,KAAS,YACdd,GAAU,IAAO,oCAAoChwC,GAAQ8wC,CAAI,CAAC,GAAG,GACvE,KAAK,OAAOA,GACZ,KAAK,OAAOvzC,GACZ,KAAK,iBAAiB07C,GACtB,KAAK,eAAe,OAAO,KACzBjJ;AAAA,MACE;AAAA,MACA;AAAA,IACD,GACH,KAAK,eAAe,SAAS,KAC3BA;AAAA,MACE;AAAA,MACA;AAAA,IACD;AAAA,EACP;AAAA,EAEE,KAAK,OAAO,WAAW,IAAI;AACzB,WAAO;AAAA,EACX;AACA;AAOO,SAASkJ,GAAS5I,GAAQ;AAC/B,SAAOoI,GAAWpI,GAAQ0I,EAAM;AAClC;AClCO,SAASG,GAAM7I,GAAQxkC,GAAS;AACrC,QAAMstC,IAAS,IAAIC,GAAO/I,GAAQxkC,CAAO,GACnCwtC,IAAWF,EAAO,cAAe;AACvC,gBAAO,eAAeE,GAAU,cAAc;AAAA,IAC5C,YAAY;AAAA,IACZ,OAAOF,EAAO;AAAA,EAClB,CAAG,GACME;AACT;AA6DO,MAAMD,GAAO;AAAA,EAClB,YAAY/I,GAAQxkC,IAAU,IAAI;AAChC,UAAMytC,IAAYL,GAAS5I,CAAM,IAAIA,IAAS,IAAI0I,GAAO1I,CAAM;AAC/D,SAAK,SAAS,IAAIgF,GAAMiE,CAAS,GACjC,KAAK,WAAWztC,GAChB,KAAK,gBAAgB;AAAA,EACzB;AAAA,EAEE,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKE,YAAY;AACV,UAAM0pC,IAAQ,KAAK,YAAYH,EAAU,IAAI;AAC7C,WAAO,KAAK,KAAKG,GAAO;AAAA,MACtB,MAAM3B,GAAK;AAAA,MACX,OAAO2B,EAAM;AAAA,IACnB,CAAK;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,gBAAgB;AACd,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAM3B,GAAK;AAAA,MACX,aAAa,KAAK;AAAA,QAChBwB,EAAU;AAAA,QACV,KAAK;AAAA,QACLA,EAAU;AAAA,MACX;AAAA,IACP,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBE,kBAAkB;AAChB,QAAI,KAAK,KAAKA,EAAU,OAAO;AAC7B,aAAO,KAAK,yBAA0B;AAGxC,UAAMmE,IAAiB,KAAK,gBAAiB,GACvCC,IAAeD,IACjB,KAAK,OAAO,UAAS,IACrB,KAAK,OAAO;AAEhB,QAAIC,EAAa,SAASpE,EAAU,MAAM;AACxC,cAAQoE,EAAa,OAAK;AAAA,QACxB,KAAK;AACH,iBAAO,KAAK,sBAAuB;AAAA,QAErC,KAAK;AACH,iBAAO,KAAK,0BAA2B;AAAA,QAEzC,KAAK;AACH,iBAAO,KAAK,0BAA2B;AAAA,QAEzC,KAAK;AACH,iBAAO,KAAK,6BAA8B;AAAA,QAE5C,KAAK;AACH,iBAAO,KAAK,yBAA0B;AAAA,QAExC,KAAK;AACH,iBAAO,KAAK,wBAAyB;AAAA,QAEvC,KAAK;AACH,iBAAO,KAAK,+BAAgC;AAAA,QAE9C,KAAK;AACH,iBAAO,KAAK,yBAA0B;AAAA,MAChD;AAEM,UAAID;AACF,cAAMzG;AAAA,UACJ,KAAK,OAAO;AAAA,UACZ,KAAK,OAAO,MAAM;AAAA,UAClB;AAAA,QACD;AAGH,cAAQ0G,EAAa,OAAK;AAAA,QACxB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,KAAK,yBAA0B;AAAA,QAExC,KAAK;AACH,iBAAO,KAAK,wBAAyB;AAAA,QAEvC,KAAK;AACH,iBAAO,KAAK,yBAA0B;AAAA,MAChD;AAAA,IACA;AAEI,UAAM,KAAK,WAAWA,CAAY;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,2BAA2B;AACzB,UAAM/6C,IAAQ,KAAK,OAAO;AAE1B,QAAI,KAAK,KAAK22C,EAAU,OAAO;AAC7B,aAAO,KAAK,KAAK32C,GAAO;AAAA,QACtB,MAAMm1C,GAAK;AAAA,QACX,WAAWF,GAAkB;AAAA,QAC7B,MAAM;AAAA,QACN,qBAAqB,CAAE;AAAA,QACvB,YAAY,CAAE;AAAA,QACd,cAAc,KAAK,kBAAmB;AAAA,MAC9C,CAAO;AAGH,UAAM+F,IAAY,KAAK,mBAAoB;AAC3C,QAAIn8C;AAEJ,WAAI,KAAK,KAAK83C,EAAU,IAAI,MAC1B93C,IAAO,KAAK,UAAW,IAGlB,KAAK,KAAKmB,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,WAAA6F;AAAA,MACA,MAAAn8C;AAAA,MACA,qBAAqB,KAAK,yBAA0B;AAAA,MACpD,YAAY,KAAK,gBAAgB,EAAK;AAAA,MACtC,cAAc,KAAK,kBAAmB;AAAA,IAC5C,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,qBAAqB;AACnB,UAAMo8C,IAAiB,KAAK,YAAYtE,EAAU,IAAI;AAEtD,YAAQsE,EAAe,OAAK;AAAA,MAC1B,KAAK;AACH,eAAOhG,GAAkB;AAAA,MAE3B,KAAK;AACH,eAAOA,GAAkB;AAAA,MAE3B,KAAK;AACH,eAAOA,GAAkB;AAAA,IACjC;AAEI,UAAM,KAAK,WAAWgG,CAAc;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKE,2BAA2B;AACzB,WAAO,KAAK;AAAA,MACVtE,EAAU;AAAA,MACV,KAAK;AAAA,MACLA,EAAU;AAAA,IACX;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,0BAA0B;AACxB,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAMxB,GAAK;AAAA,MACX,UAAU,KAAK,cAAe;AAAA,MAC9B,OAAO,KAAK,YAAYwB,EAAU,KAAK,GAAG,KAAK;MAC/C,cAAc,KAAK,oBAAoBA,EAAU,MAAM,IACnD,KAAK,uBAAsB,IAC3B;AAAA,MACJ,YAAY,KAAK,qBAAsB;AAAA,IAC7C,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,gBAAgB;AACd,UAAM32C,IAAQ,KAAK,OAAO;AAC1B,gBAAK,YAAY22C,EAAU,MAAM,GAC1B,KAAK,KAAK32C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAM,KAAK,UAAW;AAAA,IAC5B,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,oBAAoB;AAClB,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAMA,GAAK;AAAA,MACX,YAAY,KAAK;AAAA,QACfwB,EAAU;AAAA,QACV,KAAK;AAAA,QACLA,EAAU;AAAA,MACX;AAAA,IACP,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,iBAAiB;AACf,WAAO,KAAK,KAAKA,EAAU,MAAM,IAC7B,KAAK,cAAa,IAClB,KAAK,WAAY;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,aAAa;AACX,UAAM32C,IAAQ,KAAK,OAAO,OACpBk7C,IAAc,KAAK,UAAW;AACpC,QAAIC,GACAt8C;AAEJ,WAAI,KAAK,oBAAoB83C,EAAU,KAAK,KAC1CwE,IAAQD,GACRr8C,IAAO,KAAK,UAAW,KAEvBA,IAAOq8C,GAGF,KAAK,KAAKl7C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,OAAAgG;AAAA,MACA,MAAAt8C;AAAA,MACA,WAAW,KAAK,eAAe,EAAK;AAAA,MACpC,YAAY,KAAK,gBAAgB,EAAK;AAAA,MACtC,cAAc,KAAK,KAAK83C,EAAU,OAAO,IACrC,KAAK,kBAAiB,IACtB;AAAA,IACV,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,eAAeyE,GAAS;AACtB,UAAM3/B,IAAO2/B,IAAU,KAAK,qBAAqB,KAAK;AACtD,WAAO,KAAK,aAAazE,EAAU,SAASl7B,GAAMk7B,EAAU,OAAO;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA,EAKE,cAAcyE,IAAU,IAAO;AAC7B,UAAMp7C,IAAQ,KAAK,OAAO,OACpBnB,IAAO,KAAK,UAAW;AAC7B,gBAAK,YAAY83C,EAAU,KAAK,GACzB,KAAK,KAAK32C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAAt2C;AAAA,MACA,OAAO,KAAK,kBAAkBu8C,CAAO;AAAA,IAC3C,CAAK;AAAA,EACL;AAAA,EAEE,qBAAqB;AACnB,WAAO,KAAK,cAAc,EAAI;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD,gBAAgB;AACd,UAAMp7C,IAAQ,KAAK,OAAO;AAC1B,SAAK,YAAY22C,EAAU,MAAM;AACjC,UAAM0E,IAAmB,KAAK,sBAAsB,IAAI;AAExD,WAAI,CAACA,KAAoB,KAAK,KAAK1E,EAAU,IAAI,IACxC,KAAK,KAAK32C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAM,KAAK,kBAAmB;AAAA,MAC9B,YAAY,KAAK,gBAAgB,EAAK;AAAA,IAC9C,CAAO,IAGI,KAAK,KAAKn1C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,eAAekG,IAAmB,KAAK,eAAgB,IAAG;AAAA,MAC1D,YAAY,KAAK,gBAAgB,EAAK;AAAA,MACtC,cAAc,KAAK,kBAAmB;AAAA,IAC5C,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,0BAA0B;AACxB,UAAMr7C,IAAQ,KAAK,OAAO;AAK1B,WAJA,KAAK,cAAc,UAAU,GAIzB,KAAK,SAAS,iCAAiC,KAC1C,KAAK,KAAKA,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAM,KAAK,kBAAmB;AAAA,MAC9B,qBAAqB,KAAK,yBAA0B;AAAA,MACpD,gBAAgB,KAAK,cAAc,IAAI,GAAG,KAAK;MAC/C,YAAY,KAAK,gBAAgB,EAAK;AAAA,MACtC,cAAc,KAAK,kBAAmB;AAAA,IAC9C,CAAO,IAGI,KAAK,KAAKn1C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAM,KAAK,kBAAmB;AAAA,MAC9B,gBAAgB,KAAK,cAAc,IAAI,GAAG,KAAK;MAC/C,YAAY,KAAK,gBAAgB,EAAK;AAAA,MACtC,cAAc,KAAK,kBAAmB;AAAA,IAC5C,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,oBAAoB;AAClB,QAAI,KAAK,OAAO,MAAM,UAAU;AAC9B,YAAM,KAAK,WAAY;AAGzB,WAAO,KAAK,UAAW;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBD,kBAAkBiG,GAAS;AACzB,UAAMtE,IAAQ,KAAK,OAAO;AAE1B,YAAQA,EAAM,MAAI;AAAA,MAChB,KAAKH,EAAU;AACb,eAAO,KAAK,UAAUyE,CAAO;AAAA,MAE/B,KAAKzE,EAAU;AACb,eAAO,KAAK,YAAYyE,CAAO;AAAA,MAEjC,KAAKzE,EAAU;AACb,oBAAK,aAAc,GACZ,KAAK,KAAKG,GAAO;AAAA,UACtB,MAAM3B,GAAK;AAAA,UACX,OAAO2B,EAAM;AAAA,QACvB,CAAS;AAAA,MAEH,KAAKH,EAAU;AACb,oBAAK,aAAc,GACZ,KAAK,KAAKG,GAAO;AAAA,UACtB,MAAM3B,GAAK;AAAA,UACX,OAAO2B,EAAM;AAAA,QACvB,CAAS;AAAA,MAEH,KAAKH,EAAU;AAAA,MACf,KAAKA,EAAU;AACb,eAAO,KAAK,mBAAoB;AAAA,MAElC,KAAKA,EAAU;AAGb,gBAFA,KAAK,aAAc,GAEXG,EAAM,OAAK;AAAA,UACjB,KAAK;AACH,mBAAO,KAAK,KAAKA,GAAO;AAAA,cACtB,MAAM3B,GAAK;AAAA,cACX,OAAO;AAAA,YACrB,CAAa;AAAA,UAEH,KAAK;AACH,mBAAO,KAAK,KAAK2B,GAAO;AAAA,cACtB,MAAM3B,GAAK;AAAA,cACX,OAAO;AAAA,YACrB,CAAa;AAAA,UAEH,KAAK;AACH,mBAAO,KAAK,KAAK2B,GAAO;AAAA,cACtB,MAAM3B,GAAK;AAAA,YACzB,CAAa;AAAA,UAEH;AACE,mBAAO,KAAK,KAAK2B,GAAO;AAAA,cACtB,MAAM3B,GAAK;AAAA,cACX,OAAO2B,EAAM;AAAA,YAC3B,CAAa;AAAA,QACb;AAAA,MAEM,KAAKH,EAAU;AACb,YAAIyE;AAGF,cAFA,KAAK,YAAYzE,EAAU,MAAM,GAE7B,KAAK,OAAO,MAAM,SAASA,EAAU,MAAM;AAC7C,kBAAM2E,IAAU,KAAK,OAAO,MAAM;AAClC,kBAAMjH;AAAA,cACJ,KAAK,OAAO;AAAA,cACZyC,EAAM;AAAA,cACN,yBAAyBwE,CAAO;AAAA,YACjC;AAAA,UACb;AACY,kBAAM,KAAK,WAAWxE,CAAK;AAI/B,eAAO,KAAK,cAAe;AAAA,MAE7B;AACE,cAAM,KAAK,WAAY;AAAA,IAC/B;AAAA,EACA;AAAA,EAEE,yBAAyB;AACvB,WAAO,KAAK,kBAAkB,EAAI;AAAA,EACtC;AAAA,EAEE,qBAAqB;AACnB,UAAMA,IAAQ,KAAK,OAAO;AAC1B,gBAAK,aAAc,GACZ,KAAK,KAAKA,GAAO;AAAA,MACtB,MAAM3B,GAAK;AAAA,MACX,OAAO2B,EAAM;AAAA,MACb,OAAOA,EAAM,SAASH,EAAU;AAAA,IACtC,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,UAAUyE,GAAS;AACjB,UAAM3/B,IAAO,MAAM,KAAK,kBAAkB2/B,CAAO;AAEjD,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAMjG,GAAK;AAAA,MACX,QAAQ,KAAK,IAAIwB,EAAU,WAAWl7B,GAAMk7B,EAAU,SAAS;AAAA,IACrE,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,YAAYyE,GAAS;AACnB,UAAM3/B,IAAO,MAAM,KAAK,iBAAiB2/B,CAAO;AAEhD,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAMjG,GAAK;AAAA,MACX,QAAQ,KAAK,IAAIwB,EAAU,SAASl7B,GAAMk7B,EAAU,OAAO;AAAA,IACjE,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,iBAAiByE,GAAS;AACxB,UAAMp7C,IAAQ,KAAK,OAAO,OACpBnB,IAAO,KAAK,UAAW;AAC7B,gBAAK,YAAY83C,EAAU,KAAK,GACzB,KAAK,KAAK32C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAAt2C;AAAA,MACA,OAAO,KAAK,kBAAkBu8C,CAAO;AAAA,IAC3C,CAAK;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,gBAAgBA,GAAS;AACvB,UAAMG,IAAa,CAAE;AAErB,WAAO,KAAK,KAAK5E,EAAU,EAAE;AAC3B,MAAA4E,EAAW,KAAK,KAAK,eAAeH,CAAO,CAAC;AAG9C,WAAOG;AAAA,EACX;AAAA,EAEE,uBAAuB;AACrB,WAAO,KAAK,gBAAgB,EAAI;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,eAAeH,GAAS;AACtB,UAAMp7C,IAAQ,KAAK,OAAO;AAC1B,gBAAK,YAAY22C,EAAU,EAAE,GACtB,KAAK,KAAK32C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAM,KAAK,UAAW;AAAA,MACtB,WAAW,KAAK,eAAeiG,CAAO;AAAA,IAC5C,CAAK;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,qBAAqB;AACnB,UAAMp7C,IAAQ,KAAK,OAAO;AAC1B,QAAIgT;AAEJ,QAAI,KAAK,oBAAoB2jC,EAAU,SAAS,GAAG;AACjD,YAAM6E,IAAY,KAAK,mBAAoB;AAC3C,WAAK,YAAY7E,EAAU,SAAS,GACpC3jC,IAAO,KAAK,KAAKhT,GAAO;AAAA,QACtB,MAAMm1C,GAAK;AAAA,QACX,MAAMqG;AAAA,MACd,CAAO;AAAA,IACP;AACM,MAAAxoC,IAAO,KAAK,eAAgB;AAG9B,WAAI,KAAK,oBAAoB2jC,EAAU,IAAI,IAClC,KAAK,KAAK32C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAAniC;AAAA,IACR,CAAO,IAGIA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKE,iBAAiB;AACf,WAAO,KAAK,KAAK,KAAK,OAAO,OAAO;AAAA,MAClC,MAAMmiC,GAAK;AAAA,MACX,MAAM,KAAK,UAAW;AAAA,IAC5B,CAAK;AAAA,EACF;AAAA;AAAA,EAED,kBAAkB;AAChB,WAAO,KAAK,KAAKwB,EAAU,MAAM,KAAK,KAAK,KAAKA,EAAU,YAAY;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA,EAKE,mBAAmB;AACjB,QAAI,KAAK;AACP,aAAO,KAAK,mBAAoB;AAAA,EAEtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,wBAAwB;AACtB,UAAM32C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB;AAC3C,SAAK,cAAc,QAAQ;AAC3B,UAAMiH,IAAa,KAAK,qBAAsB,GACxCE,IAAiB,KAAK;AAAA,MAC1B9E,EAAU;AAAA,MACV,KAAK;AAAA,MACLA,EAAU;AAAA,IACX;AACD,WAAO,KAAK,KAAK32C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,YAAAiH;AAAA,MACA,gBAAAE;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,+BAA+B;AAC7B,UAAMz7C,IAAQ,KAAK,OAAO,OACpBg7C,IAAY,KAAK,mBAAoB;AAC3C,SAAK,YAAYrE,EAAU,KAAK;AAChC,UAAM3jC,IAAO,KAAK,eAAgB;AAClC,WAAO,KAAK,KAAKhT,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,WAAA6F;AAAA,MACA,MAAAhoC;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,4BAA4B;AAC1B,UAAMhT,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB;AAC3C,SAAK,cAAc,QAAQ;AAC3B,UAAMz1C,IAAO,KAAK,UAAW,GACvB08C,IAAa,KAAK,qBAAsB;AAC9C,WAAO,KAAK,KAAKv7C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,YAAA08C;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,4BAA4B;AAC1B,UAAMv7C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB;AAC3C,SAAK,cAAc,MAAM;AACzB,UAAMz1C,IAAO,KAAK,UAAW,GACvB68C,IAAa,KAAK,0BAA2B,GAC7CH,IAAa,KAAK,qBAAsB,GACxCI,IAAS,KAAK,sBAAuB;AAC3C,WAAO,KAAK,KAAK37C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,YAAA68C;AAAA,MACA,YAAAH;AAAA,MACA,QAAAI;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,4BAA4B;AAC1B,WAAO,KAAK,sBAAsB,YAAY,IAC1C,KAAK,cAAchF,EAAU,KAAK,KAAK,cAAc,IACrD,CAAE;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,wBAAwB;AACtB,WAAO,KAAK;AAAA,MACVA,EAAU;AAAA,MACV,KAAK;AAAA,MACLA,EAAU;AAAA,IACX;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,uBAAuB;AACrB,UAAM32C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB,GACrCz1C,IAAO,KAAK,UAAW,GACvBtgB,IAAO,KAAK,kBAAmB;AACrC,SAAK,YAAYo4D,EAAU,KAAK;AAChC,UAAM3jC,IAAO,KAAK,mBAAoB,GAChCuoC,IAAa,KAAK,qBAAsB;AAC9C,WAAO,KAAK,KAAKv7C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,WAAWtgB;AAAA,MACX,MAAAy0B;AAAA,MACA,YAAAuoC;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,oBAAoB;AAClB,WAAO,KAAK;AAAA,MACV5E,EAAU;AAAA,MACV,KAAK;AAAA,MACLA,EAAU;AAAA,IACX;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,qBAAqB;AACnB,UAAM32C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB,GACrCz1C,IAAO,KAAK,UAAW;AAC7B,SAAK,YAAY83C,EAAU,KAAK;AAChC,UAAM3jC,IAAO,KAAK,mBAAoB;AACtC,QAAI4oC;AAEJ,IAAI,KAAK,oBAAoBjF,EAAU,MAAM,MAC3CiF,IAAe,KAAK,uBAAwB;AAG9C,UAAML,IAAa,KAAK,qBAAsB;AAC9C,WAAO,KAAK,KAAKv7C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,MAAAmU;AAAA,MACA,cAAA4oC;AAAA,MACA,YAAAL;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,+BAA+B;AAC7B,UAAMv7C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB;AAC3C,SAAK,cAAc,WAAW;AAC9B,UAAMz1C,IAAO,KAAK,UAAW,GACvB68C,IAAa,KAAK,0BAA2B,GAC7CH,IAAa,KAAK,qBAAsB,GACxCI,IAAS,KAAK,sBAAuB;AAC3C,WAAO,KAAK,KAAK37C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,YAAA68C;AAAA,MACA,YAAAH;AAAA,MACA,QAAAI;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,2BAA2B;AACzB,UAAM37C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB;AAC3C,SAAK,cAAc,OAAO;AAC1B,UAAMz1C,IAAO,KAAK,UAAW,GACvB08C,IAAa,KAAK,qBAAsB,GACxClY,IAAQ,KAAK,sBAAuB;AAC1C,WAAO,KAAK,KAAKrjC,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,YAAA08C;AAAA,MACA,OAAAlY;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,wBAAwB;AACtB,WAAO,KAAK,oBAAoBsT,EAAU,MAAM,IAC5C,KAAK,cAAcA,EAAU,MAAM,KAAK,cAAc,IACtD,CAAE;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,0BAA0B;AACxB,UAAM32C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB;AAC3C,SAAK,cAAc,MAAM;AACzB,UAAMz1C,IAAO,KAAK,UAAW,GACvB08C,IAAa,KAAK,qBAAsB,GACxCnZ,IAAS,KAAK,0BAA2B;AAC/C,WAAO,KAAK,KAAKpiC,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,YAAA08C;AAAA,MACA,QAAAnZ;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,4BAA4B;AAC1B,WAAO,KAAK;AAAA,MACVuU,EAAU;AAAA,MACV,KAAK;AAAA,MACLA,EAAU;AAAA,IACX;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,2BAA2B;AACzB,UAAM32C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB,GACrCz1C,IAAO,KAAK,mBAAoB,GAChC08C,IAAa,KAAK,qBAAsB;AAC9C,WAAO,KAAK,KAAKv7C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,YAAA08C;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,qBAAqB;AACnB,QACE,KAAK,OAAO,MAAM,UAAU,UAC5B,KAAK,OAAO,MAAM,UAAU,WAC5B,KAAK,OAAO,MAAM,UAAU;AAE5B,YAAMlH;AAAA,QACJ,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO,MAAM;AAAA,QAClB,GAAGwH;AAAA,UACD,KAAK,OAAO;AAAA,QACb,CAAA;AAAA,MACF;AAGH,WAAO,KAAK,UAAW;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,iCAAiC;AAC/B,UAAM77C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB;AAC3C,SAAK,cAAc,OAAO;AAC1B,UAAMz1C,IAAO,KAAK,UAAW,GACvB08C,IAAa,KAAK,qBAAsB,GACxCI,IAAS,KAAK,2BAA4B;AAChD,WAAO,KAAK,KAAK37C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,YAAA08C;AAAA,MACA,QAAAI;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,6BAA6B;AAC3B,WAAO,KAAK;AAAA,MACVhF,EAAU;AAAA,MACV,KAAK;AAAA,MACLA,EAAU;AAAA,IACX;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeE,2BAA2B;AACzB,UAAMoE,IAAe,KAAK,OAAO,UAAW;AAE5C,QAAIA,EAAa,SAASpE,EAAU;AAClC,cAAQoE,EAAa,OAAK;AAAA,QACxB,KAAK;AACH,iBAAO,KAAK,qBAAsB;AAAA,QAEpC,KAAK;AACH,iBAAO,KAAK,yBAA0B;AAAA,QAExC,KAAK;AACH,iBAAO,KAAK,yBAA0B;AAAA,QAExC,KAAK;AACH,iBAAO,KAAK,4BAA6B;AAAA,QAE3C,KAAK;AACH,iBAAO,KAAK,wBAAyB;AAAA,QAEvC,KAAK;AACH,iBAAO,KAAK,uBAAwB;AAAA,QAEtC,KAAK;AACH,iBAAO,KAAK,8BAA+B;AAAA,MACrD;AAGI,UAAM,KAAK,WAAWA,CAAY;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,uBAAuB;AACrB,UAAM/6C,IAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ,GAC3B,KAAK,cAAc,QAAQ;AAC3B,UAAMu7C,IAAa,KAAK,qBAAsB,GACxCE,IAAiB,KAAK;AAAA,MAC1B9E,EAAU;AAAA,MACV,KAAK;AAAA,MACLA,EAAU;AAAA,IACX;AAED,QAAI4E,EAAW,WAAW,KAAKE,EAAe,WAAW;AACvD,YAAM,KAAK,WAAY;AAGzB,WAAO,KAAK,KAAKz7C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,YAAAoG;AAAA,MACA,gBAAAE;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,2BAA2B;AACzB,UAAMz7C,IAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ,GAC3B,KAAK,cAAc,QAAQ;AAC3B,UAAMnB,IAAO,KAAK,UAAW,GACvB08C,IAAa,KAAK,qBAAsB;AAE9C,QAAIA,EAAW,WAAW;AACxB,YAAM,KAAK,WAAY;AAGzB,WAAO,KAAK,KAAKv7C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAAt2C;AAAA,MACA,YAAA08C;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,2BAA2B;AACzB,UAAMv7C,IAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ,GAC3B,KAAK,cAAc,MAAM;AACzB,UAAMnB,IAAO,KAAK,UAAW,GACvB68C,IAAa,KAAK,0BAA2B,GAC7CH,IAAa,KAAK,qBAAsB,GACxCI,IAAS,KAAK,sBAAuB;AAE3C,QACED,EAAW,WAAW,KACtBH,EAAW,WAAW,KACtBI,EAAO,WAAW;AAElB,YAAM,KAAK,WAAY;AAGzB,WAAO,KAAK,KAAK37C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAAt2C;AAAA,MACA,YAAA68C;AAAA,MACA,YAAAH;AAAA,MACA,QAAAI;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,8BAA8B;AAC5B,UAAM37C,IAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ,GAC3B,KAAK,cAAc,WAAW;AAC9B,UAAMnB,IAAO,KAAK,UAAW,GACvB68C,IAAa,KAAK,0BAA2B,GAC7CH,IAAa,KAAK,qBAAsB,GACxCI,IAAS,KAAK,sBAAuB;AAE3C,QACED,EAAW,WAAW,KACtBH,EAAW,WAAW,KACtBI,EAAO,WAAW;AAElB,YAAM,KAAK,WAAY;AAGzB,WAAO,KAAK,KAAK37C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAAt2C;AAAA,MACA,YAAA68C;AAAA,MACA,YAAAH;AAAA,MACA,QAAAI;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,0BAA0B;AACxB,UAAM37C,IAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ,GAC3B,KAAK,cAAc,OAAO;AAC1B,UAAMnB,IAAO,KAAK,UAAW,GACvB08C,IAAa,KAAK,qBAAsB,GACxClY,IAAQ,KAAK,sBAAuB;AAE1C,QAAIkY,EAAW,WAAW,KAAKlY,EAAM,WAAW;AAC9C,YAAM,KAAK,WAAY;AAGzB,WAAO,KAAK,KAAKrjC,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAAt2C;AAAA,MACA,YAAA08C;AAAA,MACA,OAAAlY;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,yBAAyB;AACvB,UAAMrjC,IAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ,GAC3B,KAAK,cAAc,MAAM;AACzB,UAAMnB,IAAO,KAAK,UAAW,GACvB08C,IAAa,KAAK,qBAAsB,GACxCnZ,IAAS,KAAK,0BAA2B;AAE/C,QAAImZ,EAAW,WAAW,KAAKnZ,EAAO,WAAW;AAC/C,YAAM,KAAK,WAAY;AAGzB,WAAO,KAAK,KAAKpiC,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAAt2C;AAAA,MACA,YAAA08C;AAAA,MACA,QAAAnZ;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,gCAAgC;AAC9B,UAAMpiC,IAAQ,KAAK,OAAO;AAC1B,SAAK,cAAc,QAAQ,GAC3B,KAAK,cAAc,OAAO;AAC1B,UAAMnB,IAAO,KAAK,UAAW,GACvB08C,IAAa,KAAK,qBAAsB,GACxCI,IAAS,KAAK,2BAA4B;AAEhD,QAAIJ,EAAW,WAAW,KAAKI,EAAO,WAAW;AAC/C,YAAM,KAAK,WAAY;AAGzB,WAAO,KAAK,KAAK37C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,MAAAt2C;AAAA,MACA,YAAA08C;AAAA,MACA,QAAAI;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,2BAA2B;AACzB,UAAM37C,IAAQ,KAAK,OAAO,OACpBs0C,IAAc,KAAK,iBAAkB;AAC3C,SAAK,cAAc,WAAW,GAC9B,KAAK,YAAYqC,EAAU,EAAE;AAC7B,UAAM93C,IAAO,KAAK,UAAW,GACvBtgB,IAAO,KAAK,kBAAmB,GAC/Bu9D,IAAa,KAAK,sBAAsB,YAAY;AAC1D,SAAK,cAAc,IAAI;AACvB,UAAMC,IAAY,KAAK,wBAAyB;AAChD,WAAO,KAAK,KAAK/7C,GAAO;AAAA,MACtB,MAAMm1C,GAAK;AAAA,MACX,aAAAb;AAAA,MACA,MAAAz1C;AAAA,MACA,WAAWtgB;AAAA,MACX,YAAAu9D;AAAA,MACA,WAAAC;AAAA,IACN,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,0BAA0B;AACxB,WAAO,KAAK,cAAcpF,EAAU,MAAM,KAAK,sBAAsB;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6BE,yBAAyB;AACvB,UAAM32C,IAAQ,KAAK,OAAO,OACpBnB,IAAO,KAAK,UAAW;AAE7B,QAAI,OAAO,UAAU,eAAe,KAAKq2C,IAAmBr2C,EAAK,KAAK;AACpE,aAAOA;AAGT,UAAM,KAAK,WAAWmB,CAAK;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,KAAKw0C,GAAYxb,GAAM;AACrB,WAAI,KAAK,SAAS,eAAe,OAC/BA,EAAK,MAAM,IAAIub;AAAA,MACbC;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,IACb,IAGIxb;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKE,KAAK2b,GAAM;AACT,WAAO,KAAK,OAAO,MAAM,SAASA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,YAAYA,GAAM;AAChB,UAAMmC,IAAQ,KAAK,OAAO;AAE1B,QAAIA,EAAM,SAASnC;AACjB,kBAAK,aAAc,GACZmC;AAGT,UAAMzC;AAAA,MACJ,KAAK,OAAO;AAAA,MACZyC,EAAM;AAAA,MACN,YAAYkF,GAAiBrH,CAAI,CAAC,WAAWkH,GAAa/E,CAAK,CAAC;AAAA,IACjE;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,oBAAoBnC,GAAM;AAGxB,WAFc,KAAK,OAAO,MAEhB,SAASA,KACjB,KAAK,aAAc,GACZ,MAGF;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,cAActzD,GAAO;AACnB,UAAMy1D,IAAQ,KAAK,OAAO;AAE1B,QAAIA,EAAM,SAASH,EAAU,QAAQG,EAAM,UAAUz1D;AACnD,WAAK,aAAc;AAAA;AAEnB,YAAMgzD;AAAA,QACJ,KAAK,OAAO;AAAA,QACZyC,EAAM;AAAA,QACN,aAAaz1D,CAAK,YAAYw6D,GAAa/E,CAAK,CAAC;AAAA,MAClD;AAAA,EAEP;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,sBAAsBz1D,GAAO;AAC3B,UAAMy1D,IAAQ,KAAK,OAAO;AAE1B,WAAIA,EAAM,SAASH,EAAU,QAAQG,EAAM,UAAUz1D,KACnD,KAAK,aAAc,GACZ,MAGF;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKE,WAAW46D,GAAS;AAClB,UAAMnF,IACJmF,KAAmD,KAAK,OAAO;AACjE,WAAO5H;AAAA,MACL,KAAK,OAAO;AAAA,MACZyC,EAAM;AAAA,MACN,cAAc+E,GAAa/E,CAAK,CAAC;AAAA,IAClC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,IAAIoF,GAAUC,GAASC,GAAW;AAChC,SAAK,YAAYF,CAAQ;AACzB,UAAMvI,IAAQ,CAAE;AAEhB,WAAO,CAAC,KAAK,oBAAoByI,CAAS;AACxC,MAAAzI,EAAM,KAAKwI,EAAQ,KAAK,IAAI,CAAC;AAG/B,WAAOxI;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,aAAauI,GAAUC,GAASC,GAAW;AACzC,QAAI,KAAK,oBAAoBF,CAAQ,GAAG;AACtC,YAAMvI,IAAQ,CAAE;AAEhB;AACE,QAAAA,EAAM,KAAKwI,EAAQ,KAAK,IAAI,CAAC;AAAA,aACtB,CAAC,KAAK,oBAAoBC,CAAS;AAE5C,aAAOzI;AAAA,IACb;AAEI,WAAO,CAAE;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,KAAKuI,GAAUC,GAASC,GAAW;AACjC,SAAK,YAAYF,CAAQ;AACzB,UAAMvI,IAAQ,CAAE;AAEhB;AACE,MAAAA,EAAM,KAAKwI,EAAQ,KAAK,IAAI,CAAC;AAAA,WACtB,CAAC,KAAK,oBAAoBC,CAAS;AAE5C,WAAOzI;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,cAAc0I,GAAeF,GAAS;AACpC,SAAK,oBAAoBE,CAAa;AACtC,UAAM1I,IAAQ,CAAE;AAEhB;AACE,MAAAA,EAAM,KAAKwI,EAAQ,KAAK,IAAI,CAAC;AAAA,WACtB,KAAK,oBAAoBE,CAAa;AAE/C,WAAO1I;AAAA,EACX;AAAA,EAEE,eAAe;AACb,UAAM,EAAE,WAAA2I,MAAc,KAAK,UAErBxF,IAAQ,KAAK,OAAO,QAAS;AAEnC,QAAIA,EAAM,SAASH,EAAU,QAC3B,EAAE,KAAK,eAEH2F,MAAc,UAAa,KAAK,gBAAgBA;AAClD,YAAMjI;AAAA,QACJ,KAAK,OAAO;AAAA,QACZyC,EAAM;AAAA,QACN,+BAA+BwF,CAAS;AAAA,MACzC;AAAA,EAGT;AACA;AAKA,SAAST,GAAa/E,GAAO;AAC3B,QAAMz1D,IAAQy1D,EAAM;AACpB,SAAOkF,GAAiBlF,EAAM,IAAI,KAAKz1D,KAAS,OAAO,KAAKA,CAAK,MAAM;AACzE;AAKA,SAAS26D,GAAiBrH,GAAM;AAC9B,SAAOsC,GAAsBtC,CAAI,IAAI,IAAIA,CAAI,MAAMA;AACrD;ACx/CO,SAAS4H,GAAY37C,GAAK;AAC/B,SAAO,IAAIA,EAAI,QAAQ47C,IAAeC,EAAe,CAAC;AACxD;AAEA,MAAMD,KAAgB;AAEtB,SAASC,GAAgB77C,GAAK;AAC5B,SAAO87C,GAAgB97C,EAAI,WAAW,CAAC,CAAC;AAC1C;AAEA,MAAM87C,KAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;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AAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;A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","x_google_ignoreList":[0,6,8,10,11,12,13,14,15,16,17,18,19,20,21,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,65,66,67,68,69,70,71]}